oacp-cli 0.2.1__tar.gz → 0.2.3__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.1 → oacp_cli-0.2.3}/CHANGELOG.md +23 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/PKG-INFO +5 -1
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/README.md +4 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/guides/runtime_capability_matrix.md +53 -42
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/dispatch_states.yaml +1 -1
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/oacp/cli.py +3 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/pyproject.toml +2 -1
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/codex_session_init.py +2 -2
- oacp_cli-0.2.3/scripts/oacp_watch.py +482 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_oacp_cli.py +13 -0
- oacp_cli-0.2.3/tests/test_oacp_watch.py +556 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/.github/workflows/ci.yml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/.github/workflows/release.yml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/.gitignore +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/CONTRIBUTING.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/LICENSE +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/Makefile +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/QUICKSTART.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/SECURITY.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/SPEC.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/guides/adoption.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/guides/doctor.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/guides/prompt_caching.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/guides/setup.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/guides/unified_skill_spec.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/guides/versioning.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/agent_profiles.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/agent_safety_defaults.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/credential_scoping.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/cross_runtime_sync.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/inbox_outbox.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/mcp_integration.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/multi_agent_shared_workspace.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/org_memory.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/packet_states.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/review_loop.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/runtime_capabilities.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/session_init.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/skills_manifest.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/docs/protocol/task_negotiation.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/examples/quickstart/README.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/mcp_servers/oacp_coordinator.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/oacp/__init__.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/_oacp_constants.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/_oacp_env.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/add_agent.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/agent_profile.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/check_quality_gate.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/create_handoff_packet.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/handoff_schema.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/init_org_memory.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/init_packet.sh +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/init_project_workspace.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/init_project_workspace.sh +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/memory_archive_common.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/memory_cli.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/normalize_findings.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/oacp_doctor.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/oacp_inbox.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/preflight.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/promote_to_archive.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/restore_from_archive.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/send_inbox_message.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/session_lifecycle_hooks.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/setup_runtime.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/update_workspace.sh +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/validate_agent_card.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/validate_message.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/scripts/write_event.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/agent_card.template.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/agent_profile.template.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/agent_status.template.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/checkpoint.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/claude/agents/role_agent.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/claude/rules/guardrail.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/findings_packet.template.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/github_actions_quality_gate.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/guardrails/coding_standards.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/guardrails/safe_commands.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/guardrails/secrets_rules.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/handoff_packet.template.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/inbox_message.template.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/manual_validation.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/merge_decision.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/org-memory/decisions.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/org-memory/events/.gitkeep +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/org-memory/recent.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/org-memory/rules.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/review_packet.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/roles/role_baseline.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/roles/role_definition.template.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/runtime_capabilities.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/skills_manifest.template.yaml +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/templates/test_packet.template.md +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_add_agent.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_agent_profile.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_codex_session_init.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_create_handoff_packet.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_github_workflows.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_handoff_schema.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_init_project_workspace.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_memory_archive.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_oacp_constants.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_oacp_coordinator.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_oacp_doctor.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_oacp_env.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_oacp_inbox.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_preflight.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_review_loop.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_send_inbox_message.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_session_lifecycle_hooks.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_setup_runtime.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_update_workspace.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_validate_agent_card.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_validate_message.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_workspace_discovery.py +0 -0
- {oacp_cli-0.2.1 → oacp_cli-0.2.3}/tests/test_write_event.py +0 -0
|
@@ -5,6 +5,27 @@ 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.3] - 2026-04-26
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- `oacp watch` defaults are now notification-friendly: existing inbox messages are no longer replayed on the first scan for a target, and `message_archived` events are suppressed by default. Pass `--since=epoch` to restore replay and `--show-archived` to re-enable archive events. Reduces noise for `Monitor` and `oacp watch` consumers.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- `oacp watch --since=<spec>` — controls the first-run baseline cutoff. Accepts `now` (default), `epoch`, relative durations (`30s`, `5m`, `2h`, `7d`), or ISO 8601 timestamps. Only applies on first run for a target (no state file yet).
|
|
17
|
+
- `oacp watch --show-archived` — opt-in flag to emit `message_archived` events. Useful for observer agents tracking another agent's inbox; disabled by default because the watching agent's own deletes are self-loops.
|
|
18
|
+
|
|
19
|
+
## [0.2.2] - 2026-04-17
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- `oacp watch` — monitor-friendly inbox/outbox watcher with structured output and partial-progress preservation on errors
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- Docs: refreshed cross-runtime capability matrix and public-skill parity framing
|
|
28
|
+
|
|
8
29
|
## [0.2.1] - 2026-03-22
|
|
9
30
|
|
|
10
31
|
### Fixed
|
|
@@ -100,6 +121,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
100
121
|
- Checkout step in github-release workflow job (#19)
|
|
101
122
|
- Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
|
|
102
123
|
|
|
124
|
+
[0.2.3]: https://github.com/kiloloop/oacp/compare/v0.2.2...v0.2.3
|
|
125
|
+
[0.2.2]: https://github.com/kiloloop/oacp/compare/v0.2.1...v0.2.2
|
|
103
126
|
[0.2.1]: https://github.com/kiloloop/oacp/compare/v0.2.0...v0.2.1
|
|
104
127
|
[0.2.0]: https://github.com/kiloloop/oacp/compare/v0.1.9...v0.2.0
|
|
105
128
|
[0.1.9]: https://github.com/kiloloop/oacp/compare/v0.1.2...v0.1.9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: oacp-cli
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
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
|
|
@@ -54,6 +54,7 @@ When running inside a configured agent runtime, `--from` can be omitted — OACP
|
|
|
54
54
|
- **Inbox/outbox messaging** — async YAML messages with threading, broadcast, and expiry
|
|
55
55
|
- **Structured review loop** — severity-graded findings, quality gates, multi-round review
|
|
56
56
|
- **Inbox CLI** — `oacp inbox` lists pending messages across agents with table or `--json` output
|
|
57
|
+
- **Watch CLI** — `oacp watch` emits inbox delta events for Claude Monitor or shell loops
|
|
57
58
|
- **Durable shared memory** — project facts, decisions, and known debt with active/archive split
|
|
58
59
|
- **Agent safety defaults** — baseline rules for git, credentials, and scope discipline
|
|
59
60
|
- **Runtime-agnostic** — works with any runtime that reads/writes files
|
|
@@ -150,6 +151,7 @@ uv tool install .
|
|
|
150
151
|
| `oacp setup` | Generate runtime-specific config files (Claude, Codex, etc.) |
|
|
151
152
|
| `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
|
|
152
153
|
| `oacp inbox` | List pending messages across agents (table or `--json`) |
|
|
154
|
+
| `oacp watch` | Emit inbox delta events for one agent across selected projects |
|
|
153
155
|
| `oacp memory` | Archive or restore project memory files |
|
|
154
156
|
| `oacp agent` | Manage global agent profiles (`init`, `show`, `list`) |
|
|
155
157
|
| `oacp org-memory` | Initialize org-level memory at `$OACP_HOME/org-memory/` |
|
|
@@ -163,6 +165,8 @@ uv tool install .
|
|
|
163
165
|
|
|
164
166
|
**`oacp send`**: `--in-reply-to`, `--expires`, `--body-file`, `--channel`, `--dry-run`, `--json`, `--quiet`
|
|
165
167
|
|
|
168
|
+
**`oacp watch`**: `--agent`, repeatable `--project`, `--all-projects`, `--json`, `--since` (default `now`), `--show-archived`
|
|
169
|
+
|
|
166
170
|
**`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
|
|
167
171
|
|
|
168
172
|
**`oacp memory`**: `oacp memory archive <project> <file>`, `oacp memory restore <project> <file>`
|
|
@@ -28,6 +28,7 @@ When running inside a configured agent runtime, `--from` can be omitted — OACP
|
|
|
28
28
|
- **Inbox/outbox messaging** — async YAML messages with threading, broadcast, and expiry
|
|
29
29
|
- **Structured review loop** — severity-graded findings, quality gates, multi-round review
|
|
30
30
|
- **Inbox CLI** — `oacp inbox` lists pending messages across agents with table or `--json` output
|
|
31
|
+
- **Watch CLI** — `oacp watch` emits inbox delta events for Claude Monitor or shell loops
|
|
31
32
|
- **Durable shared memory** — project facts, decisions, and known debt with active/archive split
|
|
32
33
|
- **Agent safety defaults** — baseline rules for git, credentials, and scope discipline
|
|
33
34
|
- **Runtime-agnostic** — works with any runtime that reads/writes files
|
|
@@ -124,6 +125,7 @@ uv tool install .
|
|
|
124
125
|
| `oacp setup` | Generate runtime-specific config files (Claude, Codex, etc.) |
|
|
125
126
|
| `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
|
|
126
127
|
| `oacp inbox` | List pending messages across agents (table or `--json`) |
|
|
128
|
+
| `oacp watch` | Emit inbox delta events for one agent across selected projects |
|
|
127
129
|
| `oacp memory` | Archive or restore project memory files |
|
|
128
130
|
| `oacp agent` | Manage global agent profiles (`init`, `show`, `list`) |
|
|
129
131
|
| `oacp org-memory` | Initialize org-level memory at `$OACP_HOME/org-memory/` |
|
|
@@ -137,6 +139,8 @@ uv tool install .
|
|
|
137
139
|
|
|
138
140
|
**`oacp send`**: `--in-reply-to`, `--expires`, `--body-file`, `--channel`, `--dry-run`, `--json`, `--quiet`
|
|
139
141
|
|
|
142
|
+
**`oacp watch`**: `--agent`, repeatable `--project`, `--all-projects`, `--json`, `--since` (default `now`), `--show-archived`
|
|
143
|
+
|
|
140
144
|
**`oacp doctor`**: `--fix` (auto-fix safe issues), `--json`, `-o/--output`
|
|
141
145
|
|
|
142
146
|
**`oacp memory`**: `oacp memory archive <project> <file>`, `oacp memory restore <project> <file>`
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
# Cross-Runtime Parity Matrix
|
|
2
2
|
|
|
3
|
-
**Date**: 2026-
|
|
3
|
+
**Date**: 2026-04-24
|
|
4
4
|
|
|
5
|
-
This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gemini), compiled from each runtime's self-report. Use this as a reference when deciding which agent to assign for a given task.
|
|
5
|
+
This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gemini), compiled from each runtime's self-report and current runtime changelogs. Use this as a reference when deciding which agent to assign for a given task.
|
|
6
|
+
|
|
7
|
+
Claude was last checked against Claude Code `v2.1.118`.
|
|
8
|
+
|
|
9
|
+
Codex was last checked against app update `26.415`, CLI `0.123.0`, and OpenAI's GPT-5.5 launch note from 2026-04-23.
|
|
6
10
|
|
|
7
11
|
---
|
|
8
12
|
|
|
@@ -13,56 +17,53 @@ This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gem
|
|
|
13
17
|
| Spawn background tasks | Yes — Task tool + Bash `run_in_background` | Yes — shell background processes | Yes — `run_command` async mode |
|
|
14
18
|
| Spawn subagents | Yes — typed agents (Explore, Plan, general-purpose, code-reviewer, etc.) | Yes — native `spawn_agent` lifecycle with `default`, `explorer`, and `worker` agents | Partial — `browser_subagent` only |
|
|
15
19
|
| Parallel agent teams | Yes — TeamCreate, task lists, SendMessage, broadcast | Partial — parallel spawned agents are supported, but there is no team/task-list primitive | No — parallel tool calls but no independent agent instances |
|
|
16
|
-
| MCP tools | Yes — extensible via MCP servers |
|
|
20
|
+
| MCP tools | Yes — extensible via MCP servers | Yes — MCP/plugin support with `/mcp verbose` diagnostics; configuration-dependent | Yes — MCP server support |
|
|
17
21
|
| Web search | Yes — native WebSearch tool | Yes — web search/fetch tools | Yes — native `search_web` tool |
|
|
18
|
-
| Browser interaction | Partial — WebFetch (read-only, HTML→markdown) | Partial — web
|
|
19
|
-
| File system access | Sandboxed — configurable read/write allowlists | Policy-dependent per session
|
|
22
|
+
| Browser interaction | Partial — WebFetch (read-only, HTML→markdown) | Partial — web tools plus early in-app browser for local/public pages without sign-in | Yes — full browser control (click, type, navigate, screenshot, video) |
|
|
23
|
+
| File system access | Sandboxed — configurable read/write allowlists | Policy-dependent per session; sandbox profiles can include deny-read rules | Full — unrestricted |
|
|
20
24
|
| Git operations | Yes — via Bash (may need sandbox configuration) | Yes — native | Yes — via shell |
|
|
21
25
|
| GitHub CLI (gh) | Yes — via Bash (may need sandbox configuration) | Yes — authenticated | Yes — native |
|
|
22
|
-
| Session memory | Strong — auto-loaded MEMORY.md + optional MCP memory | Partial —
|
|
23
|
-
| Interactive mode | Yes — CLI chat with permissions, plan mode | Yes — desktop app
|
|
24
|
-
| Context window | ~
|
|
25
|
-
| Cost model | Token-based, visible in statusline | Not surfaced
|
|
26
|
-
| Sandbox restrictions | Yes — configurable allowlists | Session-dependent
|
|
26
|
+
| Session memory | Strong — auto-loaded MEMORY.md + optional MCP memory | Partial — app memories where available plus OACP file memory; app memories are not protocol SSOT | Partial — Knowledge Items (not directly writable), conversation logs |
|
|
27
|
+
| Interactive mode | Yes — CLI chat with permissions, plan mode | Yes — desktop app and CLI/TUI, including Plan Mode and side conversations | Yes — chat with task UI, artifacts |
|
|
28
|
+
| Context window | ~1M with Opus 4.7 (auto-compaction extends indefinitely) | Model-dependent; GPT-5.5 in Codex is documented at 400K, with no auto-compaction guarantee | ~1M tokens |
|
|
29
|
+
| Cost model | Token-based, visible in statusline | Not surfaced per session; GPT-5.5 Fast mode trades 2.5x cost for 1.5x token generation speed | Token-based |
|
|
30
|
+
| Sandbox restrictions | Yes — configurable allowlists | Session-dependent; supports deny-read policies, isolated `codex exec`, and remote sandbox requirements | None — full system access |
|
|
27
31
|
|
|
28
32
|
---
|
|
29
33
|
|
|
30
|
-
## 2.
|
|
34
|
+
## 2. Distinctive Capabilities
|
|
31
35
|
|
|
32
36
|
| Capability | Runtime | Details |
|
|
33
37
|
| -------------------------------- | ------------- | ---------------------------------------------------------------------------- |
|
|
34
38
|
| Typed subagent orchestration | Claude | Multiple agent types with scoped tools and model selection |
|
|
35
39
|
| Team coordination primitive | Claude | TeamCreate + task lists + assignment + broadcast + shutdown |
|
|
36
|
-
| Plan mode | Claude
|
|
40
|
+
| Plan mode | Claude, Codex | Claude has structured explore → plan → approve → implement; Codex CLI can move from planning into fresh-context implementation |
|
|
37
41
|
| Auto-compaction | Claude | Context auto-compresses, enabling unlimited session length |
|
|
38
42
|
| Cross-session semantic search | Claude | MCP-based searchable memory (optional) |
|
|
39
43
|
| Browser automation (full) | Gemini | Click, type, navigate, screenshot, WebP video recording |
|
|
40
|
-
|
|
|
44
|
+
| GPT-5.5 model availability | Codex | Available in Codex for Plus, Pro, Business, Enterprise, Edu, and Go plans with a 400K context window |
|
|
45
|
+
| Image generation | Codex, Gemini | Codex CLI image generation is enabled by default; Gemini has native `generate_image` |
|
|
41
46
|
| URL content reading (no browser) | Gemini | `read_url_content` fetches HTML→markdown or PDF directly |
|
|
42
47
|
| Code outline navigation | Gemini | `view_file_outline`, `view_code_item` for structured exploration |
|
|
43
48
|
| PTY / terminal stdin | Codex, Gemini | Codex: native PTY; Gemini: `send_command_input` (Claude lacks stdin support) |
|
|
44
49
|
| `apply_patch` editing | Codex | Grammar-based file edits |
|
|
45
|
-
|
|
|
50
|
+
| App-level computer use | Codex | macOS app, simulator, and GUI-only workflows; unavailable in EEA, UK, and Switzerland at launch |
|
|
51
|
+
| App-level artifact review | Codex | Sidebar preview for generated PDFs, spreadsheets, documents, and presentations |
|
|
52
|
+
| App-level PR review | Codex | PR sidebar can inspect changed files, review comments, and follow-up fixes |
|
|
46
53
|
|
|
47
54
|
---
|
|
48
55
|
|
|
49
|
-
## 3.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
| `check-inbox` | Working | Working |
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
60
|
-
| `worktree-workflow` | Working | N/A | N/A |
|
|
61
|
-
| `send-message` | Working | N/A | N/A |
|
|
62
|
-
| `claude-mem` skills | Working | N/A | N/A |
|
|
63
|
-
| `gh-address-comments` | N/A | Untested | N/A |
|
|
64
|
-
| `lint-and-validate` | N/A | Untested | N/A |
|
|
65
|
-
| `beads` | N/A | Untested | N/A |
|
|
56
|
+
## 3. Public OACP Skills Coverage
|
|
57
|
+
|
|
58
|
+
Scope: skills shipped in [`kiloloop/oacp-skills`](https://github.com/kiloloop/oacp-skills). Private/local skills (debrief, sync, blitz, team-stats, worktree-workflow, send-message, etc.) are intentionally not tracked here — this table is meant as a cross-runtime parity signal for distributable skills only.
|
|
59
|
+
|
|
60
|
+
| Skill | Claude | Codex | Gemini |
|
|
61
|
+
| ---------------------- | ------- | -------- | ------------ |
|
|
62
|
+
| `check-inbox` | Working | Working | Not packaged |
|
|
63
|
+
| `doctor` | Working | Working | Not packaged |
|
|
64
|
+
| `review-loop-reviewer` | Working | Working | Not packaged |
|
|
65
|
+
| `review-loop-author` | Working | Working | Not packaged |
|
|
66
|
+
| `self-improve` | Working | Working | Not packaged |
|
|
66
67
|
|
|
67
68
|
---
|
|
68
69
|
|
|
@@ -70,9 +71,9 @@ This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gem
|
|
|
70
71
|
|
|
71
72
|
| Dimension | Claude | Codex | Gemini |
|
|
72
73
|
| --------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------------------------- |
|
|
73
|
-
| Best at | Orchestration, multi-agent teams, persistent memory, plan-then-execute | Terminal-native execution, fast iterative patching, protocol discipline | Web research, browser automation, visual verification, large context |
|
|
74
|
-
| Ideal task type | Team coordination, complex multi-file refactors, long-running sessions | Shell-heavy workflows, targeted file edits, deterministic scripts
|
|
75
|
-
| Cost profile | Flexible (haiku subagents for cheap tasks, opus for complex) |
|
|
74
|
+
| Best at | Orchestration, multi-agent teams, persistent memory, plan-then-execute | Terminal-native execution, GPT-5.5 agentic coding, fast iterative patching, plan-to-implementation handoff, app-assisted PR/artifact review, protocol discipline | Web research, browser automation, visual verification, large context |
|
|
75
|
+
| Ideal task type | Team coordination, complex multi-file refactors, long-running sessions | Shell-heavy workflows, long-horizon coding, targeted file edits, deterministic scripts, PR follow-up, artifact review, CLI planning passes | External research, UI testing, document review, MCP integrations |
|
|
76
|
+
| Cost profile | Flexible (haiku subagents for cheap tasks, opus for complex) | Per-session cost not visible; GPT-5.5 is described as more token-efficient than GPT-5.4 for Codex tasks | Token-based, web search has additional costs |
|
|
76
77
|
|
|
77
78
|
---
|
|
78
79
|
|
|
@@ -81,12 +82,12 @@ This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gem
|
|
|
81
82
|
| Limitation | Claude | Codex | Gemini |
|
|
82
83
|
| ----------------------------- | ----------------------------- | -------------------------------------------------------------- | ---------------------- |
|
|
83
84
|
| No subagents | — | Yes | Partial (browser only) |
|
|
84
|
-
| No browser automation | Yes (read-only) | Partial
|
|
85
|
-
| No image generation | Yes |
|
|
86
|
-
| No persistent writable memory | — | Partial (
|
|
85
|
+
| No browser automation | Yes (read-only) | Partial (in-app browser is not full automation and excludes sign-in flows) | — |
|
|
86
|
+
| No image generation | Yes | — | — |
|
|
87
|
+
| No persistent writable memory | — | Partial (app memories are not a replacement for OACP durable memory) | Yes |
|
|
87
88
|
| Sandbox friction | Yes (configurable) | Session-dependent | — |
|
|
88
89
|
| No team primitive | — | Yes | Yes |
|
|
89
|
-
| Context limits | Auto-compaction mitigates |
|
|
90
|
+
| Context limits | Auto-compaction mitigates | Model-dependent; GPT-5.5 in Codex is 400K, but there is no documented auto-compaction behavior | Large but finite |
|
|
90
91
|
| No terminal stdin | Yes | — | — |
|
|
91
92
|
| Cost not surfaced | — | Yes | — |
|
|
92
93
|
|
|
@@ -101,9 +102,9 @@ These are the highest-impact gaps where one runtime's limitation blocks effectiv
|
|
|
101
102
|
| No team orchestration | Codex, Gemini | Cannot run parallel agent teams | Agent cards — let runtimes discover and delegate to capable peers |
|
|
102
103
|
| Memory asymmetry | Codex (partial), Gemini (KIs only) | Cross-session context degrades without MEMORY.md equivalent | Standardize memory protocol; each runtime implements its own persistence layer |
|
|
103
104
|
| Sandbox blocks git/gh | Claude | Every git/gh call needs sandbox configuration | Configure sandbox allowlists or disable sandbox for specific commands |
|
|
104
|
-
|
|
|
105
|
+
| Full browser automation gap | Claude, Codex | Claude is read-only; Codex has early browser review but not full automation or sign-in flows | Delegate full browser tasks to Gemini; use Codex in-app browser for local/public page review |
|
|
105
106
|
| Reviewer cost | All (especially Claude) | High cost for single PR review with polling pattern | Stateless reviewer rounds — one round per invocation |
|
|
106
|
-
|
|
|
107
|
+
| Public skill coverage | Gemini | `kiloloop/oacp-skills` ships `claude/` and `codex/` variants for all 5 public skills; no `gemini/` variants — Gemini users must rely on convention-based adoption | Add `gemini/` variants to each public skill, or document the convention-based pattern as a first-class install path |
|
|
107
108
|
|
|
108
109
|
---
|
|
109
110
|
|
|
@@ -112,16 +113,26 @@ These are the highest-impact gaps where one runtime's limitation blocks effectiv
|
|
|
112
113
|
| Dimension | Claude | Codex | Gemini |
|
|
113
114
|
| ---------------------------- | -------------------------------- | ------------------------------------------ | --------------------------------------------- |
|
|
114
115
|
| Max parallel tool calls | ~10+ | Yes (parallel independent calls) | ~10 (practical) |
|
|
116
|
+
| Side conversations | No | Yes (`/side` in CLI/TUI) | No |
|
|
115
117
|
| Hooks system | Yes (pre/post tool call hooks) | No | No |
|
|
118
|
+
| Automation scheduling | Yes (`CronCreate`, `ScheduleWakeup`, `/loop`, `/schedule` skills) | Yes (desktop app thread automations wake a thread on a schedule, with user request) | No |
|
|
116
119
|
| Notebook editing | Yes (NotebookEdit tool) | No | No |
|
|
117
120
|
| PDF reading | Yes (max 20 pages/request) | No native tool | Via `read_url_content` |
|
|
118
121
|
| Image reading (multimodal) | Yes | Yes (desktop app local image/view support) | Yes |
|
|
119
|
-
| Artifact system | No |
|
|
122
|
+
| Artifact system | No | Yes (sidebar preview for generated files) | Yes (task.md, implementation plans) |
|
|
120
123
|
| Video recording | No | No | Yes (WebP via browser) |
|
|
124
|
+
| Image generation | No | Yes (enabled by default in CLI) | Yes |
|
|
125
|
+
| MCP diagnostics | Partial | Yes (`/mcp verbose`) | Partial |
|
|
121
126
|
| Multi-file editing primitive | Edit tool (one file at a time) | `apply_patch` (one file) | `multi_replace_file_content` (non-contiguous) |
|
|
122
127
|
| Workflow file format | SKILL.md with YAML frontmatter | SKILL.md with YAML frontmatter | Markdown with YAML frontmatter |
|
|
123
128
|
| Policy visibility at runtime | Partial (sandbox config visible) | Yes (session policy in system context) | Yes (`SafeToAutoRun` flags) |
|
|
124
|
-
| Long-running shell sessions | Bash tool (no stdin) | Yes (PTY + stdin)
|
|
129
|
+
| Long-running shell sessions | Bash tool (no stdin) | Yes (PTY + stdin; multiple terminals in app) | Yes (`send_command_input`) |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 8. Source Notes
|
|
134
|
+
|
|
135
|
+
- GPT-5.5 Codex availability, 400K context, Fast mode, token-efficiency, and API timing come from OpenAI's 2026-04-23 release note: <https://openai.com/index/introducing-gpt-5-5/>.
|
|
125
136
|
|
|
126
137
|
---
|
|
127
138
|
|
|
@@ -206,7 +206,7 @@ agent_transitions:
|
|
|
206
206
|
dispatcher_states:
|
|
207
207
|
sent:
|
|
208
208
|
description: "Dispatch message written to agent inbox"
|
|
209
|
-
trigger: "
|
|
209
|
+
trigger: "`oacp send` completes"
|
|
210
210
|
|
|
211
211
|
ackd:
|
|
212
212
|
description: "Agent acknowledged receipt"
|
|
@@ -23,6 +23,7 @@ Commands:
|
|
|
23
23
|
add-agent Add an agent to an existing project workspace
|
|
24
24
|
agent Manage global agent profiles (init, show, list)
|
|
25
25
|
inbox List pending inbox messages
|
|
26
|
+
watch Emit inbox delta events for Monitor-friendly polling
|
|
26
27
|
memory Archive or restore project memory files
|
|
27
28
|
setup Generate runtime-specific config files in a repo
|
|
28
29
|
send Send a protocol-compliant inbox message
|
|
@@ -36,6 +37,7 @@ Examples:
|
|
|
36
37
|
oacp init my-project --agents claude,codex
|
|
37
38
|
oacp add-agent my-project alice --runtime claude
|
|
38
39
|
oacp inbox my-project --agent claude
|
|
40
|
+
oacp watch --agent claude --project my-project --json
|
|
39
41
|
oacp memory archive my-project research_notes.md
|
|
40
42
|
oacp setup claude --project my-project
|
|
41
43
|
oacp send my-project --to iris --type notification --subject "Done" --body "Completed"
|
|
@@ -50,6 +52,7 @@ SCRIPT_NAMES = {
|
|
|
50
52
|
"add-agent": "add_agent.py",
|
|
51
53
|
"agent": "agent_profile.py",
|
|
52
54
|
"inbox": "oacp_inbox.py",
|
|
55
|
+
"watch": "oacp_watch.py",
|
|
53
56
|
"memory": "memory_cli.py",
|
|
54
57
|
"setup": "setup_runtime.py",
|
|
55
58
|
"send": "send_inbox_message.py",
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "oacp-cli"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.3"
|
|
8
8
|
description = "Open Agent Coordination Protocol CLI for file-based multi-agent workflows"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -61,6 +61,7 @@ packages = ["oacp"]
|
|
|
61
61
|
"scripts/add_agent.py" = "oacp/_scripts/add_agent.py"
|
|
62
62
|
"scripts/agent_profile.py" = "oacp/_scripts/agent_profile.py"
|
|
63
63
|
"scripts/oacp_inbox.py" = "oacp/_scripts/oacp_inbox.py"
|
|
64
|
+
"scripts/oacp_watch.py" = "oacp/_scripts/oacp_watch.py"
|
|
64
65
|
"scripts/memory_cli.py" = "oacp/_scripts/memory_cli.py"
|
|
65
66
|
"scripts/memory_archive_common.py" = "oacp/_scripts/memory_archive_common.py"
|
|
66
67
|
"scripts/promote_to_archive.py" = "oacp/_scripts/promote_to_archive.py"
|
|
@@ -91,9 +91,9 @@ def _project_name_from_workspace_marker(cwd: Path, name: str) -> Optional[str]:
|
|
|
91
91
|
|
|
92
92
|
def _detect_project_name(cwd: Path) -> Optional[str]:
|
|
93
93
|
for resolver in (
|
|
94
|
-
lambda: _project_name_from_agent_hub(cwd),
|
|
95
94
|
lambda: _project_name_from_workspace_marker(cwd, "workspace.json"),
|
|
96
95
|
lambda: _project_name_from_workspace_marker(cwd, ".oacp"),
|
|
96
|
+
lambda: _project_name_from_agent_hub(cwd),
|
|
97
97
|
):
|
|
98
98
|
project = resolver()
|
|
99
99
|
if project:
|
|
@@ -285,7 +285,7 @@ def run_session_init(
|
|
|
285
285
|
for name in MEMORY_FILES:
|
|
286
286
|
memory_results[name] = {"path": "", "state": "skipped", "bytes": 0}
|
|
287
287
|
status_result = {"path": "", "state": "no-project"}
|
|
288
|
-
warnings.append("no project detected from
|
|
288
|
+
warnings.append("no project detected from workspace.json, .oacp, .agent-hub, and --project not provided")
|
|
289
289
|
|
|
290
290
|
for name in PROTOCOL_FILES:
|
|
291
291
|
state = protocol_results[name]["state"]
|