Declarative multi-agent AI workflows in HCL — not Python.
Documentation · Quick Start · Compare · FAQ
Squadron is a declarative agent framework for building and running multi-agent AI workflows. You describe agents, tools, models, and the task graph 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. MIT-licensed. Supports Anthropic, OpenAI, Google Gemini, and Ollama, and speaks Model Context Protocol in both directions.
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 whole workflow. Diff it in a PR. Review it like infrastructure code.
curl -fsSL https://raw.githubusercontent.com/mlund01/squadron/main/install.sh | bashOr grab a binary from GitHub Releases. Full options in the installation docs.
# Scaffold a starter project
squadron quickstart
# Set an API key (stored in an encrypted vault)
squadron vars set anthropic_api_key sk-ant-...
# Launch the command center
squadron engage -wFull walkthrough: Quick Start.
Workflows as config, not code. Your entire mission graph — agents, tools, dependencies, branching, schedules, budgets — lives in one HCL file you can diff in a pull request. No imperative orchestration buried across Python modules.
Resilient by default. Squadron persists every commander session, agent session, route decision, and task output to SQLite (or Postgres) as the mission runs. squadron mission --resume <id> picks up from the last completed step, including mid-flight tool calls.
Plugins in two languages. Squadron's plugin system runs Go or Python plugins as gRPC subprocesses via hashicorp/go-plugin. Auto-built from local source with content-hash caching. Process-isolated, stateful across tasks (a Playwright plugin opens a browser once and reuses it across every task in every mission), and distributable via GitHub releases.
MCP both directions. Squadron consumes any MCP server (npm packages, GitHub release binaries, HTTP, or local stdio) — auto-install handled. Squadron itself can also run as an MCP server so Claude Desktop, Claude Code, and Cursor can browse your missions and trigger runs.
Mix model providers per task. Use Claude Sonnet for orchestration, GPT-4 for the hard subtask, a local Llama for the privacy-sensitive step, Gemini for vision. Declare each model block once and reference per agent.
Scheduled, webhook-triggered, budgeted. Each mission can declare a schedule block (cron / daily / interval with timezone + weekday filters), a trigger block (webhook), and a budget block that halts the run when token or dollar caps are reached.
Web command center. squadron engage -w launches a local web UI for live mission graph visualization, run history, log streaming, and webhook routing. Or connect multiple Squadron instances to a remote command center.
| 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 |
Honest tradeoffs on each comparison page.
- Model providers out of the box: Anthropic, OpenAI, Google Gemini, Ollama. Mix per agent or per task.
- Missions — task DAGs with
depends_on, conditionalrouter, unconditionalsend_to, parallel/sequential iteration over datasets, and cross-mission routing. - Plugins — Go and Python, gRPC subprocess, auto-build, content-hash caching, distributable via GitHub releases.
- MCP tools — declare any MCP server (npm, GitHub, HTTP, or local) and Squadron auto-installs and proxies tools to agents. OAuth login flow for hosted servers (
squadron mcp login). - MCP host — run Squadron as an MCP server for Claude Desktop, Claude Code, Cursor, and other MCP clients.
- Schedules & triggers — cron-based or HTTP-triggered missions, with per-mission concurrency limits.
- Budgets — token + dollar caps per mission or per task.
- Memory & Scratchpad — sandboxed filesystem locations agents can read/write. Persistent memory (shared with
memory "name"or per-mission withmemory { }) plus per-runscratchpad = trueopt-in. Squadron owns the paths; scratchpads auto-clean after 7 days. - Gateways — managed subprocesses that bridge Squadron to Slack, Discord, Teams, or any custom system via the Gateway SDK.
- Encrypted vault — secrets stored at rest with AES-256-GCM + Argon2id; passphrase in the OS keychain.
- Single binary, no runtime deps. Docker images on every release.
docker run -v ./config:/config -v squadron-data:/data/squadron -p 8080:8080 \
ghcr.io/mlund01/squadron engageAlpine (default) and Debian images on ghcr.io/mlund01/squadron. Details: Docker docs.
- What problem does Squadron solve? — full overview on the docs home
- The Harness — the commander/agent runtime explained
- Declarative Agent Framework — the imperative-vs-declarative case
- No-Code Multi-Agent Walkthrough — daily-brief pipeline end-to-end
- Distributing Plugins — publish your plugin as a GitHub release
- Configuration reference — every block, every field
- CLI reference — every command, every flag
- FAQ — pricing, license, providers, MCP, on-prem, plugins
Plugins extend Squadron with custom tools. The squadron-sdk provides Go and Python interfaces — auto-built on every config load with content-hash caching. See Distributing Plugins for the publishing flow.
- File issues at github.com/mlund01/squadron/issues
- Read the docs at docs.squadron.sh