CQRS and Event Sourcing give you a clean, scalable architecture. But there is no common way to discover what commands a service accepts, what events it produces, or how to interact with it — without reading bespoke documentation or source code.
OAP is a specification for service interoperability — how domain services expose their command ingestion surface and event log, how callers (AI agents, Process Managers, UIs, other services) discover and interact with them, and how execution is observed — across any runtime, platform, language, or transport.
OAP doesn't care how a service works internally. It only cares about the interaction surface: what commands go in, what events come out, and how to discover the service.
If you are new to OAP, start with the Overview for the protocol's goals and design, then explore Discovery and the Agent capabilities.
| Pre-release | WIP | |
|---|---|---|
| Core Specification: | ||
| OAP Overview | v0.1.0 | WIP |
| Discovery | v0.1.0 | WIP |
| Versioning | v0.1.0 | WIP |
| Conformance | v0.1.0 | WIP |
| Agent Capabilities: | ||
| Registry | v0.1.0 | WIP |
| Lifecycle | v0.1.0 | WIP |
| Events | v0.1.0 | WIP |
| Commands | v0.1.0 | WIP |
| Memory | v0.1.0 | WIP |
| Observability: | ||
| Tracing | v0.1.0 | WIP |
| Transport Bindings: | ||
| REST | v0.1.0 | WIP |
| MCP | v0.1.0 | WIP |
| A2A | v0.1.0 | WIP |
The most recent pre-release is v0.1.0. A stable release tag (
oap@stable) will be created once the specification reaches production readiness.
The machine-readable protocol definitions live under protocol/v1/ and are the source of truth:
| Path | Contents |
|---|---|
protocol/v1/schemas/ |
JSON Schema files for all capabilities |
protocol/v1/services/ |
OpenAPI specs for REST transport |
protocol/v1/examples/ |
Example manifests and payloads |
# Validate protocol schemas
node scripts/validate-schemas.mjs
# Validate example payloads
node scripts/validate-examples.mjs
# Run the website locally
cd website && npm install && npm run devUse the release script to tag and publish a new version:
# Pre-release (draft, not yet production-ready)
./scripts/release.sh 0.2.0 --prerelease
# Stable release (also creates the oap@stable pointer tag)
./scripts/release.sh 1.0.0The script will validate your working tree, create an annotated tag, push it, and create a GitHub Release (if gh CLI is installed). For stable releases it also updates the oap@stable tag.
- Website & Documentation
- GitHub Issues — bug reports & feature requests
- Contributing — how to contribute