Blog do Copilotz https://copilotz.com/pt-br/blog Notas do time que constrói o Copilotz: como o runtime funciona, o que a gente aprende construindo e o que muda. pt-br Thu, 12 Nov 2026 00:00:00 GMT Por que o Copilotz: um app, para pessoas e para IA https://copilotz.com/pt-br/blog/why-copilotz https://copilotz.com/pt-br/blog/why-copilotz Thu, 12 Nov 2026 00:00:00 GMT Time Copilotz runtime mcp agentes Seus clientes estão começando a agir pelo ChatGPT, pelo Claude e pelo WhatsApp. Por que construímos um runtime em que você escreve o app uma vez, e pessoas, seus agentes e os assistentes delas usam esse app sob as mesmas regras. Um salão de beleza recebe agendamentos pelo site. No ano passado, era só isso. Este ano, alguns clientes pedem ao ChatGPT para agendar por eles. Outros escrevem no WhatsApp. E o salão quer um assistente próprio no site também. Cada um desses é um novo jeito de usar o mesmo app, e nenhum deles clica em botão.

Quatro apps para um negócio só

O jeito comum de resolver isso é construir cada um separado. O app web tem seus endpoints e suas checagens de permissão. O bot de WhatsApp ganha um servidor de webhook, um lugar para guardar as sessões e a lógica de agendamento de novo. O servidor MCP para o ChatGPT e o Claude ganha suas próprias ferramentas. O assistente do site ganha um framework com a sua própria ideia de ferramentas e de memória.

São quatro bases de código, com quatro ideias de quem está pedindo e do que pode mexer. Quando uma regra muda (digamos, nada de agendamento com menos de duas horas de antecedência), ela muda em quatro lugares. Quando algo dá errado, são quatro logs, e nenhum diz se o agendamento foi feito pela própria Ana ou por um assistente trabalhando para ela.

Escreva o app uma vez

O Copilotz é um runtime para apps que pessoas e IA usam do mesmo jeito. Você escreve o app uma vez, em plugins feitos de seis primitivas: collections para os dados, Actions para o que pode ser feito, Processors para o que acontece depois, Views para como as coisas aparecem, Resources para as configurações e Adapters para o mundo lá fora.

O agendamento do salão é uma Action, booking.make. Ela diz o que recebe e quem pode chamá-la:

ts
"booking.make": defineAction({
  input: booking,
  allow: peopleOrContacts,
  run: (ctx, input) => ctx.db.collection("booking").insertOne(input),
}),

O botão da página chama essa Action. O agente do próprio salão chama por uma ferramenta, que só repassa a chamada para a mesma Action. O ChatGPT e o Claude chamam essa ferramenta por MCP. Um cliente no WhatsApp é atendido pelo mesmo agente, com a mesma ferramenta. É um agendamento só, escrito uma vez.

As regras ficam no dado

Toda chamada no Copilotz carrega um ator: quem está agindo, para quem e onde. Uma pessoa. Um contato de fora, como um cliente no WhatsApp ou uma conversa por MCP. Ou um agente trabalhando para um deles.

As regras são checadas no dado, não dentro de cada handler. As leituras voltam filtradas pelo que o ator alcança, e as escritas são checadas, seja qual for o caminho da chamada. Um agente alcança o que a sua pessoa alcança, e o allow vale para o agente e para a pessoa para quem ele trabalha, então um agente nunca faz o que essa pessoa não poderia fazer. O que só uma pessoa deve decidir, como convidar alguém ou criar uma chave, diz inPerson, e aí nenhum agente consegue fazer.

É a parte que mais importa para a gente. Quando você abre o seu app para a IA, a questão não é se um modelo consegue chamar a sua API. Consegue. A questão é se ele só consegue fazer o que a pessoa para quem trabalha tem permissão de fazer. No Copilotz, essa resposta vem de um lugar só.

Um só registro

Toda escrita grava um evento no mesmo commit, e todo evento diz quem foi o ator. Então "quem agendou terça às dez, e para quem?" sempre tem resposta. A Ana, ela mesma, na página. Ou o concierge, para a Ana, no WhatsApp. Ou um contato, por MCP, na recepção.

Esse registro é o que você lê quando um cliente diz "eu nunca agendei isso". E é também contra ele que você testa.

Testes sem modelo

Um modelo dentro de um teste é lento, custa dinheiro e responde diferente a cada vez. Os testes do Copilotz rodam com um modelo roteirizado: você escreve as jogadas dele (chame esta ferramenta, depois diga isto), e o teste confere o que foi mostrado ao modelo, o que foi gravado e quem o registro diz que fez. Sem chave de API, sem rede. No capítulo 6 do guia, um só teste usa a página, o agente e um assistente por MCP, e confere que as regras valeram em cada um.

Onde ele está hoje

O Copilotz é código aberto, com licença MIT, escrito em TypeScript, e roda em Node, Deno e Bun. Ele é um release candidate: o 1.0 ainda não saiu, e a comunidade é pequena. Outras ferramentas têm mais integrações e mais estrada; escrevemos comparações honestas com o Mastra, o AI SDK da Vercel e o LangChain.js.

Para ver funcionando, o guia Getting Started (em inglês) constrói o salão em dez capítulos: um agendamento, depois quem vê o quê, a página web, o agente próprio, o ChatGPT e o Claude por MCP, um chat no site e o WhatsApp.

Construímos o Copilotz porque cada vez mais do que as pessoas fazem vai passar por assistentes, e os apps que esses assistentes alcançam precisam saber quem está pedindo. Escreva o app uma vez. Deixe todo mundo usar, sob as mesmas regras.

]]>