The document-first coding agent.
Compose structured prompts, weave in reusable skills, and run your coding CLIs through one local interface.
Website · Get started · Documentation · Architecture · Plugin standard · Plugin protocol
Important
C2 is pre-release software. Expect APIs, storage, and packaging details to change before 1.0. See the release Skill for package channels and signing limitations.
Most coding-agent clients begin with a chat box. C2 begins with a document. You can shape a long brief with headings and lists, insert skills and files exactly where they belong, inspect the whole turn, and only then send it to the agent you choose.
- Document-first prompts. Compose in a BlockNote editor instead of squeezing a specification into a single-line input.
- Eleven coding CLIs, one protocol. Drive Claude Code, Codex, Grok, Cursor, OpenCode 1 or 2, Pi, Kimi, ZCode/GLM, Amp, and Droid through the Agent Client Protocol.
- Skills and complete plugins. Insert reusable skills inline, or install GitHub packages that can include skills, subagents, MCP servers, and project scaffolds.
- Local, inspectable continuity. Sessions and project memory live in the shared Rust core; derived memories retain their sources and can be pinned or forgotten.
- Git-aware execution. Use per-session worktrees, automatic checkpoints, diffs, revert, and explicit commit/push flows.
- Three surfaces. C2 ships an Electrobun desktop app, a ratatui TUI, and a paired remote web client. All three compose the same Rust Core through the same plugin runtime; Electrobun is the desktop shell and relays one command/event protocol to its bundled Rust host.
Claude Code · Codex · Grok · Cursor · OpenCode 1 · OpenCode 2 · Pi · Kimi · GLM · Amp · Droid
│
ACP over stdio
│
Rust product core
│
Plugin composition layer
┌─────────┼─────────┐
│ │ │
Desktop TUI Remote
Electrobun + React ratatui Axum + WebSocket
C2's internals form a runtime-module graph inspired by cordis: storage, agent execution, git, memory, scenes, and other subsystems declare what they require and provide. Separately installed extensions use the small JSON-RPC plugin protocol and only the explicitly exported Extension API; the internal Rust trait and Core commands are not the public plugin contract. Package, lifecycle, scope, security, and host behavior follow the C2 Plugin Standard.
Start with source setup and local development. It covers the pinned Zig toolchain, desktop launch, TUI/server builds, and relevant checks. Provider setup is in the user guide.
For package channels, signing limitations, and authorized publication, use the release Skill. To operate a programming node, use the operations Skill.
| Path | Purpose |
|---|---|
crates/kernel |
Reactive plugin runtime and command registry |
crates/core |
Plugin-independent product domain: ACP, sessions, providers, policy, and persistence |
crates/plugins |
Core adapters, built-in runtime graph, extension bundles, protocol, and marketplace |
crates/tui |
ratatui frontend |
crates/server |
Headless server, pairing, WebSocket protocol, and remote client |
apps/desktop |
Electrobun + React + BlockNote desktop app |
packages/tool-broker |
Provider-neutral special-tool catalog and immutable routing plans |
website |
VitePress documentation and GitHub Pages site |
docs |
Documentation map, current contracts, designs, research, and SDLC records |
script |
Development, build, and repository-verification entry points |
Focused fixes, documentation improvements, and bug reports are welcome. Follow the development Skill, design system, and development lifecycle. Keep one change record with observable acceptance and actual evidence; scope and risk determine the required checks and human decisions.
C2 runs provider CLIs as local child processes and communicates with them over stdio. C2 does not change the provider's own network, authentication, data-retention, or tool policies; review those separately before giving a provider access to sensitive code.
Remote access is bearer-token based and intended for a trusted LAN or Tailscale network. Do not
expose codetwo-server directly to the public internet. Please report a suspected vulnerability
privately to the repository owner rather than opening a public exploit report.
Licensed under the Apache License 2.0.

