> ECOSSISTEMA

AgentOffice é uma extensão Pi.

O runtime open source pi-coding-agent gerencia o loop de conversa. AgentOffice adiciona a camada de orquestração multi-agente. Todos os packages pi.dev funcionam nativamente.

@mariozechner/pi-coding-agent MIT License ESM + TypeScript registerTool API
> PI RUNTIME

O que o Pi faz

O Pi runtime é a fundação. Ele gerencia a complexidade do ciclo agente-LLM para que você não precise.

Loop de Conversa

Gerencia o ciclo message → thinking → tool calls → response para cada agente. Streaming nativo com backpressure automático.

Provider Auth

Anthropic, OpenAI e custom providers. Autenticação, retry com exponential backoff e fallback automáticos sem boilerplate.

Tool Execution

Executa ferramentas com timeout configurável, validação de schema JSON e tratamento de erros estruturado. Resultados retornam ao contexto automaticamente.

extensions/my-extension.ts
// 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();
  });
}
> AGENT OFFICE

O que AgentOffice adiciona ao Pi

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
> COMPATIBILIDADE

Qualquer package pi.dev, sem configuração

O Pi runtime gerencia o ciclo de vida. Basta instalar e importar.

1
Instale o package
npm install @pi/package-name
2
Importe na extensão ou tool
extensions/agent-office.ts
3
Funciona
O Pi runtime gerencia o ciclo de vida automaticamente.
ℹ
Nota — Os packages abaixo são ilustrativos. Visite pi.dev para ver o catálogo completo do ecossistema.
@pi/web-tools

Scraping, fetch e navegação headless para agentes. Inclui extração de conteúdo, screenshots e controle de browser.

@pi/code-runner

Execução segura de código em sandbox para agentes builder. Suporta Node.js, Python e shell com limites de recursos.

@pi/memory

Memória vetorial persistente com interface simples. Armazena embeddings, busca semântica e recuperação por contexto.

> EXTENSÕES NATIVAS

4 extensões incluídas

AgentOffice é distribuído com quatro extensões Pi que cobrem orquestração, comunicação, protocolos padrão de mercado e interoperabilidade.

agent-office.ts PRINCIPAL

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.

API  →  porta 3777
Portal  →  porta 3000
coms-net.ts COMUNICAÇÃO

Hub de comunicação agente-a-agente. Namespaces isolados por projeto. Suporte a endpoints SSE para comunicação assíncrona.

Hub  →  porta 8787
Storage  →  SQLite · Endpoints SSE
mcp.ts PROTOCOLO

Model Context Protocol com suporte a 3 transports. Compatível com qualquer MCP server disponível no mercado.

Transports  →  stdio · HTTP+SSE · Streamable
a2a.ts A2A

Google Agent-to-Agent Protocol. Comunicação bidirecional com agentes externos. Discovery via well-known URL.

GET  →  /.well-known/agent.json
POST  →  /a2a (JSON-RPC 2.0)
> PROVIDERS

Modelos de linguagem suportados

Configure múltiplos providers no mesmo cluster. Cada agente pode usar um modelo diferente.

Anthropic

Claude 3.5 Sonnet, Opus e Haiku. Recomendado. Melhor raciocínio e uso de ferramentas da categoria.

"providers": {
  "anthropic": {
    "apiKey": "sk-ant-..."
  }
}
OpenAI

GPT-4o, GPT-4 Turbo e GPT-3.5. Boa integração com ferramentas. Suporte a function calling nativo.

"providers": {
  "openai": {
    "apiKey": "sk-..."
  }
}
Custom / Local

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.json — configuração multi-provider
{
  "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"
    }
  ]
}
> MCP TOOLS

Model Context Protocol — 3 transports

Conecte qualquer MCP server ao ecossistema. O transport certo depende do seu ambiente de deploy.

stdio LOCAL

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"
  ]
}
HTTP + SSE REMOTO

Servidor remoto via EventSource. Stateful — mantém conexão persistente. Ideal para servers com estado entre chamadas.

{
  "transport": "sse",
  "url": "http://mcp-server:3001"
}
Streamable HTTP PROD

Nova spec MCP, stateless e production-ready. Sem conexão persistente — escala horizontalmente sem sesssion affinity.

{
  "transport": "streamable-http",
  "url": "http://mcp-server:3001"
}
> EXTENSIBILIDADE

Escreva sua própria extensão

Qualquer funcionalidade que os agentes precisam pode ser encapsulada como extensão Pi e distribuída como npm package.

1
Crie o arquivo
extensions/my-extension.ts
2
Implemente a interface

Use ExtensionAPI do Pi runtime para registrar tools, commands e event handlers.

3
Registre e reinicie

Adicione "my-extension" ao array extensions no settings.json.

extensions/my-extension.ts — template completo
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
}
⚠
Versão mínima — Requer @mariozechner/[email protected] ou superior para usar Zod schemas nos parâmetros de ferramenta.
> PRÓXIMOS PASSOS

Pronto para construir sobre o ecossistema?

Cinco minutos para ter o primeiro agente rodando. A stack completa é open source.