Get Started
Quickstart with octl
Local Olympus stack in one command
octl is the local-development CLI. One command starts every Olympus service in the correct order, runs migrations, seeds an admin identity, and prints access URLs.
Run it
npx @olympusoss/octl deployThat's the whole command. It will:
- Detect and install dependencies, Podman,
podman-compose, andkubectlvia Homebrew on macOS if not present. (On Linux, install Podman yourself before running.) - Initialize and start the Podman machine if one isn't running.
- Build dev images for Athena, Hera, and Site if they aren't cached.
- Start services in dependency order, Postgres → Kratos/Hydra migrations → Ory services → apps → seed.
- Verify health of every service.
- Print access URLs and test credentials.
End-to-end, on a warm cache, this takes about 90 seconds.
What you get
Eighteen running containers, exposed at:
| URL | Service |
|---|---|
| http://localhost:2000 | Site (this docs page, brochure, OAuth2 playground) |
| http://localhost:3000 | Hera CIAM (customer login UI) |
| http://localhost:3001 | Athena CIAM (customer admin dashboard) |
| http://localhost:4000 | Hera IAM (employee login UI) |
| http://localhost:4001 | Athena IAM (employee admin dashboard) |
| http://localhost:5433 | pgAdmin (SSO via IAM) |
| http://localhost:5434 | MailSlurper (captured outbound email) |
See Access URLs and credentials for the full list including admin/public API ports.
Tearing down
npx @olympusoss/octl destroyStops every container, removes volumes, and removes the dev images. The Podman machine itself is left running.
What octl deploy doesn't do
- It does not deploy to production. For production, use Daedalus.
- It does not configure email delivery. Outbound emails are captured by MailSlurper at http://localhost:5434.
- It does not enable captcha. Turnstile is disabled in dev.
Where next
- Access URLs and credentials, log into Athena.
- First login, walk through a real login flow.
- Quickstart with podman compose, what
octl deployactually does, expanded.