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.
Decision Tree
Section titled โDecision Treeโ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/completions1. A2A โ Agent-to-Agent
Section titled โ1. A2A โ Agent-to-AgentโSpec: A2A v0.3
OmniRoute endpoint: POST /a2a (JSON-RPC 2.0)
Agent Card: GET /.well-known/agent.json
When to use
Section titled โWhen to useโ- 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
Methods
Section titled โMethodsโmessage/sendโ submit a message, receive sync responsemessage/streamโ submit + receive SSE-streamed progress eventstasks/getโ read task by IDtasks/cancelโ cancel a running task
Built-in skills (6)
Section titled โBuilt-in skills (6)โsmart-routingโ route a prompt through the optimal comboquota-managementโ report per-provider quota stateprovider-discoveryโ list installed providers with capabilitiescost-analysisโ estimate cost of a request/conversationhealth-reportโ aggregate breaker/cooldown/lockout state per providerlist-capabilitiesโ enumerate the agentโs available skills and metadata
Deep dive
Section titled โDeep diveโSee A2A-SERVER.md for transport details, agent card structure, task TTL config, and the template for adding new skills.
2. ACP โ CLI Agents Registry
Section titled โ2. ACP โ CLI Agents RegistryโOmniRoute endpoint: GET /api/acp/agents
Source: src/lib/acp/{index,manager,registry}.ts
What it is
Section titled โWhat it isโ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).
What it does
Section titled โWhat it doesโ- Probes the host for installed CLI binaries (uses
which/whereper 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
REST API
Section titled โREST APIโ| 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"}Use cases
Section titled โUse casesโ- 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-toolsfingerprint matrix
When NOT to use ACP
Section titled โWhen NOT to use ACPโ- 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.).
3. Cloud Agents
Section titled โ3. Cloud AgentsโOmniRoute endpoints: /api/v1/agents/tasks/* (lifecycle) + /api/cloud/* (plumbing)
Source: src/lib/cloudAgent/
What it is
Section titled โWhat it isโ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 Clouddevinโ Cognition Devinjulesโ Google Jules
Lifecycle
Section titled โLifecycleโ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.
Deep dive
Section titled โDeep diveโSee CLOUD_AGENT.md for the CloudAgentBase contract, per-agent specifics, schema details, and credential plumbing endpoints.
Comparison: A2A vs Cloud Agents
Section titled โComparison: A2A vs Cloud Agentsโ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 |
Integration Examples
Section titled โIntegration ExamplesโDiscover OmniRouteโs A2A capabilities
Section titled โDiscover OmniRouteโs A2A capabilitiesโcurl http://localhost:20128/.well-known/agent.jsonReturns the Agent Card with all 6 skills, transports, and version.
Call OmniRoute as an A2A agent
Section titled โCall OmniRoute as an A2A agentโ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 }'List installed CLI agents via ACP
Section titled โList installed CLI agents via ACPโcurl http://localhost:20128/api/acp/agents \ -H "Authorization: Bearer <api-key>"Add a custom CLI agent
Section titled โAdd a custom CLI agentโ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" }'Submit a Cloud Agent task
Section titled โSubmit a Cloud Agent taskโ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" } }'Poll cloud task status
Section titled โPoll cloud task statusโcurl http://localhost:20128/api/v1/agents/tasks/<task-id> \ -H "Cookie: auth_token=..."When to Use What
Section titled โWhen to Use Whatโ- 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
Internal Architecture
Section titled โInternal Architectureโ โโโโโโโโโโโโโโโโโโโโโโโ โ 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, JulesSee Also
Section titled โSee Alsoโ- A2A-SERVER.md โ A2A deep dive
- CLOUD_AGENT.md โ Cloud Agents deep dive
- CLI-TOOLS.md โ External CLI integrations (uses ACP)
- SKILLS.md โ Skills framework (different from A2A skills โ local execution sandbox)
- API_REFERENCE.md โ endpoint reference
- Source:
src/lib/{a2a,acp,cloudAgent}/
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.
- 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
Share HagiCode
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.
ยฉ 2026 HagiCode | Powered By hagilight-starlight@0.21.0 | Branch: main | Commit: de60bcd | Built:

