Getting Started
The fastest way to try Orkestra is the dev stack — the seven core modules, built from source with AIR + Vite hot reload, layered on top of MongoDB, Redis, and RustFS. (For the pre-built image, see Installation.)
cd docker
docker network create orkestra-network # first time only
docker compose -f docker-compose.infra.yml up -d # mongodb + redis + rustfs
docker compose -f docker-compose.dev.yml --env-file .env up -d
# Backend API: http://localhost:3000
# API docs: http://localhost:3000/docs
# Generate an administrator token for first login (from repo root):
ORKESTRA_API_URL=http://localhost:3000 ./scripts/devtoken.sh administrator
Once you're in, head to /admin/modules to manage modules. The registry hot-reloads — no restart required.
One image, core modules only
There is a single backend image — there are no SKUs. Per ADR-0006 Orkestra is a core-only base: it ships seven always-loaded core modules and no addons. CI publishes one image per push to main:
| Image | What it includes |
|---|---|
ghcr.io/orkestra-cc/orkestra/backend:latest | The seven core modules — user, notification, tenant, authz, auth, navigation, logging. |
ghcr.io/orkestra-cc/orkestra/backend:<sha> | The same, pinned to a specific commit. |
The optionalModules catalog ships empty. A fork that needs invoicing, payments, AI, etc. adds those verticals in-tree (internal/addons/<name>/ + a cmd/server/catalog_<name>.go) and builds its own image.
Read more in Architecture › Module Lifecycle for how modules are registered and enabled.