Getting started

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.

.pact / log.jsonl
product design dev
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:

  1. init opens a feature and its tasks.
  2. assign gives a task an owner and a reviewer (they must differ).
  3. join checks the worker out onto the task's feature branch.
  4. checkpoint moves a finished task to awaiting_review.
  5. accept / changes_requested — only the reviewer decides.
  6. 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 toolsstatus, 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
  1. Run pactify setup to wire your registered agents into a project.
  2. Define the work — a feature and its tasks (or let a planner draft the graph).
  3. Run pactify orchestrate, and watch it on pactify serve.

Where to go next

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.