🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Fonte:
src/lib/{a2a,acp,cloudAgent}/,src/app/api/{a2a,acp,cloud}/,src/app/api/v1/agents/Última atualização: 2026-06-28 — v3.8.40
O OmniRoute disponibiliza três interfaces diferentes relacionadas com agentes. À primeira vista, parecem semelhantes, mas resolvem problemas distintos. Utilize esta página para escolher a interface adequada.
| Interface | Mais adequada para | Transporte | Norma |
|---|---|---|---|
| A2A — Agente para Agente | Colaboração entre agentes com agentes pares que utilizem o protocolo A2A | JSON-RPC 2.0 sobre HTTP | A2A v0.3 (especificação aberta) |
| ACP — Registo de agentes CLI | Detetar / registar / iniciar agentes de programação CLI instalados na máquina do utilizador (Cursor, Cline, Codex CLI, Claude Code, Aider, etc.) | HTTP REST | Específica do OmniRoute |
| Agentes na cloud | Submeter tarefas de programação de longa duração a serviços externos na cloud (Codex Cloud, Devin, Jules, Cursor Cloud) | HTTP REST + tarefas persistidas na BD | Específica do OmniRoute |
As três interfaces são independentes — escolha qualquer subconjunto.
Precisa que um serviço na cloud execute trabalho fora desta máquina (Codex Cloud / Cursor Cloud / Devin / Jules)?
├─ SIM → Agentes na cloud (POST /api/v1/agents/tasks)
└─ NÃO → Continuar
│
Tem um agente par que utiliza A2A e pretende colaborar?
├─ SIM → A2A (POST /a2a)
└─ NÃO → Continuar
│
Precisa de listar / configurar agentes de programação CLI instalados localmente?
├─ SIM → ACP (GET /api/acp/agents)
└─ NÃO → Utilizar apenas /v1/chat/completions
Especificação: A2A v0.3
Endpoint do OmniRoute: POST /a2a (JSON-RPC 2.0)
Cartão do agente: GET /.well-known/agent.json
- Criar um sistema multiagente no qual o OmniRoute seja um dos pares
- Disponibilizar a inteligência de encaminhamento do OmniRoute (
smart-routing,quota-management, etc.) a agentes em frameworks como o Google ADK ou em malhas genéricas de agentes - Encapsular o OmniRoute numa interface normalizada de descoberta + invocação
message/send— submeter uma mensagem e receber uma resposta síncronamessage/stream— submeter e receber eventos de progresso transmitidos por SSEtasks/get— obter uma tarefa pelo respetivo IDtasks/cancel— cancelar uma tarefa em execução
smart-routing— encaminhar um pedido através da combinação idealquota-management— comunicar o estado da quota por fornecedorprovider-discovery— listar os fornecedores instalados e as respetivas capacidadescost-analysis— estimar o custo de um pedido ou de uma conversahealth-report— agregar o estado de disjuntor, período de espera e bloqueio por fornecedorlist-capabilities— enumerar as competências e os metadados disponíveis do agente
Consulte A2A-SERVER.md para obter detalhes sobre o transporte, a estrutura do cartão do agente, a configuração do TTL das tarefas e o modelo para adicionar novas competências.
Endpoint do OmniRoute: GET /api/acp/agents
Código-fonte: src/lib/acp/{index,manager,registry}.ts
O ACP é o inventário local de agentes CLI do OmniRoute. Deteta quais as CLI de programação instaladas no anfitrião (Cursor, Cline, Claude Code, Codex CLI, Continue, etc.), determina as respetivas versões e apresenta-as no painel para que o utilizador possa configurar cada CLI de modo a apontar para o OmniRoute.
NÃO se trata de um protocolo externo — é um registo interno que suporta a interface «CLI Tools» e o acompanhamento de impressões digitais das CLI (consulte CLI-TOOLS.md).
- Procura binários de CLI instalados no anfitrião (utiliza
which/where, consoante o sistema operativo) - Obtém a versão de cada CLI (executa
<bin> --version) - Opcionalmente, aceita agentes personalizados definidos pelo utilizador (caminho do binário + consulta da versão + argumentos de execução)
- Mantém os agentes personalizados nas definições
- Devolve a lista unificada ao painel
| Endpoint | Método | Descrição | Autenticação |
|---|---|---|---|
/api/acp/agents |
GET | Lista os agentes detetados + personalizados (contagens instalados/total) | Chave de API |
/api/acp/agents |
POST | Adiciona/atualiza/remove um agente personalizado (ação discriminada no corpo) | Chave de API |
Formato do corpo para POST (customAgentBodySchema em 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"
}- A página «CLI Tools» do painel lista o que está instalado e ajuda a configurar cada ferramenta para apontar para o OmniRoute
- Os agentes personalizados permitem que utilizadores avançados registem CLI internas/proprietárias que o OmniRoute não reconhece por predefinição
- O resultado da deteção alimenta a matriz de impressões digitais
cli-tools
- O ACP não executa tarefas. Apenas deteta e configura CLI. Para invocar efetivamente uma CLI, deve iniciá-la diretamente com as variáveis de ambiente fornecidas pelo OmniRoute (
OPENAI_BASE_URL,OPENAI_API_KEY, etc.).
Endpoints do OmniRoute: /api/v1/agents/tasks/* (ciclo de vida) + /api/cloud/* (infraestrutura)
Código-fonte: src/lib/cloudAgent/
Uma interface uniforme para agentes de programação na nuvem de terceiros. O utilizador envia um pedido + URL do repositório, o OmniRoute encaminha-os para o agente na nuvem correto, consulta periodicamente o estado e devolve os resultados.
codex-cloud— OpenAI Codex Clouddevin— Cognition Devinjules— Google Jules
POST /api/v1/agents/tasks
→ BaseAgent.createTask() por classe de agente
→ o serviço externo inicia o trabalho
→ é criado um registo de tarefa na BD (cloud_agent_tasks)
↓
GET /api/v1/agents/tasks/[id]
→ sincronização diferida do estado a partir do fornecedor
→ devolve o estado atual + plano + registo de atividade
↓
POST /api/v1/agents/tasks/[id] (ação: "approve" | "message" | "cancel")
→ reencaminha para o fornecedor (ou marca localmente como cancelada)
↓
DELETE /api/v1/agents/tasks/[id]
→ cancelamento local
/api/v1/agents/tasks/* exigem autenticação de gestão (commit 588a0333). Os clientes que utilizam apenas Bearer recebem uma resposta 401 desde a versão v3.8.0.
Consulte CLOUD_AGENT.md para conhecer o contrato CloudAgentBase, as especificidades de cada agente, os detalhes do esquema e os endpoints da infraestrutura de credenciais.
Ambos têm "tarefas de longa duração", mas em camadas diferentes:
| Aspeto | A2A | Agentes Cloud |
|---|---|---|
| Norma | Open A2A v0.3 | Específico do OmniRoute |
| Onde ocorre o processamento | Dentro do OmniRoute (utiliza as combinações configuradas) | Externo (servidores Codex / Devin / Jules) |
| Duração da tarefa | TTL predefinido de 5 min (configurável em TaskManager) |
Minutos a horas |
| Compatível com repositórios | Não (apenas envia prompts) | Sim (URL do repositório + ramo) |
| Caso de utilização | Colaboração entre agentes, encaminhamento inteligente como serviço | Delegar "implementar a funcionalidade X no repositório Y" |
| Autenticação | OMNIROUTE_API_KEY opcional para /a2a; gestão para auxiliares REST /api/a2a/* |
Sempre de gestão |
curl http://localhost:20128/.well-known/agent.jsonDevolve o Cartão do Agente com as 6 competências, os transportes e a versão.
curl -X POST http://localhost:20128/a2a \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "message/send",
"params": {
"messages": [{"role": "user", "content": "Encaminhar este prompt"}],
"skill": "smart-routing"
},
"id": 1
}'curl http://localhost:20128/api/acp/agents \
-H "Authorization: Bearer <api-key>"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"
}'curl -X POST http://localhost:20128/api/v1/agents/tasks \
-H "Cookie: auth_token=..." \
-H "Content-Type: application/json" \
-d '{
"providerId": "devin",
"prompt": "Implementar a funcionalidade X no repositório Y",
"source": {
"repoName": "user/repo",
"repoUrl": "https://github.com/user/repo",
"branch": "main"
}
}'curl http://localhost:20128/api/v1/agents/tasks/<task-id> \
-H "Cookie: auth_token=..."- Frontend de chatbot / copilot →
/v1/chat/completions(compatível com OpenAI — não é um protocolo de agentes) - Colaboração entre vários agentes → A2A
- Listagem de CLIs locais no painel → ACP
- Delegação de tarefas de programação de longa duração a serviços cloud → Agentes Cloud
┌─────────────────────┐
│ Núcleo OmniRoute │
└─────────────────────┘
↑ ↑ ↑
┌─────────┘ │ └─────────┐
│ │ │
┌───────┐ ┌─────────┐ ┌────────────┐
│ A2A │ │ ACP │ │ Agentes na │
│ (/a2a)│ │ (/acp) │ │ Nuvem │
└───────┘ └─────────┘ │ (/v1/agents│
│ │ │ /tasks) │
↓ ↓ └────────────┘
Agentes pares Binários CLI │
externos que locais no ↓
usam A2A v0.3 anfitrião Codex Cloud, Cursor,
Devin, Jules
- A2A-SERVER.md — Análise aprofundada do A2A
- CLOUD_AGENT.md — Análise aprofundada dos Agentes na Nuvem
- CLI-TOOLS.md — Integrações de CLI externas (utilizam ACP)
- SKILLS.md — Infraestrutura de competências (diferente das competências A2A — sandbox de execução local)
- API_REFERENCE.md — referência dos endpoints
- Código-fonte:
src/lib/{a2a,acp,cloudAgent}/