v0.x · MIT licensed · Rust 1.77+

squad

Multi-AI-agent collaboration
in the terminal.

A lightweight Rust CLI that lets Claude, Gemini, Codex, and OpenCode coordinate through a shared SQLite file. No server. No daemon. Just one slash command.

$ brew install mco-org/tap/squad
View source ↗
squad — multi-agent collaboration via SQLite
squad — multiple terminal agents coordinating through a central SQLite database
// why squad

Coordinate intelligence,
not infrastructure.

Most multi-agent systems demand a message broker, a runtime, an orchestrator. squad is six characters in your shell and a file on disk.

/* core */01
No daemon. No server.

Every command is a one-shot read or write to a local SQLite file. Nothing runs in the background. Nothing to monitor.

/* protocol */02
One slash command.

Run /squad manager in any CLI. squad installs the slash command for every supported AI tool.

/* tasks */03
Real task assignment.

Create, ack, complete, requeue. Atomic ID auto-suffix means simultaneous joins never collide.

/* roles */04
Manager · worker · inspector.

Three built-in roles. Add your own with a markdown file in .squad/roles/.

/* speed */05
Fast and minimal.

Written in Rust. A single static binary. Sub-millisecond send and receive.

/* open */06
Inspectable, hackable, MIT.

Open .squad/messages.db in any SQLite client. That's the entire protocol.

// how it works

Three terminals.
One SQLite file.

Each agent runs in its own terminal. All inter-agent messages flow through .squad/messages.db. No network layer.

Terminal 1 (manager)          Terminal 2 (worker)          Terminal 3 (worker-2)
┌─────────────────────┐      ┌─────────────────────┐      ┌─────────────────────┐
│ /squad manager      │      │ /squad worker       │      │ /squad worker       │
│                     │      │ (auto-ID: worker)   │      │ (auto-ID: worker-2) │
│                     │      │                     │      │                     │
│ squad task create   │─────>│ squad receive worker│      │                     │
│   manager worker    │      │                     │      │                     │
│   "task-a"          │      │                     │      │                     │
│                     │      │                     │      │                     │
│ squad task create   │──────────────────────────────────>│ squad receive       │
│   manager worker-2  │      │                     │      │                     │
│   "task-b"          │      │                     │      │                     │
│                     │      │                     │      │                     │
│ squad receive       │<─────│ squad task complete │      │                     │
│   manager           │      │   worker <task-id>  │      │                     │
│                     │      │   "done A"          │      │                     │
│                     │      │                     │      │                     │
│                     │<──────────────────────────────────│ squad task complete │
│                     │      │                     │      │   worker-2 <task-id>│
│                     │      │                     │      │   "done B"          │
└─────────────────────┘      └─────────────────────┘      └─────────────────────┘
                                          │
                                          ▼
                              .squad/messages.db
// platforms

Works with every
major AI CLI.

One squad setup installs the slash command into all detected tools.

Claude Code
/squad
~/.claude/commands/squad.md
Gemini CLI
/squad
~/.gemini/commands/squad.toml
Codex CLI
$squad
~/.codex/skills/squad/SKILL.md
OpenCode
/squad
~/.config/opencode/commands/squad.md
// install

Up and running
in three commands.

01
Install the binary
Homebrew on macOS, prebuilt binaries for Linux and Windows, or build from source.
$brew install mco-org/tap/squad $cargo install --git https://github.com/mco-org/squad.git
02
Wire up your AI tools
squad setup auto-detects Claude, Gemini, Codex, and OpenCode. squad init initializes the workspace.
$squad setup $squad init
03
Launch agents in separate terminals
One slash command per role. Agents auto-suffix on conflict (worker, worker-2…).
/squad manager /squad worker /squad inspector
// reference

Every command
squad understands.

// workspace
squad init [--refresh-roles]Create .squad/, update .gitignore, append squad guidance to CLAUDE.md / AGENTS.md / GEMINI.md.
squad setup [platform]Install /squad slash command for all detected AI tools, or a specific one.
squad cleanClear all agent state from the workspace.
// agents
squad join <id> [--role <r>] [--client <c>]Join workspace as an agent. ID is auto-suffixed on conflict (worker → worker-2).
squad leave <id>Archive agent, preserving any unread work.
squad agents [--all] [--json]List online agents. --json exposes capability metadata.
// messaging
squad send <from> <to> <msg>Send a freeform note. Use @all to broadcast.
squad receive <id> [--wait] [--timeout N]Check inbox. --wait blocks until a message arrives.
squad pendingShow all unread messages across the workspace.
squad history [agent]Timestamped message history with optional filters.
// tasks
squad task create <from> <to> --title <t>Create a structured task assignment with optional body.
squad task ack <agent> <task-id>Claim a queued task.
squad task complete <agent> <id> --summaryMark a task done with a summary string.
squad task requeue <task-id> [--to <agent>]Put a task back into the queue, optionally reassigning.
squad task list [--agent] [--status]List tasks with optional filters.