O Pi runtime é a fundação. Ele gerencia a complexidade do ciclo agente-LLM para que você não precise.
Gerencia o ciclo message → thinking → tool calls → response para cada agente. Streaming nativo com backpressure automático.
Anthropic, OpenAI e custom providers. Autenticação, retry com exponential backoff e fallback automáticos sem boilerplate.
Executa ferramentas com timeout configurável, validação de schema JSON e tratamento de erros estruturado. Resultados retornam ao contexto automaticamente.
// Interface da Extension API do Pi runtime
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
export default function myExtension(api: ExtensionAPI) {
// Registrar uma nova ferramenta para os agentes
api.registerTool("search_docs", {
description: "Busca na documentação do projeto",
parameters: { query: { type: "string" } },
execute: async ({ query }) => {
return await searchDocs(query);
}
});
// Registrar um comando CLI
api.registerCommand("sync", async (args) => {
await syncProjectData();
});
}
Pi resolve o problema do agente individual. AgentOffice resolve o problema da orquestração.
| O que Pi faz | O que AgentOffice adiciona |
|---|---|
| Gerencia loop de conversa por agente | Roteamento semântico entre múltiplos agentes |
| Executa tools registradas | coms-net hub ou NATS — equipes se comunicam entre si, em qualquer projeto |
| Autenticação com providers LLM | Portal Next.js — supervisão em tempo real |
| Streaming de respostas por agente | SSE routing:decision events para o portal |
| Extension API (registerTool, registerCommand) | Protocolo A2A para interoperabilidade externa |
| Contexto por sessão | Persona system 7 camadas com persistência |
O Pi runtime gerencia o ciclo de vida. Basta instalar e importar.
Scraping, fetch e navegação headless para agentes. Inclui extração de conteúdo, screenshots e controle de browser.
Execução segura de código em sandbox para agentes builder. Suporta Node.js, Python e shell com limites de recursos.
Memória vetorial persistente com interface simples. Armazena embeddings, busca semântica e recuperação por contexto.
AgentOffice é distribuído com quatro extensões Pi que cobrem orquestração, comunicação, protocolos padrão de mercado e interoperabilidade.
Extensão principal. Provisiona a HTTP API de roteamento e integra o portal de supervisão. Ponto de entrada de todas as requisições. É a mesma extensão que qualquer agente pode subir em seu próprio Pi para virar uma equipe própria — equipes de equipes, sem limite de profundidade.
Hub de comunicação agente-a-agente. Namespaces isolados por projeto. Suporte a endpoints SSE para comunicação assíncrona.
Model Context Protocol com suporte a 3 transports. Compatível com qualquer MCP server disponível no mercado.
Google Agent-to-Agent Protocol. Comunicação bidirecional com agentes externos. Discovery via well-known URL.
Configure múltiplos providers no mesmo cluster. Cada agente pode usar um modelo diferente.
Claude 3.5 Sonnet, Opus e Haiku. Recomendado. Melhor raciocínio e uso de ferramentas da categoria.
"providers": {
"anthropic": {
"apiKey": "sk-ant-..."
}
}
GPT-4o, GPT-4 Turbo e GPT-3.5. Boa integração com ferramentas. Suporte a function calling nativo.
"providers": {
"openai": {
"apiKey": "sk-..."
}
}
Qualquer provider com API compatível com OpenAI. Funciona com Ollama e LM Studio para uso local, sem custo de API.
"providers": {
"custom": {
"baseUrl": "http://..."
}
}
{
"agents": [
{
"id": "orchestrator",
"provider": "anthropic",
"model": "claude-3-5-sonnet-20241022",
"persona": "personas/orchestrator.md"
},
{
"id": "coder",
"provider": "anthropic",
"model": "claude-3-5-sonnet-20241022",
"persona": "personas/coder.md"
},
{
"id": "reviewer",
"provider": "openai",
"model": "gpt-4o",
"persona": "personas/reviewer.md"
}
]
}
Conecte qualquer MCP server ao ecossistema. O transport certo depende do seu ambiente de deploy.
Processo local, sem rede. Máxima segurança — o MCP server roda como filho do processo Pi, comunicação via stdin/stdout.
{
"transport": "stdio",
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem"
]
}
Servidor remoto via EventSource. Stateful — mantém conexão persistente. Ideal para servers com estado entre chamadas.
{
"transport": "sse",
"url": "http://mcp-server:3001"
}
Nova spec MCP, stateless e production-ready. Sem conexão persistente — escala horizontalmente sem sesssion affinity.
{
"transport": "streamable-http",
"url": "http://mcp-server:3001"
}
Qualquer funcionalidade que os agentes precisam pode ser encapsulada como extensão Pi e distribuída como npm package.
Use ExtensionAPI do Pi runtime para registrar tools, commands e event handlers.
Adicione "my-extension" ao array extensions no settings.json.
import type { ExtensionAPI, ToolResult } from "@mariozechner/pi-coding-agent";
import { z } from "zod";
/**
* MyExtension — extensão de exemplo para AgentOffice
* Registra ferramentas, comandos CLI e event handlers.
*/
export default function myExtension(api: ExtensionAPI) {
// ── Ferramenta disponível para os agentes ─────────────────
api.registerTool("fetch_data", {
description: "Busca dados externos e retorna JSON estruturado",
parameters: z.object({
url: z.string().url().describe("URL do endpoint"),
timeout: z.number().optional().default(5000)
}),
execute: async ({ url, timeout }): Promise<ToolResult> => {
const controller = new AbortController();
const id = setTimeout(() => controller.abort(), timeout);
try {
const res = await fetch(url, { signal: controller.signal });
const data = await res.json();
return { content: JSON.stringify(data, null, 2) };
} catch (err) {
return { isError: true, content: String(err) };
} finally {
clearTimeout(id);
}
}
});
// ── Comando CLI: agentoffice my-extension sync ─────────────
api.registerCommand("sync", async (args) => {
const dry = args.includes("--dry-run");
console.log(`[my-extension] sync ${dry ? "(dry-run)" : ""}`);
if (!dry) await performSync();
});
// ── Hook de ciclo de vida ──────────────────────────────────
api.on("agent:start", ({ agentId }) => {
console.log(`[my-extension] agente ${agentId} iniciado`);
});
}
async function performSync() {
// sua lógica de sincronização aqui
}
Cinco minutos para ter o primeiro agente rodando. A stack completa é open source.