oacp-cli 0.2.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/CHANGELOG.md +17 -1
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/PKG-INFO +72 -83
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/QUICKSTART.md +6 -1
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/README.md +71 -82
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/SPEC.md +95 -25
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/guides/setup.md +34 -12
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/pyproject.toml +1 -1
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/handoff_schema.py +14 -5
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/oacp_doctor.py +2 -1
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/send_inbox_message.py +14 -1
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/write_event.py +21 -3
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_handoff_schema.py +20 -1
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_oacp_doctor.py +8 -5
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_send_inbox_message.py +24 -1
- oacp_cli-0.2.1/tests/test_write_event.py +146 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/.github/workflows/ci.yml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/.github/workflows/release.yml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/.gitignore +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/CONTRIBUTING.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/LICENSE +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/Makefile +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/SECURITY.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/guides/adoption.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/guides/doctor.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/guides/prompt_caching.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/guides/runtime_capability_matrix.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/guides/unified_skill_spec.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/guides/versioning.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/agent_profiles.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/agent_safety_defaults.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/credential_scoping.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/cross_runtime_sync.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/dispatch_states.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/inbox_outbox.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/mcp_integration.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/multi_agent_shared_workspace.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/org_memory.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/packet_states.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/review_loop.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/runtime_capabilities.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/session_init.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/skills_manifest.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/docs/protocol/task_negotiation.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/examples/quickstart/README.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/mcp_servers/oacp_coordinator.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/oacp/__init__.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/oacp/cli.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/_oacp_constants.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/_oacp_env.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/add_agent.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/agent_profile.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/check_quality_gate.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/codex_session_init.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/create_handoff_packet.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/init_org_memory.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/init_packet.sh +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/init_project_workspace.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/init_project_workspace.sh +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/memory_archive_common.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/memory_cli.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/normalize_findings.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/oacp_inbox.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/preflight.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/promote_to_archive.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/restore_from_archive.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/session_lifecycle_hooks.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/setup_runtime.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/update_workspace.sh +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/validate_agent_card.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/scripts/validate_message.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/agent_card.template.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/agent_profile.template.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/agent_status.template.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/checkpoint.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/claude/agents/role_agent.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/claude/rules/guardrail.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/findings_packet.template.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/github_actions_quality_gate.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/guardrails/coding_standards.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/guardrails/safe_commands.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/guardrails/secrets_rules.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/handoff_packet.template.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/inbox_message.template.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/manual_validation.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/merge_decision.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/org-memory/decisions.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/org-memory/events/.gitkeep +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/org-memory/recent.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/org-memory/rules.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/review_packet.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/roles/role_baseline.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/roles/role_definition.template.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/runtime_capabilities.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/skills_manifest.template.yaml +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/templates/test_packet.template.md +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_add_agent.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_agent_profile.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_codex_session_init.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_create_handoff_packet.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_github_workflows.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_init_project_workspace.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_memory_archive.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_oacp_cli.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_oacp_constants.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_oacp_coordinator.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_oacp_env.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_oacp_inbox.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_preflight.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_review_loop.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_session_lifecycle_hooks.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_setup_runtime.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_update_workspace.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_validate_agent_card.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_validate_message.py +0 -0
- {oacp_cli-0.2.0 → oacp_cli-0.2.1}/tests/test_workspace_discovery.py +0 -0
|
@@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.2.1] - 2026-03-22
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- `oacp doctor` no longer fails when `gh` CLI is not installed — `gh` is now optional (#78)
|
|
13
|
+
- `oacp send` relaxed handoff body schema validation to accept freeform content (#78)
|
|
14
|
+
- `oacp write-event --related` now handles JSON arrays correctly (#76)
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- README: refreshed command table with all v0.2.0 CLI commands, updated workspace layout diagram (#75, #77, #84)
|
|
19
|
+
- SPEC.md: synced with v0.2.0 — version header, org-memory section, kernel inventory with exposure column (#85)
|
|
20
|
+
- Onboarding docs: setup.md uses `pip install` as primary install, QUICKSTART.md adds `--agents`/`--repo` flags, CHANGELOG.md fixes `oacp memory archive` command name (#86)
|
|
21
|
+
|
|
8
22
|
## [0.2.0] - 2026-03-20
|
|
9
23
|
|
|
10
24
|
### Added
|
|
@@ -22,7 +36,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
22
36
|
|
|
23
37
|
### Added
|
|
24
38
|
|
|
25
|
-
- Memory archive layer with `oacp archive` CLI command for active/archive split (#62, #11)
|
|
39
|
+
- Memory archive layer with `oacp memory archive` CLI command for active/archive split (#62, #11)
|
|
26
40
|
- Declarative agent profiles with YAML schema and `oacp agent init|show|list` CLI commands (#52, #48)
|
|
27
41
|
- `known_debt.md` as standard memory file for tracking technical debt (#53, #32)
|
|
28
42
|
|
|
@@ -86,6 +100,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
86
100
|
- Checkout step in github-release workflow job (#19)
|
|
87
101
|
- Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
|
|
88
102
|
|
|
103
|
+
[0.2.1]: https://github.com/kiloloop/oacp/compare/v0.2.0...v0.2.1
|
|
104
|
+
[0.2.0]: https://github.com/kiloloop/oacp/compare/v0.1.9...v0.2.0
|
|
89
105
|
[0.1.9]: https://github.com/kiloloop/oacp/compare/v0.1.2...v0.1.9
|
|
90
106
|
[0.1.2]: https://github.com/kiloloop/oacp/compare/v0.1.1...v0.1.2
|
|
91
107
|
[0.1.1]: https://github.com/kiloloop/oacp/compare/v0.1.0...v0.1.1
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: oacp-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Open Agent Coordination Protocol CLI for file-based multi-agent workflows
|
|
5
5
|
Project-URL: Homepage, https://github.com/kiloloop/oacp
|
|
6
6
|
Project-URL: Repository, https://github.com/kiloloop/oacp
|
|
@@ -34,44 +34,37 @@ Description-Content-Type: text/markdown
|
|
|
34
34
|
|
|
35
35
|
> **[Try the quickstart →](examples/quickstart/)** — send your first message to an AI agent in 5 minutes.
|
|
36
36
|
|
|
37
|
-
**
|
|
37
|
+
**Coordinate agents without the chaos.**
|
|
38
38
|
|
|
39
|
-
A file-based
|
|
39
|
+
A file-based protocol for multi-agent engineering workflows. OACP defines the message formats, review processes, and safety rules that let AI agents on different runtimes collaborate through a shared filesystem. Not a framework or SDK — just conventions, YAML schemas, and scripts that any runtime can implement.
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
## Try it now
|
|
44
|
-
|
|
45
|
-
See if your machine is ready for multi-agent workflows — no project setup required:
|
|
41
|
+
## Quick Start
|
|
46
42
|
|
|
47
43
|
```bash
|
|
48
44
|
pip install oacp-cli
|
|
49
|
-
oacp
|
|
45
|
+
oacp init my-project --agents alice,bob
|
|
46
|
+
oacp send my-project --from alice --to bob --type task_request \
|
|
47
|
+
--subject "Implement feature X" --body "Details here..."
|
|
50
48
|
```
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
No issues found.
|
|
63
|
-
```
|
|
50
|
+
When running inside a configured agent runtime, `--from` can be omitted — OACP infers the sender from `OACP_AGENT`, `AGENT_NAME`, or the agent card. See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough.
|
|
51
|
+
|
|
52
|
+
### What you get
|
|
53
|
+
|
|
54
|
+
- **Inbox/outbox messaging** — async YAML messages with threading, broadcast, and expiry
|
|
55
|
+
- **Structured review loop** — severity-graded findings, quality gates, multi-round review
|
|
56
|
+
- **Inbox CLI** — `oacp inbox` lists pending messages across agents with table or `--json` output
|
|
57
|
+
- **Durable shared memory** — project facts, decisions, and known debt with active/archive split
|
|
58
|
+
- **Agent safety defaults** — baseline rules for git, credentials, and scope discipline
|
|
59
|
+
- **Runtime-agnostic** — works with any runtime that reads/writes files
|
|
64
60
|
|
|
65
|
-
|
|
61
|
+
## Try It Now
|
|
66
62
|
|
|
67
|
-
|
|
63
|
+
After installing, run `oacp doctor` to verify your environment is wired up:
|
|
68
64
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
- **Dispatch state machine** — full task lifecycle tracking from assignment to merge
|
|
73
|
-
- **Agent safety defaults** — baseline rules for git, credentials, staging, and scope discipline
|
|
74
|
-
- **Runtime-agnostic** — works with any agent runtime that can read/write files
|
|
65
|
+
```bash
|
|
66
|
+
oacp doctor
|
|
67
|
+
```
|
|
75
68
|
|
|
76
69
|
## Why OACP?
|
|
77
70
|
|
|
@@ -150,13 +143,33 @@ uv tool install .
|
|
|
150
143
|
|
|
151
144
|
## Commands
|
|
152
145
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
146
|
+
| Command | Description |
|
|
147
|
+
|---------|-------------|
|
|
148
|
+
| `oacp init` | Create a project workspace under `$OACP_HOME/projects/` |
|
|
149
|
+
| `oacp add-agent` | Add an agent to an existing project workspace |
|
|
150
|
+
| `oacp setup` | Generate runtime-specific config files (Claude, Codex, etc.) |
|
|
151
|
+
| `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
|
|
152
|
+
| `oacp inbox` | List pending messages across agents (table or `--json`) |
|
|
153
|
+
| `oacp memory` | Archive or restore project memory files |
|
|
154
|
+
| `oacp agent` | Manage global agent profiles (`init`, `show`, `list`) |
|
|
155
|
+
| `oacp org-memory` | Initialize org-level memory at `$OACP_HOME/org-memory/` |
|
|
156
|
+
| `oacp write-event` | Write an event to `org-memory/events/` |
|
|
157
|
+
| `oacp doctor` | Check environment and workspace health |
|
|
158
|
+
| `oacp validate` | Validate an inbox/outbox YAML message |
|
|
159
|
+
| `oacp --version` | Print the installed version |
|
|
160
|
+
|
|
161
|
+
<details>
|
|
162
|
+
<summary>Key flags</summary>
|
|
163
|
+
|
|
164
|
+
**`oacp send`**: `--in-reply-to`, `--expires`, `--body-file`, `--channel`, `--dry-run`, `--json`, `--quiet`
|
|
158
165
|
|
|
159
|
-
|
|
166
|
+
**`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
|
|
167
|
+
|
|
168
|
+
**`oacp memory`**: `oacp memory archive <project> <file>`, `oacp memory restore <project> <file>`
|
|
169
|
+
|
|
170
|
+
</details>
|
|
171
|
+
|
|
172
|
+
If `OACP_HOME` is unset, workspace commands default to `~/oacp`.
|
|
160
173
|
|
|
161
174
|
## Key Concepts
|
|
162
175
|
|
|
@@ -174,61 +187,24 @@ If `OACP_HOME` is unset, workspace commands default to `~/oacp` (underscore).
|
|
|
174
187
|
```
|
|
175
188
|
oacp/
|
|
176
189
|
├── docs/
|
|
177
|
-
│ ├── protocol/ # Canonical protocol specifications
|
|
190
|
+
│ ├── protocol/ # Canonical protocol specifications
|
|
178
191
|
│ └── guides/ # Setup, adoption, versioning
|
|
179
|
-
├── scripts/ #
|
|
180
|
-
├── templates/ # Packet, role, and guardrail templates
|
|
192
|
+
├── scripts/ # Kernel scripts (Python + shell)
|
|
193
|
+
├── templates/ # Packet, role, and guardrail templates
|
|
181
194
|
├── tests/ # Test suite
|
|
182
195
|
├── Makefile # Task runner (make help for all targets)
|
|
183
196
|
└── SPEC.md # Full protocol specification
|
|
184
197
|
```
|
|
185
198
|
|
|
186
|
-
##
|
|
199
|
+
## Related
|
|
187
200
|
|
|
188
|
-
|
|
189
|
-
# 1. Clone the repo
|
|
190
|
-
git clone https://github.com/kiloloop/oacp.git
|
|
191
|
-
cd oacp
|
|
192
|
-
|
|
193
|
-
# 2. Install the CLI
|
|
194
|
-
uv tool install oacp-cli
|
|
195
|
-
|
|
196
|
-
# 3. Initialize a project workspace
|
|
197
|
-
export OACP_HOME="$HOME/oacp"
|
|
198
|
-
oacp init my-project
|
|
199
|
-
|
|
200
|
-
# 4. Send your first message
|
|
201
|
-
oacp send my-project \
|
|
202
|
-
--from alice --to bob --type task_request \
|
|
203
|
-
--subject "Implement feature X" \
|
|
204
|
-
--body "Details here..."
|
|
205
|
-
|
|
206
|
-
# 5. Check environment health
|
|
207
|
-
oacp doctor
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
See [QUICKSTART.md](QUICKSTART.md) for a complete 5-minute walkthrough.
|
|
211
|
-
|
|
212
|
-
## Scripts
|
|
213
|
-
|
|
214
|
-
OACP ships kernel scripts — the key CLI commands you'll use most:
|
|
215
|
-
|
|
216
|
-
- **`oacp init`** — create a new project workspace (the first command you run)
|
|
217
|
-
- **`oacp add-agent`** — add an agent to an existing project workspace
|
|
218
|
-
- **`oacp memory`** — archive or restore project memory files
|
|
219
|
-
- **`oacp setup`** — generate runtime-specific config files (Claude, Codex, Gemini)
|
|
220
|
-
- **`oacp send`** — send protocol-compliant messages between agents
|
|
221
|
-
- **`oacp doctor`** — environment and workspace health check
|
|
222
|
-
- **`oacp validate`** — validate inbox/outbox YAML messages
|
|
223
|
-
|
|
224
|
-
Run `make help` to see all available Makefile targets, or see [SPEC.md](SPEC.md) for the full script inventory.
|
|
201
|
+
- **[agent-estimate](https://github.com/kiloloop/agent-estimate)** — Estimate how long agent tasks take. Pairs with OACP dispatch for task sizing.
|
|
225
202
|
|
|
226
203
|
## Prerequisites
|
|
227
204
|
|
|
228
205
|
- Python 3.9+
|
|
229
206
|
- Bash 3.2+ (macOS default is fine)
|
|
230
|
-
- `gh` CLI (for GitHub operations)
|
|
231
|
-
- `pyyaml` (`pip install pyyaml`)
|
|
207
|
+
- `gh` CLI (optional, for GitHub operations)
|
|
232
208
|
|
|
233
209
|
## Protocol Specification
|
|
234
210
|
|
|
@@ -244,16 +220,15 @@ Individual protocol specs live in [`docs/protocol/`](docs/protocol/).
|
|
|
244
220
|
|
|
245
221
|
## Workspace Layout
|
|
246
222
|
|
|
247
|
-
|
|
223
|
+
`oacp init` creates a project workspace with this structure:
|
|
248
224
|
|
|
249
225
|
```
|
|
250
226
|
$OACP_HOME/projects/<project>/
|
|
251
227
|
├── agents/
|
|
252
228
|
│ ├── <agent-a>/
|
|
253
|
-
│ │ ├── inbox/
|
|
254
|
-
│ │ ├── outbox/
|
|
255
|
-
│ │
|
|
256
|
-
│ │ └── agent_card.yaml # Static agent identity
|
|
229
|
+
│ │ ├── inbox/ # Other agents write here
|
|
230
|
+
│ │ ├── outbox/ # Sent messages (copies)
|
|
231
|
+
│ │ └── dead_letter/ # Undeliverable messages
|
|
257
232
|
│ └── <agent-b>/
|
|
258
233
|
│ └── ...
|
|
259
234
|
├── memory/ # Shared durable memory
|
|
@@ -262,10 +237,24 @@ $OACP_HOME/projects/<project>/
|
|
|
262
237
|
│ ├── open_threads.md
|
|
263
238
|
│ ├── known_debt.md
|
|
264
239
|
│ └── archive/
|
|
240
|
+
├── artifacts/ # Build/research artifacts
|
|
241
|
+
├── checkpoints/ # Progress checkpoints
|
|
242
|
+
├── logs/ # Agent session logs
|
|
243
|
+
├── merges/ # Merge decision records
|
|
265
244
|
├── packets/ # Review/findings artifacts
|
|
266
245
|
└── workspace.json # Project metadata
|
|
267
246
|
```
|
|
268
247
|
|
|
248
|
+
Optionally, `oacp org-memory init` creates org-level shared memory:
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
$OACP_HOME/org-memory/
|
|
252
|
+
├── recent.md # Always-loaded rolling summary
|
|
253
|
+
├── decisions.md # Org-wide decisions
|
|
254
|
+
├── rules.md # Standing conventions
|
|
255
|
+
└── events/ # Timestamped event entries
|
|
256
|
+
```
|
|
257
|
+
|
|
269
258
|
## Development
|
|
270
259
|
|
|
271
260
|
```bash
|
|
@@ -5,7 +5,6 @@ Get from zero to your first agent-to-agent message in 5 minutes.
|
|
|
5
5
|
## Prerequisites
|
|
6
6
|
|
|
7
7
|
- Python 3.9+ and Bash 3.2+
|
|
8
|
-
- `pip install pyyaml`
|
|
9
8
|
|
|
10
9
|
## 1. Set Up OACP Home
|
|
11
10
|
|
|
@@ -34,6 +33,12 @@ pipx install oacp-cli
|
|
|
34
33
|
|
|
35
34
|
Every project gets its own workspace with agent inboxes, shared memory, and packet directories.
|
|
36
35
|
|
|
36
|
+
```bash
|
|
37
|
+
oacp init my-first-project --agents claude,codex,gemini --repo /path/to/repo
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Or with defaults (agents: claude, codex, gemini):
|
|
41
|
+
|
|
37
42
|
```bash
|
|
38
43
|
oacp init my-first-project
|
|
39
44
|
```
|
|
@@ -8,44 +8,37 @@
|
|
|
8
8
|
|
|
9
9
|
> **[Try the quickstart →](examples/quickstart/)** — send your first message to an AI agent in 5 minutes.
|
|
10
10
|
|
|
11
|
-
**
|
|
11
|
+
**Coordinate agents without the chaos.**
|
|
12
12
|
|
|
13
|
-
A file-based
|
|
13
|
+
A file-based protocol for multi-agent engineering workflows. OACP defines the message formats, review processes, and safety rules that let AI agents on different runtimes collaborate through a shared filesystem. Not a framework or SDK — just conventions, YAML schemas, and scripts that any runtime can implement.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
## Try it now
|
|
18
|
-
|
|
19
|
-
See if your machine is ready for multi-agent workflows — no project setup required:
|
|
15
|
+
## Quick Start
|
|
20
16
|
|
|
21
17
|
```bash
|
|
22
18
|
pip install oacp-cli
|
|
23
|
-
oacp
|
|
19
|
+
oacp init my-project --agents alice,bob
|
|
20
|
+
oacp send my-project --from alice --to bob --type task_request \
|
|
21
|
+
--subject "Implement feature X" --body "Details here..."
|
|
24
22
|
```
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
No issues found.
|
|
37
|
-
```
|
|
24
|
+
When running inside a configured agent runtime, `--from` can be omitted — OACP infers the sender from `OACP_AGENT`, `AGENT_NAME`, or the agent card. See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough.
|
|
25
|
+
|
|
26
|
+
### What you get
|
|
27
|
+
|
|
28
|
+
- **Inbox/outbox messaging** — async YAML messages with threading, broadcast, and expiry
|
|
29
|
+
- **Structured review loop** — severity-graded findings, quality gates, multi-round review
|
|
30
|
+
- **Inbox CLI** — `oacp inbox` lists pending messages across agents with table or `--json` output
|
|
31
|
+
- **Durable shared memory** — project facts, decisions, and known debt with active/archive split
|
|
32
|
+
- **Agent safety defaults** — baseline rules for git, credentials, and scope discipline
|
|
33
|
+
- **Runtime-agnostic** — works with any runtime that reads/writes files
|
|
38
34
|
|
|
39
|
-
|
|
35
|
+
## Try It Now
|
|
40
36
|
|
|
41
|
-
|
|
37
|
+
After installing, run `oacp doctor` to verify your environment is wired up:
|
|
42
38
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
- **Dispatch state machine** — full task lifecycle tracking from assignment to merge
|
|
47
|
-
- **Agent safety defaults** — baseline rules for git, credentials, staging, and scope discipline
|
|
48
|
-
- **Runtime-agnostic** — works with any agent runtime that can read/write files
|
|
39
|
+
```bash
|
|
40
|
+
oacp doctor
|
|
41
|
+
```
|
|
49
42
|
|
|
50
43
|
## Why OACP?
|
|
51
44
|
|
|
@@ -124,13 +117,33 @@ uv tool install .
|
|
|
124
117
|
|
|
125
118
|
## Commands
|
|
126
119
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
120
|
+
| Command | Description |
|
|
121
|
+
|---------|-------------|
|
|
122
|
+
| `oacp init` | Create a project workspace under `$OACP_HOME/projects/` |
|
|
123
|
+
| `oacp add-agent` | Add an agent to an existing project workspace |
|
|
124
|
+
| `oacp setup` | Generate runtime-specific config files (Claude, Codex, etc.) |
|
|
125
|
+
| `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
|
|
126
|
+
| `oacp inbox` | List pending messages across agents (table or `--json`) |
|
|
127
|
+
| `oacp memory` | Archive or restore project memory files |
|
|
128
|
+
| `oacp agent` | Manage global agent profiles (`init`, `show`, `list`) |
|
|
129
|
+
| `oacp org-memory` | Initialize org-level memory at `$OACP_HOME/org-memory/` |
|
|
130
|
+
| `oacp write-event` | Write an event to `org-memory/events/` |
|
|
131
|
+
| `oacp doctor` | Check environment and workspace health |
|
|
132
|
+
| `oacp validate` | Validate an inbox/outbox YAML message |
|
|
133
|
+
| `oacp --version` | Print the installed version |
|
|
134
|
+
|
|
135
|
+
<details>
|
|
136
|
+
<summary>Key flags</summary>
|
|
137
|
+
|
|
138
|
+
**`oacp send`**: `--in-reply-to`, `--expires`, `--body-file`, `--channel`, `--dry-run`, `--json`, `--quiet`
|
|
132
139
|
|
|
133
|
-
|
|
140
|
+
**`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
|
|
141
|
+
|
|
142
|
+
**`oacp memory`**: `oacp memory archive <project> <file>`, `oacp memory restore <project> <file>`
|
|
143
|
+
|
|
144
|
+
</details>
|
|
145
|
+
|
|
146
|
+
If `OACP_HOME` is unset, workspace commands default to `~/oacp`.
|
|
134
147
|
|
|
135
148
|
## Key Concepts
|
|
136
149
|
|
|
@@ -148,61 +161,24 @@ If `OACP_HOME` is unset, workspace commands default to `~/oacp` (underscore).
|
|
|
148
161
|
```
|
|
149
162
|
oacp/
|
|
150
163
|
├── docs/
|
|
151
|
-
│ ├── protocol/ # Canonical protocol specifications
|
|
164
|
+
│ ├── protocol/ # Canonical protocol specifications
|
|
152
165
|
│ └── guides/ # Setup, adoption, versioning
|
|
153
|
-
├── scripts/ #
|
|
154
|
-
├── templates/ # Packet, role, and guardrail templates
|
|
166
|
+
├── scripts/ # Kernel scripts (Python + shell)
|
|
167
|
+
├── templates/ # Packet, role, and guardrail templates
|
|
155
168
|
├── tests/ # Test suite
|
|
156
169
|
├── Makefile # Task runner (make help for all targets)
|
|
157
170
|
└── SPEC.md # Full protocol specification
|
|
158
171
|
```
|
|
159
172
|
|
|
160
|
-
##
|
|
173
|
+
## Related
|
|
161
174
|
|
|
162
|
-
|
|
163
|
-
# 1. Clone the repo
|
|
164
|
-
git clone https://github.com/kiloloop/oacp.git
|
|
165
|
-
cd oacp
|
|
166
|
-
|
|
167
|
-
# 2. Install the CLI
|
|
168
|
-
uv tool install oacp-cli
|
|
169
|
-
|
|
170
|
-
# 3. Initialize a project workspace
|
|
171
|
-
export OACP_HOME="$HOME/oacp"
|
|
172
|
-
oacp init my-project
|
|
173
|
-
|
|
174
|
-
# 4. Send your first message
|
|
175
|
-
oacp send my-project \
|
|
176
|
-
--from alice --to bob --type task_request \
|
|
177
|
-
--subject "Implement feature X" \
|
|
178
|
-
--body "Details here..."
|
|
179
|
-
|
|
180
|
-
# 5. Check environment health
|
|
181
|
-
oacp doctor
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
See [QUICKSTART.md](QUICKSTART.md) for a complete 5-minute walkthrough.
|
|
185
|
-
|
|
186
|
-
## Scripts
|
|
187
|
-
|
|
188
|
-
OACP ships kernel scripts — the key CLI commands you'll use most:
|
|
189
|
-
|
|
190
|
-
- **`oacp init`** — create a new project workspace (the first command you run)
|
|
191
|
-
- **`oacp add-agent`** — add an agent to an existing project workspace
|
|
192
|
-
- **`oacp memory`** — archive or restore project memory files
|
|
193
|
-
- **`oacp setup`** — generate runtime-specific config files (Claude, Codex, Gemini)
|
|
194
|
-
- **`oacp send`** — send protocol-compliant messages between agents
|
|
195
|
-
- **`oacp doctor`** — environment and workspace health check
|
|
196
|
-
- **`oacp validate`** — validate inbox/outbox YAML messages
|
|
197
|
-
|
|
198
|
-
Run `make help` to see all available Makefile targets, or see [SPEC.md](SPEC.md) for the full script inventory.
|
|
175
|
+
- **[agent-estimate](https://github.com/kiloloop/agent-estimate)** — Estimate how long agent tasks take. Pairs with OACP dispatch for task sizing.
|
|
199
176
|
|
|
200
177
|
## Prerequisites
|
|
201
178
|
|
|
202
179
|
- Python 3.9+
|
|
203
180
|
- Bash 3.2+ (macOS default is fine)
|
|
204
|
-
- `gh` CLI (for GitHub operations)
|
|
205
|
-
- `pyyaml` (`pip install pyyaml`)
|
|
181
|
+
- `gh` CLI (optional, for GitHub operations)
|
|
206
182
|
|
|
207
183
|
## Protocol Specification
|
|
208
184
|
|
|
@@ -218,16 +194,15 @@ Individual protocol specs live in [`docs/protocol/`](docs/protocol/).
|
|
|
218
194
|
|
|
219
195
|
## Workspace Layout
|
|
220
196
|
|
|
221
|
-
|
|
197
|
+
`oacp init` creates a project workspace with this structure:
|
|
222
198
|
|
|
223
199
|
```
|
|
224
200
|
$OACP_HOME/projects/<project>/
|
|
225
201
|
├── agents/
|
|
226
202
|
│ ├── <agent-a>/
|
|
227
|
-
│ │ ├── inbox/
|
|
228
|
-
│ │ ├── outbox/
|
|
229
|
-
│ │
|
|
230
|
-
│ │ └── agent_card.yaml # Static agent identity
|
|
203
|
+
│ │ ├── inbox/ # Other agents write here
|
|
204
|
+
│ │ ├── outbox/ # Sent messages (copies)
|
|
205
|
+
│ │ └── dead_letter/ # Undeliverable messages
|
|
231
206
|
│ └── <agent-b>/
|
|
232
207
|
│ └── ...
|
|
233
208
|
├── memory/ # Shared durable memory
|
|
@@ -236,10 +211,24 @@ $OACP_HOME/projects/<project>/
|
|
|
236
211
|
│ ├── open_threads.md
|
|
237
212
|
│ ├── known_debt.md
|
|
238
213
|
│ └── archive/
|
|
214
|
+
├── artifacts/ # Build/research artifacts
|
|
215
|
+
├── checkpoints/ # Progress checkpoints
|
|
216
|
+
├── logs/ # Agent session logs
|
|
217
|
+
├── merges/ # Merge decision records
|
|
239
218
|
├── packets/ # Review/findings artifacts
|
|
240
219
|
└── workspace.json # Project metadata
|
|
241
220
|
```
|
|
242
221
|
|
|
222
|
+
Optionally, `oacp org-memory init` creates org-level shared memory:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
$OACP_HOME/org-memory/
|
|
226
|
+
├── recent.md # Always-loaded rolling summary
|
|
227
|
+
├── decisions.md # Org-wide decisions
|
|
228
|
+
├── rules.md # Standing conventions
|
|
229
|
+
└── events/ # Timestamped event entries
|
|
230
|
+
```
|
|
231
|
+
|
|
243
232
|
## Development
|
|
244
233
|
|
|
245
234
|
```bash
|