Skip to main content

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:
  1. You describe work in the TUI — A coordinator agent splits it into tasks with dependencies
  2. Each task runs in isolation — Copy-on-write clones of your project with everything (build artifacts, node_modules)
  3. Agents run tasks in parallel — Respecting the dependency graph and concurrency limits
  4. Work gets merged back — Finished work merges into your working directory
Works in any folder, git or not. In a git repo, enki commits each task on a branch and merges through a queue. Without git, it uses git internally to track changes but doesn’t leave a repo behind.

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):
CrateRole
corePure sync state machines: orchestrator, DAG scheduler, SQLite persistence, CoW copy manager, git merge refinery, roles, hashlines. Zero async, zero tokio.
acpAsync ACP client. Spawns agent subprocesses, manages sessions, routes streaming updates. All internal state is Rc<RefCell<...>>!Send, must run on a LocalSet.
tuiSync terminal UI library over raw crossterm (not ratatui). Chat framework via Handler<M> trait. Optional markdown rendering with termimad and syntect.
cliThe 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.

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

Acknowledgements

Enki is inspired by Gastown by Steve Yegge and built on the Agent Client Protocol.

License

Enki is MIT licensed. See the LICENSE file for details.

Build docs developers (and LLMs) love