marbots-sdk 0.3.0

Typed Rust SDK for Marbots, the multi-agent collaboration platform (Boss Man orchestration, per-bot models, skills, MCP, A2A). By Gravicode Studios.
Documentation

marbots-sdk (Rust)

Typed, synchronous Rust client for Marbots, the multi-agent collaboration platform. Kernel packs, permission profiles, task states, event types and model settings are enums/helpers (KernelPack::Files, PermissionProfile::DeveloperSafe, TaskState::Completed, EventType::ToolCallStarted, ModelRef::of), so typos are compile errors.

[dependencies]

marbots-sdk = "0.1"

use marbots_sdk::{BotSpec, Client, EventType, KernelPack, ModelRef, PermissionProfile};

let mb = Client::new("http://localhost:5170");             // .with_api_key("...") if required
let sari = mb.bots().create(
    BotSpec::new("Sari").role("UX designer")
        .kernel_functions([KernelPack::Files, KernelPack::Web])
        .permission_profile(PermissionProfile::WorkspaceWrite)
        .model(ModelRef::of("azure", "gpt-5.6-luna")),     // or ModelRef::DEFAULT
)?;
let thread = mb.threads().create(&sari.id, None)?;
let r = mb.threads().send(&thread.id, "Sketch a wireframe", true)?;
println!("{:?}: {}", r.task.model, r.text());

for e in mb.events().stream(Some(&thread.id))? {
    let e = e?;
    if e.event_type == EventType::ToolCallStarted { println!("tool: {:?}", e.message); }
    if e.is_task_finished() { break; }
}
Area API
Bots bots().list/get/create(BotSpec)/update/delete/hire/get_model/set_model/pause/resume/export/import_package
Models models().list() → ModelCatalog, models().set_default("provider/model")
Chat threads().create/send/send_with_timeout/messages/files/download/delete, chat(bot, text)
Work tasks(), approvals() (incl. set_skip_approvals), schedules().create(&ScheduleSpec::cron(..)), memory(), skills(), mcp()
Live events().stream(thread_id) → Iterator<Item = Result<AgentEvent>>

cargo test runs the conformance test against a real Marbots server (dotnet build Marbots.slnx first).

Built by Gravicode Studios, led by Kang Fadhil. MIT license.

Computers, placement and learning evaluation (0.2.0)

See docs/en/computers.md and the Skills guide.

// Computers (agent hosts): list, one-time enrollment token, SSH bootstrap (credentials used once)
for h in mb.agent_hosts().list()? {
    println!("{} {} {:?}", h.name, h.status, h.capabilities);
}
println!("{}", mb.agent_hosts().create_enrollment("design-pc", 60)?.enroll_command);

// A bot that runs on whichever computer fits, with its shell in Docker and parallel sub-agents
let nova = mb.bots().create(
    BotSpec::new("Nova")
        .host_ref(HostRef::AUTO)
        .container(ContainerProfile::new("python:3.12-slim"))
        .kernel_functions([KernelPack::Files, KernelPack::Shell, KernelPack::Subagents]),
)?;

// Learning evaluation
for e in mb.skills().evaluations()? {
    println!("{} {} {:?} {}", e.name, e.version, e.verdict, e.reason);
}