Enki
Multi-agent coding orchestrator that spawns ACP agents in isolated project copies, manages them as a DAG, and merges their work back.
How Enki Works
Enki orchestrates coding agents without making LLM API calls itself. It manages agent processes, state, and task execution:- You describe work in the TUI — A coordinator agent splits it into tasks with dependencies
- Each task runs in isolation — Copy-on-write clones of your project with everything (build artifacts, node_modules)
- Agents run tasks in parallel — Respecting the dependency graph and concurrency limits
- Work gets merged back — Finished work merges into your working directory
Key Features
DAG-Based Execution
Dependency graph scheduling with parallel execution and intelligent concurrency control
Worker Isolation
Copy-on-write filesystem clones keep workers isolated with warm build caches
Tier System
Light/standard/heavy task tiers control which models run tasks and how many run concurrently
Git Merge Queue
Automatic merge conflict resolution with dedicated merger agent
Role System
Customizable agent roles with specific behaviors and output modes
MCP Server
JSON-RPC server for external tool access with role-based filtering
Hashline Verification
Content-addressed line tracking prevents stale edits
TUI Interface
Terminal UI with streaming markdown rendering and real-time updates
Requirements
Git
Version control system for tracking changes
Claude Code
The ACP agent that enki orchestrates
Node.js
Used to install and run the ACP agent
Rust
Required if building from source
Architecture
Enki is a Rust workspace with four crates that maintain strict dependency direction (no cycles):| Crate | Role |
|---|---|
| core | Pure sync state machines: orchestrator, DAG scheduler, SQLite persistence, CoW copy manager, git merge refinery, roles, hashlines. Zero async, zero tokio. |
| acp | Async ACP client. Spawns agent subprocesses, manages sessions, routes streaming updates. All internal state is Rc<RefCell<...>> — !Send, must run on a LocalSet. |
| tui | Sync terminal UI library over raw crossterm (not ratatui). Chat framework via Handler<M> trait. Optional markdown rendering with termimad and syntect. |
| cli | The enki binary. No args → TUI. enki mcp → JSON-RPC stdio server. Houses the coordinator loop (tokio::select! on dedicated OS thread). |
Data flow: User → Coordinator (cli) → Orchestrator (core) produces
Vec<Event> → Coordinator dispatches workers via AgentManager (acp) → Workers call back through MCP tools → Signal files → Coordinator polls on 3s tick.Quick Links
Installation
Install enki via Homebrew or build from source
Quickstart
Get up and running in minutes
CLI Reference
Complete command-line interface documentation
Core Concepts
Deep dive into enki’s architecture
MCP Tools
External tool access reference
Contributing
Set up your development environment
