Installation¶
Install the CLI (recommended)¶
# Recommended: the CLI and HTTP server, with the web portal it hosts
uv tool install "swarmkit-runtime[ui]"
# CLI only — `swarmkit run`, `trace`, `author`, … and a headless `swarmkit serve` (API, no portal)
uv tool install swarmkit-runtime
# Postgres instead of SQLite for the stores (design/details/storage-service.md)
uv tool install "swarmkit-runtime[ui,postgres]"
# The fleet control plane — a separate package, its own CLI (Level 22)
uv tool install swarmkit-control-plane
This installs swarmkit as a globally available CLI tool in an isolated environment — no virtual env needed, no system Python pollution. uv is the recommended way to install and maintain SwarmKit. The HTTP server, JWT auth and cron triggers are part of the runtime — no extra. [ui] adds the web portal swarmkit serve hosts at / — without it serve runs headless, API only, and says so at startup; [postgres] adds the Postgres checkpoint backend. ([serve] still installs, and installs nothing: it is a deprecated alias from when the server's dependencies were optional.) To add an extra to an existing install, re-run the command — uv tool install upgrades in place.
From source¶
git clone https://github.com/delivstat/swarmkit.git && cd swarmkit
uv sync --all-packages # Python deps
pnpm install # TypeScript deps (optional, for UI + schema validation)
Docker¶
docker run -v ./workspace:/workspace \
-e OPENROUTER_API_KEY=$OPENROUTER_API_KEY \
-p 8000:8000 \
ghcr.io/delivstat/swarmkit:latest
Verify¶
Model providers¶
Providers are declared as YAML (kind: ModelProvider) and register when they are ready — their key is in the environment, or they need no key:
| Provider | Env var |
|---|---|
| Anthropic | ANTHROPIC_API_KEY |
GOOGLE_API_KEY |
|
| OpenAI | OPENAI_API_KEY |
| OpenRouter | OPENROUTER_API_KEY |
| Groq | GROQ_API_KEY |
| Together | TOGETHER_API_KEY |
| Ollama | none — OLLAMA_BASE_URL to point elsewhere (default http://localhost:11434) |
| rkllama, llama-server, openvino-model-server, mlx-lm, lemonade | none — local runtimes, each with a *_URL/*_HOST env var |
swarmkit providers list shows every provider and what it is waiting for. Any OpenAI- or Ollama-compatible endpoint is a YAML file in <workspace>/providers/ — see the model provider reference.
Override per-run: SWARMKIT_PROVIDER=openrouter SWARMKIT_MODEL=meta-llama/llama-3.3-70b-instruct swarmkit run ...