Requisitos mínimos para rodar AgentOffice em desenvolvimento ou produção.
Da instalação à primeira resposta roteada automaticamente.
# agents
## builder
Especialista em desenvolvimento de software. Escreve código limpo e testes.
Skills: TypeScript, Node.js, arquitetura de software.
## reviewer
Revisa código com foco em qualidade, segurança e performance.
Skills: code review, análise estática, boas práticas.
## devops
Especialista em infraestrutura e automação de deploys.
Skills: Docker, Kubernetes, CI/CD, observabilidade.
{
"providers": {
"anthropic": {
"apiKey": "sk-ant-..."
}
},
"extensions": ["agent-office"],
"routing": {
"scorer": "hybrid",
"rerank": false
}
}
Os blocos fundamentais que compõem o AgentOffice.
pi -e extensions/agent-office.ts.
O Pi runtime gerencia o loop de conversa, contexto e ciclo de vida dos agentes.
Configure o comportamento do AgentOffice via variáveis de ambiente ou .env.
| Variável | Tipo | Descrição |
|---|---|---|
| ANTHROPIC_API_KEY | string | Chave de API Anthropic. Necessária quando o provider selecionado é anthropic. |
| OPENAI_API_KEY | string | Chave de API OpenAI. Utilizada quando o provider alternativo é openai. |
| PI_NATS_URL | string | URL do servidor NATS (ex: nats://localhost:4222). Ativa transporte P2P entre instâncias. |
| PI_NATS_TOKEN | string | Token compartilhado para autenticação no cluster NATS. Modo B de conectividade. |
| QDRANT_URL | string | URL do servidor Qdrant (ex: http://localhost:6333). Ativa QdrantScorer para catálogos com 1000+ agentes. |
| ROUTING_RERANK | boolean | Ativa cross-encoder para re-ranking dos candidatos. Aumenta precisão em ~12%, adiciona ~15ms de latência. |
| OFFICE_PORT | number | Porta da API REST. Padrão: 3777. |
| OFFICE_PORTAL_PORT | number | Porta do portal Next.js. Padrão: 3000. |
| OFFICE_MAX_SESSIONS | number | Limite de sessões simultâneas por instância. Padrão: 50. Ajuste conforme RAM disponível. |
| OFFICE_SESSION_TTL | number | Tempo de expiração de sessões ociosas em segundos. Padrão: 1800 (30 min). |
| ROUTING_EMBED_MODEL | string | Modelo de embeddings para o scorer semântico. Padrão: text-embedding-3-small. |
| ROUTING_CACHE_TTL | number | TTL do cache de routing decisions em segundos. Padrão: 300. |
| LOG_LEVEL | string | Nível de log: error | warn | info | debug. Padrão: info. |
| METRICS_ENABLED | boolean | Expõe endpoint /metrics no formato Prometheus. Padrão: true. |
Todos os endpoints aceitam e retornam JSON. Rotas de streaming retornam text/event-stream.
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /agents | Lista todos os agentes disponíveis com status atual e capacidades declaradas. |
| POST | /message | Envia uma mensagem. Retorna SSE stream com routing decision e resposta do agente selecionado. |
| GET | /agents/:id/status | Estado atual de um agente: idle | thinking | responding. |
| GET | /stream/:sessionId | Reconecta ao SSE stream de uma sessão existente. Útil para retomar após queda de conexão. |
| POST | /teams | Cria uma equipe de agentes com configuração de colaboração e orquestração definida. |
| GET | /teams | Lista todas as equipes configuradas com membros e modo de operação. |
| POST | /teams/:id/message | Envia mensagem para uma equipe inteira. A orquestração distribui para os membros relevantes. |
| DELETE | /sessions/:id | Encerra uma sessão e libera recursos associados (contexto, buffers de streaming). |
| GET | /routing/log | Histórico paginado de decisões de roteamento com scores e metadados de cada escolha. |
| GET | /routing/log/:id | Detalhes completos de uma decisão específica: candidatos, scores e justificativa. |
| POST | /agents/:id/cancel | Cancela a execução em andamento de um agente e libera o token de resposta. |
| GET | /metrics | Endpoint Prometheus com métricas de latência, throughput e utilização de agentes. |
| GET | /health | Health check para liveness probe do Kubernetes. Retorna 200 OK quando o processo está saudável. |
| GET | /ready | Readiness probe: confirma que o roteador está inicializado e os agentes, carregados. |
# Corpo da requisição
{
"message": "Revise o PR #42 antes do merge",
"sessionId": "ses_abc123", // opcional — cria novo se omitido
"stream": true // retorna SSE quando true
}
# Resposta SSE
event: routing
data: {"agent":"reviewer","score":0.96,"reason":"code review intent"}
event: delta
data: {"content":"Analisando o PR #42..."}
event: done
data: {"sessionId":"ses_abc123","tokensUsed":312}
Do desenvolvimento local ao cluster multi-node com alta disponibilidade.
services:
agent-office:
image: ghcr.io/your-org/agent-office:latest
ports:
- "3000:3000" # portal
- "3777:3777" # api
- "8787:8787" # coms-net
environment:
ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
PI_NATS_URL: nats://nats:4222
QDRANT_URL: http://qdrant:6333
volumes:
- ./AGENTS.md:/app/AGENTS.md:ro
- ./settings.json:/app/settings.json:ro
- ./projects:/app/projects
depends_on: [nats, qdrant]
nats:
image: nats:2.10-alpine
ports: ["4222:4222"]
qdrant:
image: qdrant/qdrant:v1.8.0
ports: ["6333:6333"]
volumes: [qdrant_data:/qdrant/storage]
volumes:
qdrant_data: