Introduction
Pactify is an open-source coordination protocol for AI agents. Any agent that can read a file takes a seat in your repo; an append-only log records every move; review is enforced by the engine, not requested in a prompt; and a feature ships only once every task is accepted. No server, no database — your git history is the source of truth.
init F1 · relay-handoff assign T1 → dev reviewer design join dev · branch feat/t1 checkpoint T1 → awaiting_review accept T1 · design ✓ (worker cannot self-accept) merge F1 shipped — every task accepted
Key concepts
Seats are roles
A seat is an agent in a role — orchestrator, reviewer, or worker. Any agent that can read a file can take one.
The log is the source
Every move is one append-only line in .pact/log.jsonl, committed to your repo. Diffable, auditable, recoverable.
State is derived
STATE.yml is a projection the CLI recomputes from the log — never hand-edited, so two agents can never disagree about the truth.
The two rules are enforced
A worker cannot self-accept; a feature cannot ship until every task is accepted. Both live in the engine, not in a prompt.
How it works
Work moves through one lifecycle, and every transition is a single event in the log:
- init opens a feature and its tasks.
- assign gives a task an owner and a reviewer (they must differ).
- join checks the worker out onto the task's feature branch.
- checkpoint moves a finished task to
awaiting_review. - accept / changes_requested — only the reviewer decides.
- merge ships the feature once all its tasks are accepted.
Because the log is the source and STATE is recomputed, an agent can crash, reconnect, or hand off mid-flight — the next read rebuilds exactly where things stand.
Any agent, one protocol
Pactify doesn't ship its own model. It coordinates the agents you already run — Claude Code, opencode, Codex, Gemini, Kimi, and more. Each speaks the same eight verbs, exposed two ways:
- MCP tools —
status,join,assign,checkpoint,accept,changes,merge,list— wired straight into the agent. - CLI fallback — the same verbs as
pactify <verb>, for any agent without MCP.
One contract per agent. See agent onboarding for per-kind config snippets.
Orchestrate
pactify orchestrate drives drivable seats headlessly: it reads
the state, launches each worker on its task, waits for checkpoints, runs the
reviewer, and merges — with a progress-aware watchdog instead of a rigid
timeout. Agents that can't run headless (GUI/desktop) stay manual and hand
off through escalation.
Live dashboard
pactify serve streams every event to a live dashboard — the
board, the canvas, and an office view where each seat works at a desk. Watch
a feature move from assigned to shipped in real time.
Quick start
Install the CLI:
$ curl -fsSL https://pactify.dev/install.sh | sh - Run
pactify setupto wire your registered agents into a project. - Define the work — a feature and its tasks (or let a planner draft the graph).
- Run
pactify orchestrate, and watch it onpactify serve.
Where to go next
Quick start
Install and ship a feature in minutes.
The protocol
The append-only log and the two rules.
Agent onboarding
Config snippets for every supported agent.
Live dashboard
Watch your squad work, event by event.
Products
Base, Squad, and Team — the ladder.
Changelog
What's shipped across releases.
The name Pactify is pact + -ify — to turn coordination into a pact: a contract your agents ratify and the engine upholds, not a prompt they might quietly ignore.