Pular para o conteúdo
    Guia · Nível IntermediárioAgentes e automação

    OpenDuet da CopilotKit: instalação, aprovações e limites do agente proativo via AG-UI

    Como rodar o OpenDuet, template open source de agente proativo da CopilotKit: pré-requisitos, passo a passo, aprovações, verificação, erros comuns e quando vale a pena adotar a versão 0.1.0.

    Mão segurando caneta sobre rascunho impresso de pagamento de fatura, prestes a marcar aprovação, em bancada de cozinha iluminada pela luz suave de uma janela pela manhã
    No OpenDuet, template de agente proativo da CopilotKit, ações sensíveis como pagamentos dependem de aprovação humana antes de serem executadas
    Neste artigo

    A CopilotKit (abre em nova aba) lançou em 27 de outubro de 2026 o OpenDuet (abre em nova aba), um template open source de agente "proativo". A ideia é inverter a relação de sempre com chatbots: em vez de você perguntar, o agente olha seus aplicativos conectados em segundo plano, manda um resumo curto toda manhã e só escreve quando alguma coisa realmente precisa de você. Quando precisa agir em seu nome, mostra um rascunho e espera sua aprovação.

    Lendo o README com calma, a palavra "proativo" acabou não sendo o que mais me chamou atenção. O que interessa é como o projeto resolve uma pergunta bem concreta: o que acontece quando um agente quer mandar um e-mail, pagar uma fatura ou apagar um arquivo enquanto você não está olhando? O OpenDuet responde com uma camada de aprovações que dá para configurar. Este guia mostra como instalar, como essa camada funciona e onde o projeto ainda está verde. E está bem verde: a versão é 0.1.0 e o lançamento aconteceu ontem.

    O que o repositório entrega de fato

    Antes de clonar qualquer coisa, vale entender o que está dentro da caixa, porque a arquitetura explica a maior parte dos pré-requisitos.

    Desenvolvedora abre uma caixa de papelão sobre uma bancada de trabalho e examina pequenos módulos impressos, com uma folha de papel ao lado, sob luz natural lateral
    O OpenDuet chega como template open source sob licença MIT. Na versão 0.1.0, montar o agente proativo exige atenção à integração via AG-UI e ao fluxo de aprovações.
    • Licença MIT, com copyright de 2026 da CopilotKit. Dá para usar, modificar, vender e sublicenciar, desde que o aviso de copyright vá junto. Como em qualquer MIT, o software vem "como está", sem garantia.
    • Versão 0.1.0 no package.json da raiz, com o pacote marcado como private: true. Na página do GitHub em 28 de outubro, o repositório tinha 69 commits na main, 75 branches e nenhuma tag. O próprio README exibe um selo de "early development".
    • É um template, não um produto. O package.json descreve o OpenDuet como "o agente proativo open source, construído sobre o OpenBot". A plataforma de verdade fica na pasta openbot/. O OpenDuet é uma configuração e uma interface montadas em cima dela.
    • Dependência de um serviço da CopilotKit. Threads e memória ficam no CopilotKit Intelligence. O README é explícito: o servidor não sobe sem essa chave. O plano gratuito Developer basta, segundo a documentação.

    O script de inicialização revela como as peças se encaixam. Ele sobe um Postgres e, para cada Bot, um "computador" próprio em Docker. Esse computador é opcional e tem navegador, o que permite ao agente navegar e operar páginas. Depois aplica as migrações do banco e inicia três processos: a API, um routine worker e o app. O worker é a parte que faz o agente "proativo" funcionar. É ele que mantém tarefas rodando depois que você fecha o app e que executa as checagens em segundo plano.

    O agente em si é intercambiável. O OpenDuet conversa com ele pelo protocolo AG-UI, também da CopilotKit, e o README lista LangGraph, Mastra, CrewAI, Pydantic AI, Google ADK ou um agente escrito à mão como opções. A interface pode ser usada na web, no celular, no Slack ou no Microsoft Teams, sempre com uma única conversa contínua, por texto ou voz.

    Tem ainda o recurso de Automatic Learning. Ele pega as respostas que você dá nos check-ins do agente e as transforma em skills reutilizáveis, mas só depois que você revisa e publica. A aprendizagem não entra em produção sozinha, e isso é uma boa decisão.

    "Enterprise-ready" ou "early"?

    Aqui as fontes oficiais discordam entre si. Atai Barkai, fundador da CopilotKit, anunciou o projeto no X assim:

    🎉 Apresentando o OpenDuet. Agentes de IA proativos e self-hostable que são seus e funcionam com QUALQUER harness de agente. Inclui: construir, gerar e editar assets ao vivo; aprovações com humano no loop; uso de computador; mobile, web e canais. Repo → https://github.com/CopilotKit/OpenDuet. Movido por @CopilotKit e AG-UI. Clone este template e personalize como quiser. Pronto para empresas.

    — Atai Barkai (@ataiiam), 27 de out. de 2026, no X

    O post oficial do blog, assinado por Eli Berman e Anmol Baranwal, descreve o projeto como um ponto de partida inicial para um único dono. O README diz "early development". Não existe guia de deploy hospedado do OpenDuet nem imagem pronta. Os guias de Docker e Helm que estão em openbot/docs fazem o deploy do OpenBot puro, não do OpenDuet.

    Minha leitura: "enterprise-ready" descreve a ambição, e "single-owner" descreve o estado atual. Se a sua equipe planeja colocar isso diante de vários usuários com dados sensíveis na semana que vem, a documentação do próprio projeto desaconselha.

    Quando vale a pena (e quando não)

    Vale a pena se:

    • você quer estudar uma implementação de referência de agente com humano no loop, com aprovações por tipo de ação, worker em segundo plano e computador isolado por agente;
    • você já tem um agente em LangGraph, CrewAI ou Mastra e quer uma interface pronta, com memória, canais e aprovações, sem construir tudo do zero;
    • você vai rodar para si mesmo, como assistente pessoal ou protótipo interno, e aceita mexer em código de uma versão 0.1.0;
    • licença permissiva importa para você: a MIT permite usar o template como base de produto comercial.

    Não vale a pena (ainda) se:

    • você precisa de multiusuário, permissões por equipe ou um caminho de deploy documentado;
    • sua política de dados não permite threads e memória num serviço da CopilotKit (o Intelligence é obrigatório, não opcional);
    • você precisa de suporte a português garantido. Nada na documentação trata de idioma, então o comportamento depende do modelo que você escolher e dos prompts do template;
    • você quer algo que um time não técnico instale sozinho.

    Pré-requisitos

    Sobre custo: o README não estima gasto de API. Na prática você paga os tokens ao provedor do modelo, e um agente que faz checagens periódicas em segundo plano consome tokens mesmo quando você não está conversando com ele. Os limites do plano gratuito do Intelligence também não aparecem no material publicado. Para equipes no Brasil, OpenAI e Anthropic cobram em dólar no cartão internacional, então coloque câmbio e IOF na conta antes de deixar o worker rodando 24 horas por dia.

    Passo a passo

    1. Clonar e criar o .env

    git clone https://github.com/CopilotKit/OpenDuet.git
    cd OpenDuet
    cp .env.example .env

    Abra o .env e leia o .env.example inteiro antes de seguir. É ali que ficam as variáveis de modelo e de banco descritas abaixo.

    2. Instalar as dependências com Bun

    bun install

    3. Conectar ao CopilotKit Intelligence

    npx --yes copilotkit@latest login
    npx --yes copilotkit@latest project select

    O primeiro comando autentica sua conta. O segundo associa o repositório a um projeto do Intelligence. Sem isso o servidor não inicia. Não é um aviso que dá para ignorar, é uma condição de partida.

    4. Preparar o Automatic Learning

    bun openbot/scripts/setup-learning.ts

    Esse script prepara a parte que converte respostas de check-in em skills. O README o coloca como passo obrigatório do quick start, então não pule.

    5. Escolher o modelo

    O modelo padrão está definido em openbot/examples/openduet/model.yaml: OpenAI gpt-5.6-terra, lido de OPENAI_API_KEY. Para usar outro modelo da OpenAI, troque o default_model nesse arquivo.

    Para usar a Anthropic, configure no .env:

    BOT_PROVIDER=anthropic
    ANTHROPIC_API_KEY=sua-chave-aqui
    # opcional; sem isso, o padrão é claude-sonnet-4-5
    BOT_MODEL=claude-sonnet-5-5

    O README não documenta outros provedores, como modelos locais ou gateways compatíveis com OpenAI. Se você precisa deles, vai ter que olhar o código em openbot/. Note também que o README informa que o projeto não tem afiliação nem endosso da Anthropic.

    6. Subir tudo

    bash scripts/start.sh

    Esse é o comando que mais trabalha. Ele sobe o Postgres e os computadores dos Bots em Docker, aplica as migrações e inicia a API, o routine worker e o app. Na primeira execução pode demorar, porque o Docker precisa baixar imagens.

    7. Abrir o app

    Acesse http://localhost:3010.

    Aprovações: a parte que merece seu tempo

    As aprovações ficam em /settings/approvals. Cada tipo de ação tem três opções:

    OpçãoO que faz
    Allow onceLibera essa execução específica
    Always allowLibera esse tipo de ação daqui em diante
    RefuseRecusa

    Por padrão, o agente pede confirmação antes de enviar, pagar, assinar ou apagar. Segundo o post de lançamento, antes de mandar uma mensagem, pagar uma fatura ou deletar qualquer coisa, ele mostra um rascunho e espera.

    Uma coisa me deixou confusa e acho que vale deixar registrada. O blog diz que "ações sensíveis sempre precisam de aprovação", mas a tela oferece "Always allow". As duas frases podem conviver: talvez certas categorias ignorem o "always", talvez "sempre" signifique "por padrão". O material publicado não esclarece. Não presuma. Teste no seu ambiente o que acontece ao marcar "Always allow" numa ação de envio, antes de conectar uma conta real.

    Trazendo seu próprio agente via AG-UI

    A promessa do OpenDuet é que o "cérebro" seja substituível. A interface, a memória, as aprovações e os canais ficam no template, e o agente que decide o que fazer pode ser qualquer um que fale AG-UI. O README cita LangGraph, Mastra, CrewAI, Pydantic AI, Google ADK e agentes escritos à mão.

    O que a documentação publicada não mostra é uma matriz de compatibilidade: quais integrações foram testadas, em quais versões e com quais limitações. A lista indica o que deveria funcionar pelo protocolo, mas não equivale a "testado em CI". Com 0 tags e 69 commits, eu trataria cada integração além da padrão como experimento. Comece com o agente que vem no exemplo, confirme que aprovações e briefings funcionam, e só então troque o agente.

    Como verificar

    Uma instalação que "parece ter subido" não quer dizer muita coisa. Confira estes pontos, nesta ordem:

    1. Contêineres de pé. Rode docker ps e confirme que há um Postgres e os contêineres dos computadores dos Bots.
    2. App respondendo em http://localhost:3010. Se a página não carrega, volte ao terminal do start.sh: a API, o worker e o app são processos separados, e qualquer um deles pode ter falhado.
    3. Intelligence conectado. Mande uma mensagem, recarregue a página e veja se a thread continua lá. Threads e memória dependem do Intelligence, então perder a conversa ao recarregar indica problema nessa conexão.
    4. Aprovações configuradas. Abra /settings/approvals e confira se enviar, pagar, assinar e apagar estão em modo de confirmação.
    5. Teste de aprovação de verdade. Peça ao agente uma ação que caia numa categoria sensível, de preferência algo inofensivo, como um rascunho para você mesmo. O esperado é ver o rascunho e um pedido de aprovação, não a ação executada.
    6. Trabalho em segundo plano. Peça uma tarefa longa, como montar um dashboard, feche o app e volte depois. Se a tarefa avançou, o routine worker está fazendo o trabalho dele.

    Erros comuns

    O servidor não sobe e reclama da chave. Quase sempre falta o Intelligence. Rode de novo npx --yes copilotkit@latest login e npx --yes copilotkit@latest project select. O README é taxativo: sem essa chave, não há servidor.

    Porta 5432 ocupada. Comum em quem já tem um Postgres local. Defina POSTGRES_PORT com outra porta e ajuste o DATABASE_URL para a mesma porta. Esquecer a segunda parte é o erro clássico: o contêiner sobe na porta nova e a aplicação continua procurando a antiga. Para ver quem está usando a porta:

    lsof -i :5432

    Seguir o snippet do blog. npm ci com npm run dev pula o login no Intelligence e o setup de learning. Use o fluxo do README.

    Bun desatualizado. O requisito é Bun 1.3 ou mais recente. Confira com bun --version antes de culpar o projeto.

    Trocar para Anthropic só colocando a chave. Sem BOT_PROVIDER=anthropic, o projeto continua usando o padrão da OpenAI. As duas variáveis precisam estar no .env.

    Procurar o deploy em openbot/docs. Os guias de Docker e Helm dessa pasta fazem o deploy do OpenBot puro. Para o OpenDuet, ainda não existe guia de deploy nem imagem publicada. Se você precisa de um servidor fora da sua máquina, essa parte vai ser montada por você.

    Esperar maturidade de produto. Não há issues ou relatos independentes consolidados porque o projeto acabou de sair. Isso não quer dizer que não haja problemas, só que ninguém teve tempo de encontrá-los em público ainda. Leia os commits recentes antes de atualizar.

    Limites que pesam para equipes brasileiras

    Três pontos aparecem pouco no anúncio e muito na hora de adotar:

    • Idioma. Não há nada documentado sobre português. Os modelos padrão lidam bem com o idioma, mas briefings, prompts do template e mensagens da interface podem estar em inglês. Planeje traduzir a camada de prompts se o público final não for técnico.
    • Dados fora de casa. "Self-hosted" aqui quer dizer que app, API, worker e banco rodam na sua infraestrutura. Threads e memória passam pelo CopilotKit Intelligence, e as chamadas de modelo vão para OpenAI ou Anthropic. Para quem precisa avaliar tratamento de dados pessoais, o fluxo envolve pelo menos dois terceiros, e isso precisa entrar no mapeamento antes de conectar e-mail ou financeiro.
    • Custo contínuo e opaco. Um agente que checa aplicativos em segundo plano gasta tokens o tempo todo, e não há estimativa publicada. Meça por alguns dias com um único usuário antes de projetar o custo para uma equipe.

    O OpenDuet é, hoje, a melhor coisa que um template 0.1.0 pode ser: uma arquitetura legível, com as peças que costumam ser chatas de construir já encaixadas, sob licença MIT. Use para aprender como um agente proativo deve pedir licença antes de agir, e mantenha "Always allow" desligado até entender exatamente o que essa opção libera.

    Filipe Mendes

    Ver perfil completo