Squadron
Squadron is an agents-as-config tool that lets you build, run, and version multi-agent AI workflows safely and reproducibly. This includes low-level components like individual agents, tools, and models, as well as high-level components like multi-step missions, conditional routing, and scheduled pipelines.
mission "research" {
commander { model = models.anthropic.claude_sonnet_4 }
agents = [agents.researcher, agents.analyst]
task "gather" {
objective = "Find the top 5 papers on ${inputs.topic}"
agents = [agents.researcher]
}
task "analyze" {
depends_on = [tasks.gather]
objective = "Read each paper and extract the key findings"
agents = [agents.analyst]
router {
route { target = tasks.deep_dive; condition = "Findings warrant deeper investigation" }
route { target = tasks.summarize; condition = "Findings are routine" }
}
}
task "deep_dive" { objective = "Investigate the most promising lead in detail" }
task "summarize" { objective = "Write a one-page summary" }
}squadron mission research -c ./config --topic "post-quantum cryptography"That’s the entire workflow. No Python. No glue code. No state machines. Just config.
Why this matters
Every other agent framework asks you to write code: orchestration logic, retry loops, branching, state serialization. You end up with 500 lines of Python wrapping 50 lines of actual prompt — and six months later nobody can read it.
Squadron is declarative from top to bottom. Your entire workflow — agents, tools, how they collaborate, the data flowing between them, the conditions that fire branches, what happens when things crash — is described up front in one file you can diff in a pull request.
- Readable. A non-engineer can review a mission file. Workflow changes show up in code review like any other config change.
- Composable. Define agents and tools once, reuse them across missions. Mix Anthropic, OpenAI, Gemini, and Ollama in the same run.
- Resilient. State is persisted to SQLite as missions run. Crashes resume from where they failed.
- Branchable. Conditional routing, unconditional fan-out, parallel iteration over datasets — all first-class.
- Typed data flow. Tasks declare structured output schemas. Downstream tasks query that data with filters and aggregations instead of replaying conversation history.
How it works
Two tiers of LLMs, doing different jobs:
- Commanders orchestrate. They break tasks into subtasks, delegate to agents, interpret results, and decide which branch to take next. They reason about what needs to happen.
- Agents execute. They pick up objectives and use their tools until the job is done. They reason about how to do it.
- Missions wire it together: a graph of tasks, structured outputs flowing between them, and conditional branches the commander chooses at runtime.
Use a fast model for routing, a capable one for the hard stuff. Each role can use a different provider in the same mission.
What’s in the box
- Model providers — Anthropic, OpenAI, Google Gemini, and Ollama for local models, all out of the box; mix and match per agent or even per task
- Web command center — visualize your mission graph, watch it run live, browse past runs
- Schedules & webhooks — run missions on a cron, or trigger them from an incoming HTTP request
- Plugins — the primary way to extend agents: fast, typed, native Go plugins for browser automation, shell, APIs, or anything you want to build
- MCP tools — also supported, for when you want to pull in something from the MCP ecosystem; drop in a two-line block and Squadron auto-installs the server
- MCP host — plug Squadron itself into Claude Desktop, Claude Code, or Cursor so they can see your missions, kick off runs, and browse your config
- Single binary — one command to install, no runtime dependencies, Docker images on every release
Get started
- Install — one command, single binary
- Quick start — first mission in 5 minutes
- Missions — the full workflow model
- Configuration — every block, every field