Living document. Last updated: 2026-05-24.
OpenAgentIO is a lightweight, ACP-compatible communication runtime for AI agents. The roadmap is organized into six layers, each with incremental milestones. Breaking changes are batched into major version boundaries; minor versions focus on additive features and stability.
| Version | Theme | Timeline |
|---|---|---|
| v0.2 (current) | Stabilize Go SDK, HTTP/SSE adapter, middleware chain | Now |
| v0.3 | Reliability, protocol state cleanup, first multi-language SDK | Q3 2026 |
| v0.4 | Advanced orchestration scenes, control plane foundation | Q4 2026 |
| v1.0 | Production-grade control plane, enterprise features | 2027 |
Goal: Gradually absorb A2A (Agent-to-Agent) design principles without premature lock-in to a moving standard. EventType semantic overload is the primary technical debt.
- Add
Phase stringtoEnvelope(schema v2) to carry protocol state (submitted/working/completed/failed). - EventType reverts to pure business routing key semantics.
- Dual-write transition: framework populates both
PhaseandEventType; consumers readPhasefirst, fallback toEventType. - Update
IsTerminal(), HTTP adapter error branching, and SSE event names. - Reference:
prompts/a2a_prot.mdfor detailed trade-off analysis (Options A/B/C).
- Evaluate introducing a separate
Task/TaskUpdatestructure for Invoke/Stream paths, decoupled from the genericEnvelope. StreamInvokemay returnTaskStreaminstead ofStream.- Decision gate: A2A ecosystem maturity + user demand for A2A interoperability.
- Full A2A protocol bridge if the standard stabilizes and gains traction.
- Native
TaskStateenum, OneOf-style response wrappers, artifact streaming.
Goal: Expand beyond basic Request-Reply, Streaming, and Pub/Sub to cover real-world multi-agent coordination patterns.
- Parallel Execution: Invoke multiple SubAgents concurrently, aggregate results (fan-out / fan-in).
- Agent Handoff: Transfer session context from one agent to another with explicit state passing.
- Tool Calling: Structured tool invocation with
ToolCall/ToolResultevent types (reserved in v0.2, enabled in v0.3).
- Async Task with Callback: Fire-and-forget task creation, completion notification via Pub/Sub or webhook.
- Circuit Breaker / Degradation: Middleware-level circuit breaker for cascading agent failures.
- Multi-step Workflow: DAG-style agent chaining with retry policies per edge.
- Human-in-the-loop: Pause workflow for human approval, resume via API or event.
- Multi-tenant Agent Marketplace: Discovery and invocation of third-party agents across tenant boundaries.
Goal: Go remains the canonical reference implementation. Other languages follow after Go API freeze.
- Freeze
pkg/buspublic API. - Complete golden sample tests as the cross-language specification baseline.
- Stabilize middleware interfaces (Recover, Trace, Logging, Retry, DeadLetter).
The Python SDK has successfully resumed active development and has achieved parity for core Bus features (Publish, Subscribe, Invoke, StreamInvoke) along with the first developer preview of the Bridge layer (Matrix, MCP, and HTTP/SSE).
Python v0.3 scope:
- Complete parity with Go SDK scenarios (including OTel tracing example scenarios).
- Complete Bridge implementations:
McpToolBridgeandMatrixEventBridge(Developer Preview v0.3-alpha). - Complete standard middleware chain: Recover, Trace, Logging.
- HTTP/SSE adapter parity.
- Evaluate JVM ecosystem demand.
- If pursued, target Kotlin-first with Java interoperability, reusing the same schema and golden samples.
Goal: Move from "at-most-once" (NATS Core) to "at-least-once" with persistence, replay, and observability.
- Transport implementation:
pkg/transport/jetstream/with durable streams and consumer groups. - Delivery guarantee: At-least-once for Pub/Sub; Invoke/Stream remain at-most-once (idempotency is caller responsibility).
- Replay: Time-based and sequence-based message replay for audit and debugging.
- Pull Consumer: Work-queue pattern for backpressure-sensitive consumers.
- Dead Letter Queue: Exhausted retries automatically republished to
{prefix}.dlq.{event_type}with full context. - Retry middleware: Backoff policies (fixed, exponential, custom) with
acp.retry.attemptmetadata stamping. - JetStream ack/nack: Integrate with middleware so retries use JetStream redelivery instead of in-process loops where possible.
- Prometheus metrics: Messages in/out, latency histograms, error rates per target.
- Grafana dashboard templates: Agent topology, throughput, latency percentiles.
- Distributed tracing: W3C Trace Context full support, OTel span linking across agent boundaries.
Goal: Move from static configuration (hard-coded target names) to dynamic service discovery and governance.
- Agent Registry: Central store of agent metadata (id, capabilities, version, health status).
- Service Discovery:
bus.Invokeresolves target name to actual subject/endpoint via registry lookup. - Health Checks: Heartbeat mechanism with automatic deregistration on timeout.
- Dynamic Routing: Route to specific agent instance based on tenant, load, or capability match.
- Credential Distribution: Per-agent TLS certificates or JWT signing keys issued by the control plane.
- Rate Limiting & Quotas: Per-tenant and per-agent request throttling.
- Policy Engine: Allow/deny lists for cross-agent invocation, audit logging.
- Web Dashboard: Visual topology map, real-time traffic flow, drill-down tracing.
Goal: Operational visibility into the agent mesh.
- Structured logging (
slog) standardized across all packages. - Prometheus exporter for key bus metrics.
- NATS monitoring integration (server stats, connection counts).
- Topology view: Visual graph of agents, subjects, and invocation edges.
- Live traffic: Message rate, latency heatmap, error spikes.
- Trace search: Filter by TraceID, SessionID, or time range.
- Agent management: Register, deregister, update agent metadata via UI.
- Alerting rules: PagerDuty/Slack integration for agent health degradation.
- Cost attribution: Per-tenant message volume and latency attribution.
- Historical analytics: Trending, capacity planning, anomaly detection.
- Schema version bump (
SchemaVersionfield) for envelope structural changes. - Dual-write periods for field migrations (e.g.,
Phase+EventTypein v0.3). - Deprecation notices logged at
Warnlevel one minor version before removal.
- Monitor A2A spec releases quarterly.
- Maintain an "A2A compatibility scorecard" documenting gaps (tracked in
prompts/a2a_prot.md). - No commitment to full A2A alignment before v1.0; interoperability bridges are additive, not replacing native protocols.
The Python SDK will not resume development until the three restart conditions in §3 are met. This is a hard gate to avoid chasing a moving Go API.