omo-olympus
v0.2.13
Published
Greek mythology personas for opencode agents — watch Sisyphus, Oracle, and friends narrate your AI workflow in the sidebar
Maintainers
Readme
🏛️ omo-olympus
Your agents have names. Now they have faces.
▼ Olympus
🪨 Sisyphus Pushing uphill...
🔍 Explorer Following a lead...
📚 Librarian Cross-referencing...
🧙 Oracle 💤
🦉 Metis 💤
🎭 Momus 💤
🔥 Prometheus 💤
You run oh-my-opencode. Agents fire in parallel. Background tasks fly. Sessions spawn and die.
But you never see any of it.
omo-olympus changes that. Seven agents. Seven Greek mythology personas. Real-time dialogue in your sidebar. Explorer digs through your codebase — "I smell a clue". Oracle peers beyond the mists — "The vision forms...". Momus tears your plan apart — "Don't shoot the messenger".
Inactive agents sleep: 💤. Active agents talk. You watch the gods work.
Why "Olympus"?
You stare at a terminal all day. Agents run in the background. You have no idea what's happening until the final output drops.
That's boring.
So each agent got a name from Greek mythology, a personality that matches its role, and dialogue that changes every run. Once you see Sisyphus pushing his boulder while Oracle peers into the mists — a silent sidebar won't cut it anymore.
The Pantheon
Not status labels. Characters.
| | Agent | Role | They say things like... | |:---:|---|---|---| | 🪨 | Sisyphus | The one who never stops | "One more push" · "The boulder rolls again" · "Summit reached ✓" | | 🔍 | Explorer | Codebase detective | "On the trail!" · "Checking every corner" · "Case closed" | | 📚 | Librarian | The one who remembers everything | "To the stacks!" · "Page 394..." · "The records confirm" | | 🧙 | Oracle | Sees what others can't | "You seek guidance?" · "Patience, mortal..." · "The path is clear" | | 🦉 | Metis | Thinks before anyone acts | "Hmm, interesting..." · "Weighing options..." · "Scope defined" | | 🎭 | Momus | Brutally honest critic | "Alright, roast time" · "Not convinced yet..." · "The truth hurts" | | 🔥 | Prometheus | Forges the plan | "Fire in the forge" · "Connecting the dots..." · "Blueprint ready" |
4 states per agent — start, working, done, error — with randomized lines each. Every run feels different.
Install
opencode plugin omo-olympusThat's it. OpenCode detects both the server and TUI entrypoints from the package and updates opencode.json and tui.json automatically. Restart opencode to activate.
For Humans
Paste this into your LLM agent (Claude Code, opencode, Cursor, etc.):
Install and configure omo-olympus by following the instructions here:
https://raw.githubusercontent.com/akasai/omo-olympus/refs/heads/main/docs/installation.mdSeriously, let the agent handle it. It merges configs better than you.
For LLM Agents
Fetch the installation guide and follow it:
https://raw.githubusercontent.com/akasai/omo-olympus/refs/heads/main/docs/installation.mdManual Setup
If you prefer to configure manually, add the plugin to both config files:
~/.config/opencode/opencode.json
{
"plugin": ["omo-olympus"]
}~/.config/opencode/tui.json
{
"$schema": "https://opencode.ai/tui.json",
"plugin": [["omo-olympus", { "enabled": true }]]
}Restart opencode after updating the config files.
How It Works
Two plugins. One shared queue. Zero config.
task() → server detects agent type → pending queue → TUI picks up on session event → sidebar talks
main session → server reads system prompt → mode file → TUI switches persona on status eventServer plugin hooks into four interception points:
tool.execute.before— interceptstask()calls and infers the agent fromsubagent_typeorcategorytool.execute.after— records task completion signalscommand.execute.before— detects mode-switching commands (/start-work,/omc-plan)experimental.chat.system.transform— detects main session mode (Prometheus vs Sisyphus) by reading system prompt content
TUI plugin renders in sidebar_content (top of sidebar, order 50), maps child sessions to personas via file-based IPC, and drives real-time updates with reactive signals.
No websockets. No shared memory. A JSON file in /tmp and two plugins that talk through it.
Features
| | What | Why it matters |
|:---:|---|---|
| 📂 | Collapsible | Click the header to fold. Collapsed shows active agent count |
| 🎨 | Theme-aware | Reads your opencode theme. RGBA buffer → hex, automatically |
| ⚡ | Real-time | Solid.js reactive signals. Updates as agents work |
| 🔇 | Auto-sleep | 3 seconds after done, agents return to 💤 |
| 🔄 | Concurrent tracking | Multiple instances of the same agent tracked; sleeps only when all finish |
| ❌ | Error detection | Agents show error dialogue on failure (5-second display) |
| 🔥 | Mode switching | Detects Prometheus (plan) vs Sisyphus (build) via system prompt |
| 🧹 | Session cleanup | Prevents memory leaks with session.deleted handler |
Requirements
- opencode with plugin support (
@opencode-ai/plugin>= 1.4.3) - Agent orchestration that dispatches
task()calls — e.g., oh-my-opencode
Manual Install
Skip npm. Copy the source files directly:
mkdir -p ~/.config/opencode/plugins
cp src/tui.tsx ~/.config/opencode/plugins/omo-olympus.tsx
cp src/server.ts ~/.config/opencode/plugins/omo-olympus-server.tsRegister local paths instead:
// opencode.json
{ "plugin": ["./plugins/omo-olympus-server.ts"] }
// tui.json
{ "plugin": [["./plugins/omo-olympus.tsx", { "enabled": true }]] }Contributing
Issues and PRs welcome. If you have an idea for a new persona, a better line of dialogue, or a bug to report — open an issue.
To develop locally:
git clone https://github.com/akasai/omo-olympus.git
cp src/tui.tsx ~/.config/opencode/plugins/omo-olympus.tsx
cp src/server.ts ~/.config/opencode/plugins/omo-olympus-server.tsTip: use symlinks for live-reload during development:
ln -sf $(pwd)/src/server.ts ~/.config/opencode/plugins/omo-olympus-server.ts
ln -sf $(pwd)/src/tui.tsx ~/.config/opencode/plugins/omo-olympus.tsxEdit, restart opencode, see your changes live.
Run tests:
npm testKnown Quirks
tool.execute.beforefires twice per tool call — dedup via 200ms window- Main session mode detection uses
experimental.chat.system.transform— API may change in future opencode versions - System prompt keyword matching (
"You are Prometheus") is coupled to OMC's internal prompt format - Server ↔ TUI communication via
/tmp/omo-pending.jsonand/tmp/omo-mode.json(file-based IPC)
License
MIT
