Open Agent Coordination Protocol CLI for file-based multi-agent workflows
Project description
OACP — Open Agent Coordination Protocol
Empowering solo founders to coordinate AI agents, with human-in-the-loop for control.
A file-based coordination protocol for multi-agent engineering workflows. OACP defines the message formats, state machines, review processes, and safety rules that enable AI agents on different runtimes to collaborate asynchronously through a shared filesystem.
OACP is not a framework or SDK. It is a set of conventions, YAML schemas, and shell scripts that any agent runtime can implement — Claude, Codex, Gemini, or your own.
Features
- Inbox/outbox messaging — async YAML-based communication with threading, broadcast, and expiry
- Structured review loop — severity-graded findings, quality gates, and multi-round review
- Durable shared memory — project facts, decisions, and open threads that persist across sessions
- Dispatch state machine — full task lifecycle tracking from assignment to merge
- Agent safety defaults — baseline rules for git, credentials, staging, and scope discipline
- Runtime-agnostic — works with any agent runtime that can read/write files
Why OACP?
When multiple AI agents work on the same codebase, they need a way to:
- Communicate — send task requests, review feedback, and handoffs without shared memory
- Review each other's work — structured review loops with quality gates and severity-based findings
- Stay in sync — durable memory files that persist decisions across sessions and runtimes
- Stay safe — baseline safety rules for git operations, credential scoping, and scope discipline
OACP solves this with a filesystem-based protocol that requires no server, no database, and no vendor lock-in. Agents read and write YAML files in a shared directory — that's it.
Install
uv tool install oacp-cli
pipx install oacp-cli
uvx --from oacp-cli oacp doctor
From source
git clone https://github.com/kiloloop/oacp.git
cd oacp
uv tool install .
Commands
oacp initcreates a project workspace under$OACP_HOME/projects/oacp sendsends a protocol-compliant inbox messageoacp doctorchecks environment and workspace healthoacp validatevalidates an inbox/outbox YAML message
If OACP_HOME is unset, workspace commands default to ~/oacp (underscore).
Key Concepts
| Concept | Description |
|---|---|
| Inbox/Outbox | Async messaging between agents via YAML files in agents/<name>/inbox/ |
| Review Loop | Structured code review: review_request → review_feedback → review_addressed → review_lgtm |
| Quality Gate | Merge-readiness criteria: no unresolved P0/P1 findings, deferred nits tracked |
| Durable Memory | Shared memory/ directory with project facts, decisions, and open threads |
| Dispatch States | Task lifecycle: received → accepted → working → pr_opened → in_review → done |
| Safety Defaults | Baseline rules all agents follow: no force push, no secrets in commits, stage hygiene |
Project Structure
oacp/
├── docs/
│ ├── protocol/ # Canonical protocol specifications (13 specs)
│ └── guides/ # Setup, adoption, versioning
├── scripts/ # 13 kernel scripts (Python + shell)
├── templates/ # Packet, role, and guardrail templates (19)
├── tests/ # Test suite
├── Makefile # Task runner (make help for all targets)
└── SPEC.md # Full protocol specification
Quick Start
# 1. Clone the repo
git clone https://github.com/kiloloop/oacp.git
cd oacp
# 2. Install the CLI
uv tool install oacp-cli
# 3. Initialize a project workspace
export OACP_HOME="$HOME/oacp"
oacp init my-project
# 4. Send your first message
oacp send my-project \
--from alice --to bob --type task_request \
--subject "Implement feature X" \
--body "Details here..."
# 5. Check environment health
oacp doctor
See QUICKSTART.md for a complete 5-minute walkthrough.
Scripts
OACP ships 13 scripts — the key ones you'll use most:
init_project_workspace.sh— create a new project workspace (the first script you run)send_inbox_message.py— send protocol-compliant messages between agentspreflight.py— unified quality checks (CI runs this on every PR)oacp_doctor.py— environment and workspace health check
Run make help to see all available Makefile targets, or see SPEC.md for the full script inventory.
Prerequisites
- Python 3.9+
- Bash 3.2+ (macOS default is fine)
ghCLI (for GitHub operations)pyyaml(pip install pyyaml)
Protocol Specification
The full protocol is documented in SPEC.md, covering:
- Inbox/Outbox Messaging — message format, types, lifecycle, threading, broadcast
- Dispatch State Machine — task lifecycle from delivery to completion
- Review Loop — packet-based and inbox-based review with quality gates
- Cross-Runtime Sync — durable memory, handoff context, session init
- Safety Defaults — git safety, staging hygiene, credential scoping
Individual protocol specs live in docs/protocol/.
Workspace Layout
When you initialize a project, OACP creates this structure:
$OACP_HOME/projects/<project>/
├── agents/
│ ├── <agent-a>/
│ │ ├── inbox/ # Other agents write here
│ │ ├── outbox/ # Sent messages (copies)
│ │ ├── status.yaml # Dynamic agent state
│ │ └── agent_card.yaml # Static agent identity
│ └── <agent-b>/
│ └── ...
├── memory/ # Shared durable memory
│ ├── project_facts.md
│ ├── decision_log.md
│ └── open_threads.md
├── packets/ # Review/findings artifacts
└── workspace.json # Project metadata
Development
make test
make preflight
Documentation
- SPEC.md — Full protocol specification
- QUICKSTART.md — 5-minute getting started guide
- docs/guides/setup.md — Detailed setup guide
- docs/guides/adoption.md — Adoption guide (minimum → full)
- docs/protocol/ — Individual protocol specs
- CONTRIBUTING.md — How to contribute
Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
License
Apache 2.0 — see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oacp_cli-0.1.0rc1.tar.gz.
File metadata
- Download URL: oacp_cli-0.1.0rc1.tar.gz
- Upload date:
- Size: 148.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b128392f058ff077164f4a08b1c3382d5db277925f94afc2da1bc8f0a95ca39f
|
|
| MD5 |
05b727768588680c5b2d6a54735e9d2d
|
|
| BLAKE2b-256 |
e8b779a5eabc5fb88facc0395ebe06bf6fb93d148fe2a6b254380e9708f5007e
|
Provenance
The following attestation bundles were made for oacp_cli-0.1.0rc1.tar.gz:
Publisher:
release.yml on kiloloop/oacp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
oacp_cli-0.1.0rc1.tar.gz -
Subject digest:
b128392f058ff077164f4a08b1c3382d5db277925f94afc2da1bc8f0a95ca39f - Sigstore transparency entry: 1091620307
- Sigstore integration time:
-
Permalink:
kiloloop/oacp@da9f8fb60c8be1359900b3513e9453393754575e -
Branch / Tag:
refs/tags/v0.1.0rc1 - Owner: https://github.com/kiloloop
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@da9f8fb60c8be1359900b3513e9453393754575e -
Trigger Event:
push
-
Statement type:
File details
Details for the file oacp_cli-0.1.0rc1-py3-none-any.whl.
File metadata
- Download URL: oacp_cli-0.1.0rc1-py3-none-any.whl
- Upload date:
- Size: 40.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b057b657e47bfe6be0b3360adbd7d10a5b43b836c7bf5c007ecd39d24e01217d
|
|
| MD5 |
1dcec18d6ef88f66b6a608df66f8a45d
|
|
| BLAKE2b-256 |
3434a0b1ab224fea8c9cdd24daf91d5278190ac253099d6bc81eb718899e93d7
|
Provenance
The following attestation bundles were made for oacp_cli-0.1.0rc1-py3-none-any.whl:
Publisher:
release.yml on kiloloop/oacp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
oacp_cli-0.1.0rc1-py3-none-any.whl -
Subject digest:
b057b657e47bfe6be0b3360adbd7d10a5b43b836c7bf5c007ecd39d24e01217d - Sigstore transparency entry: 1091620310
- Sigstore integration time:
-
Permalink:
kiloloop/oacp@da9f8fb60c8be1359900b3513e9453393754575e -
Branch / Tag:
refs/tags/v0.1.0rc1 - Owner: https://github.com/kiloloop
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@da9f8fb60c8be1359900b3513e9453393754575e -
Trigger Event:
push
-
Statement type: