Skip to main content
Docker Compose runs the full fracta stack in containers: control plane, gateway, strategy runner, Postgres, FalkorDB. Your machine runs only a thin client. MCP backend servers (Elastic, Vendor, your own) are added by extending the scaffolded compose file.

Prerequisites

  • fracta CLI installed and on PATH (fracta --help works). See installation.
  • Docker with Compose V2 — docker compose version.
  • A git repository to scaffold into. fracta init runs in your own project root.
You do not need runtime CLIs (claude, codex, opencode) installed on your host — they’re bundled in the fracta image.

1. Initialize fracta in your project

From the root of any git repository:
You’ll see:
This drops the docker-compose scaffold:
fracta.yaml and everything under deployment/ are yours to edit.

2. Set up auth helpers

The scaffolded deployment/auth-helpers/fetch-token-example is a deliberately non-functional template that fails loudly until you edit it. Open the file — its header comments include reference snippets for AWS Bedrock STS, Vertex AI via gcloud, mounted Anthropic API keys, and custom HTTP token proxies. Pick the one matching your provider. For example, for AWS Bedrock STS:
Update deployment/configs/controlplane.yaml to reference your helper. The default scaffold ships an example profile pointing at fetch-token-example; replace it with a bedrock profile (or whatever name fits) pointing at your script. See the credential pipeline guide for the full profile schema. The compose file bind-mounts ./deployment/auth-helpers/ into every fracta service container at /opt/fracta/auth-helpers/, so resolver command: references find your helpers on PATH inside the container.

3. Start the stack

Verify all services are healthy:
You should see five services running: falkordb, postgres, controlplane, gateway, strategy-runner.

Secret injection

Compose interpolates ${VAR} from your environment, so any secret manager that sets env vars works. For 1Password:
For Doppler:
Use this for any host-side secrets the compose stack needs (database passwords, API keys for MCP backends you add, etc.).

4. Wire fracta into your AI CLI

The scaffolded fracta.yaml points at http://localhost:19090 — the host-mapped port for the compose controlplane container. Your AI CLI runs fracta serve from your project root, which reads ./fracta.yaml. Claude Code (.mcp.json at the project root):
Codex (.codex/config.toml):
If you need to inject secrets into the host-side fracta serve, wrap it the same way you wrap docker compose up.

5. Connect and verify

Restart Claude Code or run /mcp to reconnect MCP servers. The thin client connects to localhost:19090. You should see fracta tools: fracta_spawn, fracta_list, graph_query, etc. If you’ve added MCP backend services to deployment/docker-compose.yml, you’ll also see their tools.

6. Spawn your first agent

From the CLI:
From within Claude Code (via MCP):
Check status and output:
Or via MCP: fracta_list() and fracta_peek(name="hello-compose"). Note: Docker Compose uses DirectoryWorkspace, not git worktrees. Agents work in directories under /workspace/agents/<task>. Git merge semantics are not available — for git-based workflows, use local process mode.

7. View logs


8. Stop and clean up

To also remove persistent volumes (Postgres data, FalkorDB data):

Adding MCP backend services

The scaffolded deployment/docker-compose.yml ships only the fracta core. Add MCP backend services by editing the compose file. For example, to add Elasticsearch MCP:
Then reference it from deployment/configs/gateway.yaml:
Restart the gateway container to pick up the change:

What differs from local process

The client attachment is identical: both use RemoteControlPlaneClient over HTTP.

Strategy runner gateway plumbing

Strategies that call MCP tools inline (ctx.mcp.call_tool(...)) require gateway access from the runner. Since v0.5.2 the Compose scaffold ships this wired by default:
  • deployment/configs/gateway.yaml declares strategy.gateway_access: true — so strategy_run invocations include the gateway URL and the calling agent’s task in the per-request payload.
  • The strategy-runner service in deployment/docker-compose.yml boots with --gateway-url http://gateway:8080 --agent-task default, providing a fallback gateway connection for strategies that need one before any per-request URL arrives.
If you author a strategy that calls ctx.mcp.call_tool(), declare it in contract.yaml:

Next steps