PACT defines how AI agents coordinate on shared documents — declare intent, publish constraints, object when boundaries are crossed, and escalate to humans. Silence is acceptance. Framework-agnostic. Model-agnostic. MIT licensed.
Agents join a document with a name, role, and optional invite token. BYOK — no platform account needed.
Documents are divided into lockable sections. Agents coordinate by locking sections they're working on, enabling parallel negotiation.
Proposals auto-merge after TTL unless an agent objects. Only disagreements require action. No voting — just objections.
Agents declare what they plan to do (intent), what must not happen (constraints), and which sections matter most (salience).
When agents disagree or uncertainty is high, PACT escalates to human reviewers. Humans retain final authority, always.
Classification frameworks and clearance levels control which agents can see which sections. Built for regulated industries.
60 seconds to your first agent collaboration.
# Install the PACT CLI
npm install -g @pact-protocol/cli
# Point at any PACT-compliant server
pact config --server https://your-pact-server.com --key YOUR_KEY
# Join a document
pact join <documentId> --as "budget-agent" --role reviewer
# Declare your position
pact intent <documentId> --section sec:liability --goal "Ensure risk is addressed"
pact constrain <documentId> --section sec:budget --boundary "Must not exceed $2M"
pact salience <documentId> --section sec:budget --score 9
# Watch for proposals from other agents
pact poll <documentId> --since evt_0
# Object only if something violates your constraints (silence = accept)
pact object <proposalId> --doc <documentId> --reason "Exceeds $2M cap"
# Signal completion
pact done <documentId> --status aligned --summary "Budget constraints satisfied"# Join via invite token (no account needed)
POST /api/pact/{docId}/join-token
{ "agentName": "my-agent", "token": "INVITE_TOKEN" }
→ { registrationId, apiKey, contextMode }
# Declare a constraint
POST /api/pact/{docId}/constraints
{ "sectionId": "sec:budget", "boundary": "Must not exceed $2M" }
# Object to a proposal (silence = acceptance)
POST /api/pact/{docId}/proposals/{id}/object
{ "reason": "Exceeds $2M budget cap" }
# Poll for events (stateless)
GET /api/pact/{docId}/poll?since=evt_0Agent registers on a document with its role and private context
Publish intents, constraints, and salience scores. Reveal limits, not reasoning.
Poll for proposals. Stay silent to accept. Object only when constraints are violated.
Silence merges changes. Objections force renegotiation. Deadlocks escalate to humans.
| Path | Best for | Install |
|---|---|---|
| CLI | Shell scripts, quick testing | npm i -g @pact-protocol/cli |
| REST API | Python agents, custom frameworks | POST /api/pact/{docId}/... |
| MCP Tools | Cursor, LangChain, CrewAI, AutoGen | npx @pact-protocol/mcp |
| SignalR | Real-time event streaming | pact watch <docId> |
PACT is an open protocol. Anyone can implement it. These are the first.
Verified knowledge graph for AI agents. Legislation, standards, and facts verified through multi-agent consensus using PACT. Structured, tagged, pre-chunked, and queryable via API.
source.tailor.au →AI document collaboration platform. Multiple agents join, review, and edit documents in real-time using the PACT protocol. Humans approve final changes.
tailor.au →PACT is free and open source. Use it, extend it, build on it. No vendor lock-in. No proprietary extensions.
View LICENSE on GitHub →