An agentic operating system. You give one instruction to a CEO agent; it divides the work among a pantheon of specialist agents, each running a real Claude Code session in a real terminal, and you watch them do it from a pixel-art view of their chambers.
No API keys. Every agent is a claude process using your own Claude subscription auth.
npm install
npm run dev
npm run dist
Builds release/Olympus-Setup-<version>.exe. Running it installs Olympus per-user to
%LOCALAPPDATA%\Programs\Olympus and puts shortcuts on your Desktop and Start Menu. Uninstall
from Windows Settings, or via Uninstall Olympus.exe in the install folder.
| script | what it does |
|---|---|
npm run dev |
Vite + Electron with hot reload |
npm run icon |
re-renders build/logo.svg into icon.ico and the PNG set |
npm run pack |
unpacked build in release/win-unpacked (no installer) |
npm run dist |
the installer |
The icon is drawn from a single SVG — edit build/logo.svg and re-run npm run icon.
Each agent is one claude process in a pseudo-terminal (node-pty). You can watch it, type
into it, and interrupt it — it is the genuine Claude Code TUI, not a rendered log.
Two things make them a team rather than four separate terminals:
1. Orders travel as files. The CEO's charter teaches it to delegate by using its ordinary
Write tool to create .olympus/mailbox/orders/<name>.json:
{ "to": "hephaestus", "task": "…complete, self-contained instructions…" }Olympus watches that directory and types the order into the target agent's terminal. Nothing is parsed out of terminal output, so nothing breaks when the TUI redraws.
2. Reports travel as lifecycle hooks. Every agent runs with a generated settings file that
registers Claude Code hooks (SessionStart, UserPromptSubmit, PostToolUse, Stop,
Notification, SessionEnd) pointing at a small relay script. The relay POSTs to a loopback
daemon inside Olympus. The Stop payload carries last_assistant_message — the agent's
closing words — which is delivered to the CEO verbatim as [REPORT FROM <name>].
The same hooks drive the room: UserPromptSubmit sits an agent at a desk, PostToolUse shows
which tool they're using, Stop sends them wandering again.
When the CEO judges the goal met it writes .olympus/mailbox/done/<name>.json, which closes
the loop in the Chronicle.
you ──decree──▶ CEO ──orders/*.json──▶ worker ──Stop hook──▶ CEO ──done/*.json──▶ you
| The Pantheon | Your roster. Click to focus an agent, double-click to edit them. |
| The Chambers | The room view, over the selected agent's live terminal. |
| All Terminals | Every agent's terminal at once, so you can watch the whole team work. |
| The Sanctum | The CEO's room. Planners share it; workers don't. |
| The Agora | The workers' hall, eight desks. |
| The Symposium | Ask several agents the same question and read the answers side by side. |
| The Chronicle | Every goal, order, report and completion. Click an entry to expand it. |
In the room: agents sit at a desk while working, wander when idle, stand with a
blinking ! when they need you, and appear as marble statues when no session is running.
Click any figure to jump to their terminal.
CEO — takes your goals and hands out the work. The CEO never builds anything itself, and
that isn't left to good intentions: it runs with Bash, Edit and NotebookEdit disabled, so
it can't write the code even if it wanted to. The only file it can create is an order.
Worker — does the actual building. Gets tasks from the CEO, reports back when done.
Planner — an advisor that talks only to you. It sits outside the loop entirely: the CEO can't give it work, nothing it says is forwarded to anyone, and it runs with every workspace-modifying tool disabled. Use it to think out loud before committing to a plan.
Ships with Zeus (CEO), Hephaestus, Athena and Hermes (workers), and Oracle (planner). Add as many more as you like — each gets a name, a title, a job description written into its system prompt, a model, a permission mode, and a colour. Promote anyone to CEO; there's only one, so the current one becomes a worker.
Each agent keeps its own session and is resumed on restart, so they remember their history. Changing an agent's model starts them fresh.
- First run asks you to vouch for the workspace. Claude Code will not touch an unfamiliar directory until you confirm. Olympus asks once, in its own dialog, instead of leaving the prompt buried in four terminals. Agents can read, edit and execute files there — point it at a project you own, or an empty folder.
- Permission modes are per-agent. Workers default to
auto, where Claude Code decides what needs asking.acceptEditssounds safer but stalls any unattended task that has to run something — it lets edits through and then stops to ask before executing.bypassPermissionsapproves everything including shell commands; only use it somewhere you can afford to lose. - Parallelism costs quota. The
parallelselector caps how many workers run at once. Concurrent Opus and Sonnet sessions consume subscription usage quickly; 2 is a sane default. .olympus/lives inside your workspace and holds the mailbox, per-agent charters and settings, and the hook relay. It self-ignores from git.
electron/
main.js window, IPC
preload.js contextBridge API
core/
agent.js one agent: PTY + claude process + state machine
pantheon.js roster, mailbox watcher, order dispatch, report routing
hookServer.js loopback daemon + generated hook relay script
charters.js the CEO and worker system prompts
transcript.js session transcript tailer (live speech)
store.js persisted realm
paths.js workspace scaffold, claude binary resolution
src/
room/
sprites.js every pixel drawn procedurally — no image assets
engine.js room layout, desk claims, walk/sit simulation
components/ rail, room, terminals, chronicle, symposium, modals
styles/theme.css
Requires Node 20+ and the claude CLI on your PATH, already signed in.