Workspace setup
Clone the eight Olympus repos and run the dev stack from source
To work with Olympus source, patch a bug, add a feature, run a forked version, you need a workspace with the eight repos cloned side-by-side. This page sets that up.
Prerequisites
- Git with SSH or HTTPS access to
github.com/OlympusOSS/*. - Node.js 20+ with
npm. - Bun,
curl -fsSL https://bun.sh/install | bash. - Podman +
podman-compose(or Docker + Docker Compose,podman-composeis recommended). - macOS: Homebrew;
octl deploywill install missing tooling for you. - Linux: install Podman via your package manager.
Clone the eight repos
The dev compose.dev.yml uses relative volume mounts (../athena, ../hera, ../site) for live reload, so the repos must be siblings of one parent directory:
mkdir Olympus && cd Olympus
for repo in platform athena hera site canvas sdk octl daedalus; do
git clone git@github.com:OlympusOSS/$repo.git
doneYour layout:
Olympus/
├── platform/
├── athena/
├── hera/
├── site/
├── canvas/
├── sdk/
├── octl/
└── daedalus/This sibling layout is required, not advisory. If you have a different layout, the volume mounts in compose.dev.yml won't find the source.
Install dependencies in each app repo
for repo in athena hera site canvas sdk octl; do
cd Olympus/$repo
bun install
cd ..
donecanvas and sdk ship as source-only npm packages. The dev install resolves them via bun's standard package resolution, when Athena's package.json declares @olympusoss/canvas, Bun reads it from the canvas/ sibling directory only when you use a workspace setup. The current Olympus setup is not a Bun monorepo workspace; each app reaches Canvas via the published npm package.
For local dev where you want to edit Canvas and see changes in Athena instantly, link manually:
cd Olympus/canvas && bun link
cd ../athena && bun link @olympusoss/canvasRepeat for the SDK if you're editing it.
Start the stack
Easiest:
npx @olympusoss/octl deployOr manually:
cd Olympus/platform/dev
podman compose up -dSee Get Started, Quickstart with podman compose for what each command does and where to look when it fails.
Run a single app outside Compose
For faster iteration on, say, Athena:
cd Olympus/athena
DATABASE_URL=postgres://athena:athena@localhost:5432/olympus \
ENCRYPTION_KEY=$(cat ../platform/dev/.env.dev | grep ENCRYPTION_KEY | cut -d= -f2) \
SESSION_SIGNING_KEY=$(cat ../platform/dev/.env.dev | grep SESSION_SIGNING_KEY | cut -d= -f2) \
KRATOS_URL=http://localhost:4101 \
HYDRA_URL=http://localhost:4103 \
bun run devYou'll need to bring up Postgres separately or have the Compose stack running for the DB. The other Olympus services should be running so Athena can talk to them.
Editor setup
- VS Code: open the parent
Olympus/directory as a multi-root workspace. Add a.code-workspacefile listing each repo as a folder. TypeScript should "Just Work", each repo has its owntsconfig.json. - JetBrains: same; open the parent directory as a project, mark each repo as a content root.
Per-repo scripts
Most repos share:
bun run dev # start dev server
bun run typecheck # tsc --noEmit
bun run lint # biome check (athena, hera, site)
bun run test # vitest run
bun run build # production buildRefer to each repo's package.json for variations.
Inspecting your running deployment
Once you have local source, you can also exec into containers to compare your source against what's actually running:
podman exec olympus-athena-1 cat /app/src/middleware.ts | diff - athena/src/middleware.tsSee Develop, Inspecting your containers for the full inspection workflow.
Common setup pitfalls
- Sibling layout missed. If you cloned the repos to
~/projects/<each>/rather than~/projects/Olympus/<each>/, the volume mounts fail. Move them into a common parent. bun installskipped in one repo. Compose builds the dev image fresh from the volume mount, but if your app expects a builtnode_modulesfrom the host, install before starting the stack.- Podman machine not started (macOS).
podman machine init && podman machine startfirst.
Where next
- Develop, Running tests, per-repo test runners.
- Develop, Testing strategy, Vitest + Playwright patterns.
- Develop, Release process, Changesets + GHCR.