Squadron
Squadron is a declarative framework for building and running multi-agent AI workflows. You describe agents, tools, models, and the task graph entirely in HCL configuration — Squadron’s runtime handles orchestration, state, dependency resolution, conditional routing, persistence, and resume. No Python glue code, no LangChain-style call chains, no hand-rolled state machines.
It ships as a single Go binary, runs on macOS / Linux / Windows, and is MIT-licensed.
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]
}
}squadron mission research -c ./config --topic "post-quantum cryptography"That’s the whole workflow. Diff it in a PR. Review it like infrastructure code.
What problem does Squadron solve?
Every other agent framework asks you to write code: orchestration logic, retry loops, branching, state serialization, conversation history management. You end up with 500 lines of Python wrapping 50 lines of actual prompt — and six months later nobody can read it, nobody can resume it after a crash, and nobody can tell what changed between two runs.
Squadron flips that. The workflow is declared up front. The runtime is the engine. The only thing you write in any kind of language is the prompts themselves, inside objective/personality fields.
The result:
- Code-reviewable workflows. Workflow changes show up as a config diff, not buried in imperative orchestration logic.
- Resilient by default. State is persisted to SQLite (or Postgres) as missions run. Process crashes resume from the last completed step, including mid-flight LLM tool calls.
- Composable. Agents, tools, models, and tasks are reusable across missions. Mix Anthropic, OpenAI, Gemini, and Ollama in the same run.
- Typed data flow. Tasks declare structured output schemas. Downstream tasks query that data with filters and aggregations instead of replaying conversation history into the next prompt.
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 at runtime.
- Agents execute. They pick up an objective and use their tools (via native function calling) until the job is done.
- Missions wire it together: a graph of tasks, structured outputs flowing between them, and conditional branches the commander chooses on the fly.
Use a fast model for routing, a capable one for the hard stuff. Each role can use a different provider in the same mission. See The Harness for the full execution model.
What’s included
- Model providers out of the box: Anthropic, OpenAI, Google Gemini, Ollama. Mix per agent or per task.
- Plugins — fast, typed, native Go and Python plugins for browser automation, shell access, HTTP APIs, or anything custom. Run as subprocesses over gRPC; auto-built from local source with content-hash caching.
- MCP tools — declare any Model Context Protocol server (npm, GitHub release, HTTP, local binary). Squadron auto-installs and proxies tools to your agents.
- MCP host — Squadron itself runs as an MCP server, so Claude Desktop / Claude Code / Cursor can see your missions and kick off runs.
- Schedules & webhooks — cron-based or HTTP-triggered missions, with per-mission concurrency limits.
- Web command center — live mission graph visualization, run history, log streaming.
- Budgets — declarative token + dollar caps that halt missions before runaway spend.
When to use Squadron
Squadron is a strong fit if you want to:
- Define agent workflows the same way you define infrastructure (Terraform-style HCL).
- Have non-Python teammates author and review agent logic.
- Run scheduled or webhook-triggered agent pipelines with built-in retry, resume, and budget enforcement.
- Mix model providers across roles to control cost and latency.
- Plug Squadron into an existing MCP ecosystem without writing adapters.
Squadron is not the right tool if you need a conversational chat UX with multi-turn user input across many sessions (it can chat, but that’s not the core focus), or if you need a deeply custom runtime loop that doesn’t fit a task-graph model.
How does it compare to other frameworks?
| Tool | Style | Language | Best for |
|---|---|---|---|
| Squadron | Declarative | HCL config | Production agent pipelines, reviewable workflows, scheduled jobs |
| LangGraph | Imperative | Python | Custom runtime logic, deep LangChain integration |
| CrewAI | Imperative | Python | Quick Python prototypes, role-based crews |
| AutoGen | Conversational | Python | Multi-agent dialogue patterns, GroupChat |
| n8n | Visual | GUI / JSON | Broad SaaS integration, non-LLM-first workflows |
See the detailed comparison pages for honest tradeoffs.
Get started
New to Squadron?
- Quick start — first mission in five minutes
- Install — one command, single binary
Building with it?
- Missions — the workflow model
- Configuration — every block, every field
- No-Code walkthrough — full daily-brief pipeline in HCL
Evaluating it?
- Squadron vs LangGraph · vs CrewAI · vs AutoGen · vs n8n
- FAQ — pricing, license, providers, MCP, deployment
- Declarative Agent Framework — the imperative-vs-declarative case