1. Clone
2. Start
make application-up (which wraps ./scripts/start-application-services.sh) must run from the repository root. It:
- Creates
.envfrom.env.exampleif missing. - Generates
SECRET_KEYandINTERNAL_API_KEYif either is blank. - Generates
PROVIDER_AUTH_ENCRYPTION_KEY(a Fernet key) if blank. - Prints the URLs it is about to expose, and asks to confirm.
- Runs
docker compose -f docker-compose.yaml up --build -d.
--:
3. What came up
minio-init exiting with code 0 is correct — it creates the bucket and stops.
4. Verify
A healthy API returns
{"status": "ok", "database": "up"} — nothing to run here, just what to expect in the response body."status": "ok" (API) and a 200 (runtime), the stack is healthy — you’re clear to continue. If either hangs or refuses the connection, see Common issues before going further.
Open the dashboard at http://localhost:3000, or drive the API directly from the interactive console at http://localhost:8000/docs.
5. Create the first user
There is no seeded account. Signup creates a user, an organisation, and makes you itssuper_admin:
Edit the email, password, name, and org below, then run it — jq pulls the access_token straight into $TOKEN, no copy-paste. If signup fails (duplicate email, weak password, …), $TOKEN stays empty instead of silently becoming the literal string null, and the real error prints:
Logs
Stop and reset
docker compose down — containers stop, data survives.
Running the API on your host instead
Useful for development with hot reload:apps/api:
.env at the published database port — MONGODB_HOST=localhost, MONGODB_PORT=27018. See Local setup.
Troubleshooting
Next
- Create your first agent — no terminal required from here on
- Recipes — the same tasks over
curl