Skip to content

openagentprotocol/spec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OAP — Open Agent Protocol

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.

OAP Documents

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.

Protocol Artifacts

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

Quick Start

# 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 dev

Cutting a Release

Use 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.0

The 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.

Community

License

Apache-2.0