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).
Restart conditions (all must be met):
- Go v0.2 released with API freeze announcement.
- Core golden sample tests pass stably for 2+ weeks.
schema/envelope.schema.jsonandpkg/event/golden_test.goaccepted as the single source of truth.
Python v0.3 scope:
- Parity with Go v0.2: Bus (Publish/Subscribe/Invoke/StreamInvoke), in-memory + NATS transports, session context propagation.
- Middleware chain: Recover, Trace, Logging (Retry/DLQ deferred to v0.4).
- HTTP/SSE adapter parity optional (v0.4).
- 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.