Skip to content

Select language

Current language: English

Agent Protocols Guide

Source: src/lib/{a2a,acp,cloudAgent}/, src/app/api/{a2a,acp,cloud}/, src/app/api/v1/agents/ Last updated: 2026-06-28 โ€” v3.8.40

OmniRoute exposes three different agent-related surfaces. They look similar at first glance but solve different problems. Use this page to pick the right one.

Surface Best for Transport Standard
A2A โ€” Agent-to-Agent Cross-agent collaboration with peer agents that speak the A2A protocol JSON-RPC 2.0 over HTTP A2A v0.3 (open spec)
ACP โ€” CLI Agents Registry Detecting / registering / launching CLI coding agents installed on the userโ€™s machine (Cursor, Cline, Codex CLI, Claude Code, Aider, etc.) HTTP REST OmniRoute-specific
Cloud Agents Submitting long-running coding tasks to external cloud services (Codex Cloud, Devin, Jules, Cursor Cloud) HTTP REST + DB-backed tasks OmniRoute-specific

The three are independent โ€” pick any subset.

Do you need a cloud service to do work outside this machine (Codex Cloud / Cursor Cloud / Devin / Jules)?
โ”œโ”€ YES โ†’ Cloud Agents (POST /api/v1/agents/tasks)
โ””โ”€ NO โ†’ Continue
โ”‚
Do you have a peer agent that speaks A2A and wants to collaborate?
โ”œโ”€ YES โ†’ A2A (POST /a2a)
โ””โ”€ NO โ†’ Continue
โ”‚
Do you need to list / configure CLI coding agents installed locally?
โ”œโ”€ YES โ†’ ACP (GET /api/acp/agents)
โ””โ”€ NO โ†’ Use plain /v1/chat/completions

Spec: A2A v0.3 OmniRoute endpoint: POST /a2a (JSON-RPC 2.0) Agent Card: GET /.well-known/agent.json

  • Building a multi-agent system where OmniRoute is one of the peers
  • Exposing OmniRouteโ€™s routing intelligence (smart-routing, quota-management, etc.) to agents in frameworks like Google ADK or generic agent meshes
  • Wrapping OmniRoute behind a standard discovery + invocation surface
  • message/send โ€” submit a message, receive sync response
  • message/stream โ€” submit + receive SSE-streamed progress events
  • tasks/get โ€” read task by ID
  • tasks/cancel โ€” cancel a running task
  • smart-routing โ€” route a prompt through the optimal combo
  • quota-management โ€” report per-provider quota state
  • provider-discovery โ€” list installed providers with capabilities
  • cost-analysis โ€” estimate cost of a request/conversation
  • health-report โ€” aggregate breaker/cooldown/lockout state per provider
  • list-capabilities โ€” enumerate the agentโ€™s available skills and metadata

See A2A-SERVER.md for transport details, agent card structure, task TTL config, and the template for adding new skills.

OmniRoute endpoint: GET /api/acp/agents Source: src/lib/acp/{index,manager,registry}.ts

ACP is OmniRouteโ€™s local CLI agent inventory. It detects which coding CLIs are installed on the host (Cursor, Cline, Claude Code, Codex CLI, Continue, etc.), resolves their versions, and surfaces them to the dashboard so the user can wire each CLI to point at OmniRoute.

This is NOT an external protocol โ€” itโ€™s an internal registry that powers the โ€œCLI Toolsโ€ UI and the CLI fingerprint tracking (see CLI-TOOLS.md).

  • Probes the host for installed CLI binaries (uses which / where per OS)
  • Reads each CLIโ€™s version (calls <bin> --version)
  • Optionally accepts user-defined custom agents (binary path + version probe + spawn args)
  • Persists custom agents in settings
  • Returns the unified list to the dashboard
Endpoint Method Description Auth
/api/acp/agents GET List detected + custom agents (installed/total counts) API key
/api/acp/agents POST Add/update/remove custom agent (action discriminator in body) API key

Body shape for POST (customAgentBodySchema in src/app/api/acp/agents/route.ts):

{
"action": "add|update|remove",
"id": "cursor",
"name": "Cursor",
"binary": "/usr/local/bin/cursor",
"versionCommand": "--version",
"providerAlias": "cursor",
"spawnArgs": ["--api-base", "http://localhost:20128"],
"protocol": "stdio"
}
  • Dashboard โ€œCLI Toolsโ€ page lists whatโ€™s installed and helps you point each at OmniRoute
  • Custom agents let power users register internal/proprietary CLIs that OmniRoute doesnโ€™t know about by default
  • Detection result fuels the cli-tools fingerprint matrix
  • ACP doesnโ€™t run tasks. It only detects + configures CLIs. To actually invoke a CLI, you launch it yourself with the env vars OmniRoute provides (OPENAI_BASE_URL, OPENAI_API_KEY, etc.).

OmniRoute endpoints: /api/v1/agents/tasks/* (lifecycle) + /api/cloud/* (plumbing) Source: src/lib/cloudAgent/

A uniform interface over third-party cloud coding agents. You submit a prompt + repo URL, OmniRoute dispatches to the right cloud agent, polls status, returns results.

Supported agents (4, all confirmed in src/lib/cloudAgent/agents/)

Section titled โ€œSupported agents (4, all confirmed in src/lib/cloudAgent/agents/)โ€
  • codex-cloud โ€” OpenAI Codex Cloud
  • devin โ€” Cognition Devin
  • jules โ€” Google Jules
POST /api/v1/agents/tasks
โ†’ BaseAgent.createTask() per agent class
โ†’ external service starts work
โ†’ task row created in DB (cloud_agent_tasks)
โ†“
GET /api/v1/agents/tasks/[id]
โ†’ lazy status sync from provider
โ†’ returns current status + plan + activity log
โ†“
POST /api/v1/agents/tasks/[id] (action: "approve" | "message" | "cancel")
โ†’ forwards to provider (or marks cancelled locally)
โ†“
DELETE /api/v1/agents/tasks/[id]
โ†’ local cancel

โš ๏ธ All /api/v1/agents/tasks/* endpoints require management auth (commit 588a0333). Bearer-only callers receive 401 since v3.8.0.

See CLOUD_AGENT.md for the CloudAgentBase contract, per-agent specifics, schema details, and credential plumbing endpoints.

Both have โ€œlong-running tasksโ€ but at different layers:

Aspect A2A Cloud Agents
Standard Open A2A v0.3 OmniRoute-specific
Where compute runs Inside OmniRoute (uses configured combos) External (Codex / Devin / Jules servers)
Task duration Default TTL 5 min (configurable in TaskManager) Minutes to hours
Repo-aware No (passes prompts only) Yes (repo URL + branch)
Use case Cross-agent collab, smart routing as a service Delegate โ€œimplement feature X in repo Yโ€
Auth Optional OMNIROUTE_API_KEY for /a2a; management for /api/a2a/* REST helpers Always management
Terminal window
curl http://localhost:20128/.well-known/agent.json

Returns the Agent Card with all 6 skills, transports, and version.

Terminal window
curl -X POST http://localhost:20128/a2a \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "message/send",
"params": {
"messages": [{"role": "user", "content": "Route this prompt"}],
"skill": "smart-routing"
},
"id": 1
}'
Terminal window
curl http://localhost:20128/api/acp/agents \
-H "Authorization: Bearer <api-key>"
Terminal window
curl -X POST http://localhost:20128/api/acp/agents \
-H "Authorization: Bearer <api-key>" \
-H "Content-Type: application/json" \
-d '{
"action": "add",
"id": "my-custom-cli",
"name": "My Custom CLI",
"binary": "/opt/mycli/bin/mycli",
"versionCommand": "--version",
"providerAlias": "openai"
}'
Terminal window
curl -X POST http://localhost:20128/api/v1/agents/tasks \
-H "Cookie: auth_token=..." \
-H "Content-Type: application/json" \
-d '{
"providerId": "devin",
"prompt": "Implement feature X in repo Y",
"source": {
"repoName": "user/repo",
"repoUrl": "https://github.com/user/repo",
"branch": "main"
}
}'
Terminal window
curl http://localhost:20128/api/v1/agents/tasks/<task-id> \
-H "Cookie: auth_token=..."
  • Chatbot / copilot frontend โ†’ /v1/chat/completions (OpenAI-compat โ€” not an agent protocol)
  • Multi-agent collaboration โ†’ A2A
  • Listing local CLIs in the dashboard โ†’ ACP
  • Delegating long-running coding tasks to cloud services โ†’ Cloud Agents
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ OmniRoute Core โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ†‘ โ†‘ โ†‘
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โ”‚ โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ A2A โ”‚ โ”‚ ACP โ”‚ โ”‚ Cloud โ”‚
โ”‚ (/a2a)โ”‚ โ”‚ (/acp) โ”‚ โ”‚ Agents โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ (/v1/agentsโ”‚
โ”‚ โ”‚ โ”‚ /tasks) โ”‚
โ†“ โ†“ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
External peer Local CLI โ”‚
agents that binaries on โ†“
speak A2A v0.3 the host Codex Cloud, Cursor,
Devin, Jules

undefined (a58000c7685f)

HagiCode

HagiCode is an agentic coding workspace. Rich, convenient UI interactions make planning, agent execution, and project work approachable and easy to navigate, creating an engaging development experience.

Explore an engaging development experience through rich, convenient UI interactions.

Visit HagiCodeRead the documentation
  • SmartOpenSpec workflows turn intent into an executable path, from proposal to design, tasks, and a shipped change.
  • EfficientMulti-agent execution keeps research, implementation, and review moving in parallel, across several repositories and the Agent CLIs you already use.
  • InterestingRich, convenient UI interactions make planning, agent execution, and project work approachable and easy to navigate.

Download for Windows

Get it from Microsoft StoreAll downloads

Turn ideas into shipped software.

HagiCode is an agentic coding workspace. OpenSpec workflows plan the change, multi-agent execution carries it out, and Hero Scenario makes the long run visible, so ideas become shipped software.

Smart
OpenSpec workflows turn intent into a path from proposal to shipped change.
Efficient
Multi-agent execution runs research, build, and review in parallel.
Fun
Rich UI interactions make planning, agent work, and projects easier to follow.