Local orchestration for coding agents
Decide what should happen. Delegate who does it.
Atenea is the orchestration core that sits outside the CLIs it serves. It keeps capabilities stable while implementations, providers and health change underneath.
Atenea#
An orchestration core for agents and MCP tooling that lives outside the CLIs it serves. Every client — omp, Claude Code, Codex — connects to the same core. OpenCode is an opt-in model backend rather than a client adapter.
The one sentence that explains the rest: Atenea decides and delegates, it does
not execute. The flow is always goal -> capability -> implementation.
Why it exists#
Tooling changes constantly. A workflow written against ripgrep breaks the day
ripgrep is replaced. A workflow written against code.search does not: the
capability is stable, and which tool answers it is a decision Atenea makes with
what it knows about the repository in front of it.
The pieces#
| Piece | What it is |
|---|---|
| Capability | A stable, tool-agnostic action. code.search, symbol.definition. |
| Implementation | A concrete provider of a capability, in four blocks: capability, constraints, cost, health. |
| Repository | The unit of work. Not the project — the repository. |
| Selector | The funnel that picks an implementation: constraints, reach, health, then cost. |
| Adapter | A dumb translator between the core and one far side — a CLI, or an MCP server. All the intelligence stays in the core. |
Where the project stands#
These pages describe Atenea 1.1.0, speaking
contract 3.6.0. The product is stable; Claude Code, Codex, OpenCode and the
Kivgraph web viewer remain optional external provider surfaces. The
changelog has what
landed.
The core, the Capability Registry and the funnel run on all four stages. The
shipped adapters include OMP, Claude Code and Codex, with graph
providers available through MCP. It installs as a background service that
keeps its own history in shape, proven now against a live language server
on this repository: symbol.definition and symbol.references resolve
across files, not only within the one a caller happened to be looking at,
symbol.implementations answers for real too, not only the empty
result an earlier bug let through, and symbol.overview lists what a file
declares before anything in it is known by name — the question the other
three all assume has already been answered.
Cost ranks the survivors rather than filtering them, and it says which figure
it used. Until an implementation has been measured a couple of times, that
figure is the estimate the catalog declared — the trace prints estimated so
nobody reads a guess as an observation. This is the design’s break-in period:
the numbers get better as real work runs through, and nothing has to be
rewritten when they do.
Read next#
- Getting started
- Operations — release smoke tests, recovery and incident response
- v1 readiness — the code-backed acceptance gate and deferred contracts
- Aceptación de la orquestación inteligente — evidencia local, métricas y límites de la entrega
- Benchmarks y métricas — tests, cobertura, rendimiento, baselines y semáforos
- Cobertura Dart — matriz local, límites y evidencia pendiente
- Conocimiento verificado — scopes, dependencias y gate de promoción
- Final 1.0.0 audit — historical repository, team configuration and post-release limits
- v1 contracts — structural search, permission and provider decisions
- v1.0 policy — garantías, límites y criterios de v1.1
- Day to day — the five commands worth remembering
- Architecture
- MCP compatibility — legacy and modern eras, transports and MRTR limits
- Controlled MCP activation — evidence-backed proposals, explicit permissions and append-only activation
- Codex — native App Server transport, receipts and managed agent profiles
- Decision router — model, tool, MCP, provider and workflow choices
- Settings
- Computer Use — macOS desktop access through Atenea
- When a provider looks flaky
- When the instrument is the bug — three defects that were not there
- What is not built yet — and what the next brick is
- Open questions — what dogfooding turned up, not yet decided