Observatory ships as a set of containers you can bring up together. This guide is the fastest path from zero to a running platform you can point the SDK at.Documentation Index
Fetch the complete documentation index at: https://docs.flowx.ai/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
- Docker 24+ and Docker Compose v2
- 8 GB RAM available for containers
- 20 GB disk available for PostgreSQL data
- Network access to the upstream LLM providers you intend to use
| Service | Port | Purpose |
|---|---|---|
observatory-api | 8091 | FastAPI backend |
observatory-web | 4900 | Angular dashboard |
observatory-platform | 8092 | Platform service (organizations, RBAC, Kubernetes integration) |
observatory-db | 5432 | PostgreSQL with pgvector |
observatory-docs | 4903 | Bundled docs site |
Observatory authenticates against an external FlowX identity provider (Keycloak) — it is not bundled in the Compose stack. Point
SECURITY_OAUTH2_* / KEYCLOAK_* at your auth server.Steps
Clone the repo
--recurse-submodules, run:Create the network
The platform expects an external Docker network shared with other FlowX services:
Configure the .env file
Copy the example and edit the placeholders:At minimum set
OPENAI_API_KEY (or your provider equivalent), the SECURITY_OAUTH2_* values for your identity provider, and any custom LLM endpoints. See Environment variables for the full table.Bring up the stack
docker compose ps shows all services in state Up or healthy.Confirm the web UI
Open http://localhost:4900. You should see the login page. Sign in with credentials from your FlowX identity provider.
Rebuilding after code changes
When you edit source code in a submodule, always rebuild — restarting alone won’t pick up the changes:Persistence
The Compose stack persists:pgdatavolume — all telemetry, evidence, runshf_hubvolume — cached model files
docker compose down. To wipe the platform back to factory state:
Production deployment
The Compose stack is for development and evaluation. For production, see the Kubernetes manifests underdeployment/ and the deployment guide in the repo. Notable production-only concerns:
- Configure persistent volumes for the database
- Set up TLS at the ingress layer
- Point auth at your production identity provider
Troubleshooting
Containers start but the UI shows 503
Containers start but the UI shows 503
Most often a missing port name in the service definition. Confirm
observatory-api is reachable on port 8091 from the observatory-web container with docker compose exec observatory-web curl http://observatory-api:8091/health.Postgres fails to start with 'database does not exist'
Postgres fails to start with 'database does not exist'
The init script in
init_dbs/multiple-databases.sh creates the companion databases on first start. If it didn’t run, your existing pgdata volume is from an older build. Wipe and start over: docker compose down -v && docker compose up -d --build.The SDK can't reach the API from outside Docker
The SDK can't reach the API from outside Docker
FLOWX_OBSERVATORY_API_URL must be http://localhost:8091 for a host-machine app, not http://observatory-api:8091 (which only resolves inside the Docker network).Related resources
Environment variables
Full reference for every env var the platform reads.
Getting started
Once the platform is up, instrument your first agent.

