The picture before the prose.
Codencer's architecture is three roles, two contracts, one record. The roles are planner, bridge, and executor. The contracts are TaskSpec (planner → bridge) and ResultSpec (bridge → planner). The record is the run.
If you want the deep prose, the docs are at /docs. This page is the picture.
Planner → Codencer → executor
Planners decide what to do. Executors do it. Codencer sits between them as state, contract, and audit trail.
Runs → steps → attempts → artifacts → validations → gates
Run lifecycle — runs, steps, attempts, artifacts, validations, gatesEvery TaskSpec opens a run. Every run is a tree. Steps under runs, attempts under steps, artifacts under attempts. Validations and gates close the tree. Every node is recorded, append-only, SQLite-backed.
The state model is the thing other vendors' architectures flatten away. Codencer keeps it, because it's the asset.
Local-only. Self-host relay. Self-host cloud.
Three Codencer deployment modesCodencer is local-first by design. Execution always runs on the operator's own machine, near the code. The relay layer can run on the operator's infrastructure too.
Local-only is the path of least resistance — single machine, single user, full proof in under a minute. Self-host relay adds a remote planner without exposing a raw remote shell. Self-host cloud adds the multi-tenant control plane.
Comparison matrix
| Product | Planner | Executor | Cross-vendor | Durable record | Local exec | Self-host |
|---|---|---|---|---|---|---|
| Codencer | any | any | ● | ● | ● | ● |
| ChatGPT → Codex | OpenAI | OpenAI | ─ | chat only | ─ | ─ |
| Claude → CC | Anthropic | Anthropic | ─ | tool calls only | partial | ─ |
| Cursor self-hosted | Cursor | Cursor | ─ | partial | ● | ● |
| Copilot cloud | GitHub | GitHub | ─ | partial | ─ | ─ |
| DIY MCP glue | any | any | partial | you build it | varies | varies |
Vendors are deepening their own stacks. The neutral cross-vendor bridge is still missing.