Deployment¶
v1.1.0 ships Docker + Compose support for running the FCC stack locally or on a single server. Kubernetes manifests, a Helm chart, and image-registry publishing land in v1.1.1 — see the v1.1.x roadmap.
Quick decision matrix¶
| You want… | Use |
|---|---|
| Try FCC on your laptop without installing Python deps | Docker quickstart |
| Run the full stack (backend + frontend + Streamlit + Jupyter) locally | Local stack walkthrough |
| Production K8s with Helm and pullable images | Wait for v1.1.1 (≈2-3 weeks) |
| Embed FCC as a library in your own Python project | pip install fcc-agent-team-ext (no Docker needed) |
What ships in v1.1.0¶
| Artifact | Purpose | Path |
|---|---|---|
Dockerfile.backend |
WebSocket bridge + AI providers (PID 1) | docker/Dockerfile.backend |
Dockerfile.frontend |
React SPA + nginx reverse proxy | docker/Dockerfile.frontend |
Dockerfile.streamlit |
Generic Streamlit-app runner (28 apps) | docker/Dockerfile.streamlit |
Dockerfile.jupyter |
JupyterLab + 23 notebooks | docker/Dockerfile.jupyter |
nginx.conf |
Reverse proxy: SPA + /ws → backend |
docker/nginx.conf |
docker-compose.yml |
Local dev stack (4 services) | repo root |
docker-compose.prod.yml |
Production overlay (resource limits, log rotation) | repo root |
.dockerignore |
Build context filter | repo root |
make docker-* targets |
One-command build/up/down | Makefile |
tests/deployment/* |
Static checks (parsed in make test) |
tests/deployment/ |
.github/workflows/docker.yml |
CI image build verification | .github/workflows/ |
No image registry push. The CI workflow builds all four images on every PR but does NOT push them anywhere. Image publishing to
ghcr.iolands in v1.1.1 alongside the Helm chart sohelm installactually works on first try (a Helm chart without pullable images is broken).
Architecture¶
flowchart LR
subgraph host[Local machine / single server]
subgraph compose[docker-compose stack]
be[backend<br/>fcc protocol ws-bridge<br/>:8765]
fe[frontend<br/>nginx + React<br/>:8080]
st[streamlit<br/>:8501]
jp[jupyter<br/>:8888]
end
end
user1[Developer] -->|browser| fe
fe -->|/ws| be
fe -->|/health| be
user1 -->|direct| st
user1 -->|direct| jp
be -->|EventBus| be
style be fill:#e1f5fe
style fe fill:#fff3e0
style st fill:#f3e5f5
style jp fill:#e8f5e9
The four services are independent — you can run them in any combination.
The frontend depends on the backend's /health endpoint via depends_on:
condition: service_healthy, so make docker-up only starts the SPA
once the backend is reachable.
See also¶
- Docker quickstart — build, run, env vars
- Local stack walkthrough — full compose tour with all four services
- Known limitations — what
/apiis, why MCP/A2A servers are experimental, and what to expect - AI providers — which LLM the containers will call