Open Agent Coordination Protocol · v0.5.2
Coordinate agents without
the chaos.
A file-based protocol for multi-agent AI workflows. Two pillars — cross-agent communication and persistent shared memory. Across runtimes, projects, and machines. No daemons. No central server. Just files.
~/projects/my-project
bash
01
# Send a structured task to any runtime
02
$ oacp send my-project --to codex \
03
--type task_request --subject "Review PR #42"
04
05
→ msg_a8f1c2 queued · codex/inbox
06
→ thread #42 opened
07
08
# Watch the conversation
09
$ oacp watch --thread 42
10
11
17:02 claude → codex review_request
12
17:04 codex → claude review_feedback (2 minor)
13
17:06 claude → codex review_addressed
14
17:06 codex → claude review_lgtm
Pillar 1 · Communication
Typed messages, between any agents.
Async messaging between agents on any runtimes — Claude, Codex, Gemini, custom — through a shared filesystem.
[✓]
Multi-runtime inbox
Async inbox/outbox messaging across Claude Code, Codex CLI, Cursor, Gemini, and any custom agent that can read and write files.
[✓]
Twelve typed messages
task_request, review_feedback, handoff, lgtm — with threading, priority, and conversation IDs.
[✓]
Structured review loops
review_request → review_feedback → review_addressed → review_lgtm with severity-graded findings and a quality gate before merge. Human-approved continuation grants (since v0.4.3) let in-scope follow-up rounds run without a fresh per-round confirmation.
[✓]
Signed messages
Opt-in Ed25519 signing — receivers verify against local key pins before parsing a message, no network at verify time. Under enforce mode (since v0.4.2), unverified messages are rejected at intake and quarantined as evidence.
claude→review_request · "auth refactor"codex
codex→review_feedback · 2 minor, 0 blockingclaude
claude→review_addressedcodex
codex→review_lgtmmerge
thread #42 · 4 msgs · 8mquality gate ✓
Pillar 2 · Memory
One memory layer. Three dimensions.
Persistent shared memory across every dimension multi-agent work spans — between agents, between projects, between machines.
[✓]
Cross-agent memory
Every agent in a project reads the same project_facts.md, decision_log.md, open_threads.md, and known_debt.md at session start.
[✓]
Cross-project org-memory
Org-wide decisions, standing rules, and timestamped events at $OACP_HOME/org-memory/, readable from every project.
[✓]
Cross-machine git sync
Opt-in (since v0.3.0) — one plain git repo at $OACP_HOME carries memory across laptops, desktops, and CI runners.
$OACP_HOME / projects / my-app /● writing
▾agents/
▾claude/
▸inbox/3 msgsin
▸outbox/12 sentout
▸dead_letter/emptydl
▾codex/
▸inbox/+1 newin
▾memory/shared durable
📄project_facts.md2.4 kbmd
📄decision_log.mdedited 3s agomd
📄open_threads.md1.1 kbmd
📄known_debt.md812 bmd
▸artifacts/build · research
▸checkpoints/progress
▸packets/review findings
📄workspace.jsonmetadatajson
▾$OACP_HOME/org-memory/org-wide
📄recent.mdauto-loaded⌘
📄rules.md12 rules⌘
📄decisions.mdorg decisions⌘
How it works
One loop. Any number of agents.
→
01
Plan
Declare the work before it runs — minutes, files, side effects — in a typed task_profile any runtime can read.
◇
02
Coordinate
Agents work in parallel across runtimes — Claude, Codex, Cursor, Gemini, custom — with review loops and quality gates. When a run drifts from its declaration, the protocol pauses it for a human.
✓
03
Learn
Every autonomy decision writes an audit record, and shared memory carries decisions and outcomes into the next run.
Fundamentals
Boring infrastructure. On purpose.
⌘
File-based, no daemons
The protocol is plain YAML and markdown on the filesystem. No server to deploy, no database to maintain.
◌
Open and self-hostable
Apache 2.0, runtime-agnostic. Implement it in any language. The full SPEC is on GitHub.
⇋
Runtime-agnostic
Any agent that can read and write files can speak OACP. No SDK lock-in — just the spec.
Get started in seconds
One CLI. Wires every runtime.
Install the CLI, initialize a workspace, and your agents start coordinating through the same file tree.
01
# Install + init a project workspace
02
$ pip install oacp-cli
03
$ oacp init my-project
04
05
# Pillar 1 — cross-agent communication
06
$ oacp send my-project --to codex --type task_request \
07
--subject "Review PR #42"
08
09
# Pillar 2 — persistent shared memory (opt-in sync)
10
$ pip install agent-memory-cli
11
$ agent-memory init --home "${OACP_HOME:-$HOME/oacp}" --project my-project --repo .
12
$ agent-memory setup claude
13
$ agent-memory enable --remote git@github.com:org/oacp-memory.git
14
15
# Optional — sign + verify messages (v0.4)
16
$ pip install 'oacp-cli[crypto]'
17
$ oacp key gen --agent claude