Are you the author? Sign in to claim
o9k — token-efficiency meta-framework for AI coding agents (Claude Code, Cursor, Codex, OpenCode, Hermes): seven pillars
What does the scouter say about his context level? IT'S OVER 9000!!!

o9k is a meta-framework for AI coding agents. It doesn't invent yet another
technique — it combines the best token-efficiency and agent-quality frameworks
into one coherent, conflict-free system of skills and plugins, wired to a
persistent memory MCP. Primary packaging is a Claude Code marketplace; the same
pillars also wire into Cursor, Codex, OpenCode, and Hermes via /o9k-init.
Every framework below saves tokens or improves output on its own. Combined
naively, they fight each other — two plugins hooking SessionStart, two output
styles rewriting your prose, two "plans" claiming to be the source of truth.
o9k's job is the arbitration layer: each concern has exactly one owner, and
the pieces multiply instead of colliding.
| Pillar | Plugin | What it does | Standing on the shoulders of |
|---|---|---|---|
| Doctrine & arbitration | o9k-core | The rules of engagement: who owns which hook, which style, which plan. Loaded once, always on. | Anthropic context-engineering guidance |
| Output compression | o9k-caveman | Telegraphic output style: ~50–65% fewer output tokens, with automatic fallback to full prose for anything safety-critical. | caveman (MIT) |
| Context discipline | o9k-scout | Load structure, not files: search before read, targeted line ranges, one canonical repo map per session. | aider repo-map, codesight, ast-grep |
| Subagent isolation | o9k-dispatch | Cost-gated fan-out: offload searches and decomposable work to isolated subagents that return results, not transcripts. Own skill (dispatch) with fan-out cost gate + RESULT-only contract. | Anthropic multi-agent research |
| Memory | o9k-memory | A memory MCP so sessions never start from zero — compact briefing at session start, deep recall on demand, save-before-compact. | TIM (npm tim-cli, preferred), hmem (npm hmem-mcp), or your own MCP via /o9k-init |
| Discovery | o9k-recon | Find and classify companion frameworks; one-command companion bundle installs. | — |
| Multi-agent roster | o9k-roster | Role→CLI×model fallback chains, subscription usage collector (multi-window ~/.o9k/usage.json), adaptive watcher, limit-watch + handoff, optional OpenRouter/AA score refresh, cross-CLI mailbox runs. See docs/MULTI-AGENT.md. | — |
Each pillar is an independent plugin. Install all seven or cherry-pick — o9k-core
is the only one the others assume.
The human should not have to do — or know — anything. After install, a
SessionStart hook in o9k-core injects the doctrine automatically every
session: the agent compresses its output, loads only what it needs, offloads
noisy searches, and saves state before compaction — no commands, no reading,
no habits to learn.
What automation can't do (a one-time hmem init, disabling legacy superpowers
dispatch skills if still active), the agent handles conversationally:
/o9k-init is the guided setup — it detects what's already on the
machine, asks which companion bundle you want, installs git if you're missing
it, and when something you already run collides with a bundle pick it explains
why the pick is better and migrates your data before uninstalling anything
(your call, either way). On the very first session the agent offers it
automatically, and /o9k-guide brings back a one-minute orientation any
time. The guide is personalized — it detects your actual setup and
mentions only what's missing, offering to fix each item for you. A fully set-up
install gets three sentences: everything runs by itself, nothing to do,
/o9k-stats shows the effect.
| OS | Core pillars (doctrine, caveman, scout, dispatch, memory, recon) | Multi-agent (roster, runs, collector) |
|---|---|---|
| Linux | ✅ full | ✅ full (systemd units for watcher/resume) |
| macOS | ✅ full | ⚠️ needs brew install tmux; watcher/resume via launchd plists (plugins/o9k-roster/launchd/) |
| Windows | ✅ hooks + update check work natively | ❌ tmux/expect/bash stack — use WSL |
/o9k-init prints this as a Platform line first and skips setup questions the
host OS can't honor.
Fast path (npm — Cursor, Codex, OpenCode, Hermes, and a global CLI):
npm i -g its-over-9k && o9k setup
o9k setup wires shared skills and session hooks for every detected host.
Then optionally install a memory backend (or pick one in /o9k-init):
npm install -g tim-cli && tim init # preferred
# or: npm install -g hmem-mcp && hmem init
(Scoped alias @bumblebiber/o9k is prepared in-repo; install via its-over-9k
until the scoped name is publicly resolvable on the registry.)
Claude Code (in-session marketplace):
/plugin marketplace add Bumblebiber/its-over-9k
/plugin install o9k-core@o9k
/plugin install o9k-caveman@o9k
/plugin install o9k-scout@o9k
/plugin install o9k-dispatch@o9k
/plugin install o9k-memory@o9k
/plugin install o9k-recon@o9k
/plugin install o9k-roster@o9k
Then run /o9k-init in a session — it detects your setup, walks you
through the companion bundle choice, and handles conflicts and migration.
Works with Claude Code, Codex, Cursor, OpenCode, and Hermes on the same
machine: /o9k-init (or o9k setup) syncs shared o9k skills and wires session
hooks on every detected host (it never installs missing CLI binaries — see the
o9k-init skill).
TIM (npm tim-cli) and hmem
(npm hmem-mcp) are both supported
memory backends. /o9k-init asks which to install (or wire a custom MCP).
o9k-memory auto-detects and prefers TIM when tim is on PATH (or TIM_CLI
is set); otherwise it uses hmem. Track TIM at
Bumblebiber/tim.
its-over-9k@1.x (clean reinstall)1.x was the old hmem CLI (bin: hmem / hmem-curate), not this
meta-framework. Do a clean swap — do not leave the old global install in place:
npm uninstall -g its-over-9k
npm install -g hmem-mcp && hmem init # memory backend (replaces 1.x)
npm install -g its-over-9k@latest && o9k setup
After that, which o9k should point at the new CLI and which hmem at
hmem-mcp. If either still points at a stale path, clear your shell hash
(hash -r) or open a new terminal.
Don't hand-install the third-party frameworks below. o9k-recon ships a
bundle installer that wires up a whole tested stack at once:
/plugin install o9k-recon@o9k
then run the companion-bundles skill (or install/o9k-companions.sh recommended --run). Bundles: minimal, recommended, max — see
docs/BUNDLES.md.
o9k writes symlinks, rules, and hook wrappers across host config dirs — two scripts keep that auditable:
node plugins/o9k-core/scripts/o9k-doctor.mjs # read-only: list artifacts, flag dangling/stale
node plugins/o9k-core/scripts/o9k-uninstall.mjs --dry-run # then --run to remove them
The doctor flags dangling skill symlinks and wrappers whose baked marketplace
path no longer exists (e.g. after moving the clone — fix via
update-check.mjs --refresh-hosts). Uninstall removes only provably-o9k
artifacts, strips o9k entries from host hook configs without touching foreign
ones, keeps ~/.o9k user data, and prints the manual follow-ups
(/plugin uninstall, systemd/launchd units).
o9k deliberately does not re-implement workflow methodology, issue tracking, docs injection, or symbol-level navigation — excellent frameworks exist for those. This matrix covers every o9k-compatible companion and how each pair gets along:
| o9k | Ponytail | Context7 | ccusage | superpowers | beads | Serena | ast-grep | hmem/TIM | task-master | BMAD·spec-kit | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| o9k | — | 🟢 | 🟢 | ⚪ | ⚠️¹ | 🟢 | 🟢 | 🟢 | 🟢 | ⚪ | ⚪ |
| Ponytail | 🟢 | — | 🟢 | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ |
| Context7 | 🟢 | 🟢 | — | ⚪ | 🟢 | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ |
| ccusage | ⚪ | ⚪ | ⚪ | — | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ |
| superpowers | ⚠️¹ | 🟢 | 🟢 | ⚪ | — | ⚠️² | ⚪ | ⚪ | ⚪ | ⚠️² | 🔴 |
| beads | 🟢 | ⚪ | ⚪ | ⚪ | ⚠️² | — | ⚪ | ⚪ | ⚠️³ | 🔴 | 🔴 |
| Serena | 🟢 | ⚪ | 🟢 | ⚪ | ⚪ | ⚪ | — | ⚪ | ⚪ | ⚪ | ⚪ |
| ast-grep | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | ⚪ | — | ⚪ | ⚪ | ⚪ |
| hmem/TIM | 🟢 | ⚪ | ⚪ | ⚪ | ⚪ | ⚠️³ | ⚪ | ⚪ | — | ⚠️³ | ⚪ |
| task-master | ⚪ | ⚪ | ⚪ | ⚪ | ⚠️² | 🔴 | ⚪ | ⚪ | ⚠️³ | — | 🔴 |
| BMAD·spec-kit·SuperClaude | ⚪ | ⚪ | ⚪ | ⚪ | 🔴 | 🔴 | ⚪ | ⚪ | ⚪ | 🔴 | —⁴ |
o9k-dispatch owns subagent isolation by default;
superpowers owns methodology. Disable stock dispatching-parallel-agents only
if it is still enabled.Not in the matrix — replacements, not companions. Some frameworks claim a concern an o9k pillar owns; they never share a setup with o9k, so their pairings are moot. Run them instead of the pillar they displace, or not at all: claude-mem / mem0 (vs the memory backend), Graphify / claude-context / codebase-memory-mcp (vs scout's overview), token-optimizer-mcp (vs caveman+scout).
Full per-framework notes and install mechanisms:
docs/COMBINING.md. The same facts exist
machine-readable as a compatibility layer
(plugins/o9k-core/compat/registry.json): detection, arbitration, and the
export-first migration driver (o9k-migrate.mjs) are all registry-driven —
/o9k-init uses it to detect rivals, argue the trade-off, and migrate data
before anything is uninstalled.
The ecosystem moves weekly (9,000+ marketplace entries and climbing). o9k-recon
ships framework-scout — a GitHub Scout skill that tells the agent where
to hunt (Trending, Topics, the plugin directory, awesome-lists), how to score a
candidate (concern → stars → freshness → license → install mechanism), and how
to slot it into the matrix above (symbiotic / orthogonal / blocking) before
proposing a bundle or matrix update. See
plugins/o9k-recon/skills/framework-scout/SKILL.md.
Early but functional. Seven pillars; hooks and multi-CLI wiring ship for the hosts above.
/o9k-guide once on the first session. Disable via
O9K_CORE_HOOK=off.O9K_UPDATE_INTERVAL_HOURS, default 24h), so it
never slows session start. O9K_UPDATE_CHECK=notify (default) reports;
auto also applies the safe npm-global updates (companions + its-over-9k
when installed via npm); off disables. Claude marketplace plugins
stay notify-only — never clobbered. After /plugin marketplace update o9k
or npm i -g its-over-9k@latest, run /o9k-update --refresh-hosts (npm
--apply already refreshes hosts when its-over-9k itself was updated).tim resolve-project, else hmem) and injects a compact loading directive
(never memory content). Stays silent if the backend's own hooks are already
installed — one owner per concern. Disable via O9K_MEMORY_HOOK=off.tim checkpoint
/ hmem checkpoint) in the background before compaction summarizes the
session away. Never blocks or delays compaction.~/.o9k/usage.json (no provider API
calls) and warns / instructs handoff when a provider, CLI, or usage window
crosses its threshold: burst windows like claude:5h/claude:session
(reset in hours) hand off at limits.handoff_at_burst (default 0.8);
week/monthly windows like codex:weekly hand off at limits.handoff_at
(default 0.95). Wired on all hosts; model choice stays in roster.mjs,
never in LLM reasoning.roster usage --refresh populate per-window fractions for Claude/Codex/Cursor
(claude -p "/usage" fast path; PTY for interactive tables). pick/dispatch
gate per model; pre-dispatch refresh when cache is stale. Install:
o9k-usage-watcher.sh (symlink or O9K_ROSTER_SCRIPTS + systemd drop-in).
Spec: docs/superpowers/specs/2026-07-17-o9k-roster-usage-collector-design.md.~/.o9k/runs/<id>/, blocking runs.mjs wait, systemd o9k-resume.service.
Only when ~/.o9k/roster.json exists; single-agent installs stay on dispatch
path A. Spec: docs/superpowers/specs/2026-07-17-cross-cli-run-resume-design.md.o9k-core also ships /o9k-guide (personalized setup orientation backed by
a read-only detector script), /o9k-update (check pillars & companions for
newer versions and apply the safe ones), and /o9k-stats: a zero-dependency
analyzer over Claude Code's session transcripts — output share, cache hit
profile, avg output per turn — so the savings are measured, not vibes.
o9k adapts ideas (and gives full credit) from: caveman
by Julius Brussee (MIT), superpowers by
Jesse Vincent (MIT), beads by Steve Yegge
(MIT), aider's repo-map,
LLMLingua, and Anthropic's
multi-agent research system
write-up. Memory by TIM (npm tim-cli)
and hmem (npm hmem-mcp). Compatibility research also
covers Context7,
ccusage,
claude-mem,
claude-context, and the
spec-driven crowd (spec-kit,
BMAD,
task-master) — see
docs/COMBINING.md.
MIT
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows