Aprove as ações do seu próprio agente direto do seu celular.
O ColliePWA mostra as perguntas de um agente criado por você no celular, ao lado dos seus agentes de terminal. Você responde com um toque, e o agente recebe sua resposta.
01/Agentes duráveis
Seu próprio agente, no seu celular.
Um agente durável é um agente que você mesmo cria e executa, por exemplo com Pi Durable. Ele se comunica com seu Collie por meio de um protocolo pequeno, o wire, e um SDK para Node e Bun faz essa ponte para você. O ColliePWA então desenha as perguntas do agente, as conversas e o chat dele, sem você precisar escrever código de interface.
Experimental. O wire pode mudar em qualquer versão secundária, ou o recurso pode ser removido. Hoje apenas os exemplos no repositório do Collie utilizam esse protocolo.
02/ColliePWA
O que você recebe
- Aprovações, com o tempo restante
- Uma pergunta do agente vira um card no seu celular: sim ou não, uma escolha, uma linha de texto ou um formulário curto. Você responde com um toque, e o card mostra por quanto tempo a pergunta fica aberta.
- Um chat, com histórico
- Cada conversa do agente se abre como um chat. O agente guarda o histórico, então você também pode ler as conversas já encerradas.
- Uma seção própria, e notificações push
- O agente ganha sua própria seção Agentes duráveis no celular, e a seção sobe para cima dos seus spaces quando há uma pergunta pendente. Com o push ativado, uma pergunta também envia uma notificação.
- Ao lado das suas sessões de terminal
- Suas sessões de Herdr, tmux e zellij mantêm a mesma aparência e funcionamento de antes. Um agente durável é apenas mais uma origem de onde uma sessão pode vir.
03/hello.mjs
Dez linhas até a primeira pergunta
Instale o SDK na pasta do seu agente:
$ npm install @colliepwa/durable-sdk@experimentalSalve este agente como hello.mjs e execute com node hello.mjs ou bun hello.mjs. Ele exibe o caminho do socket e aguarda.
import { openCollie } from "@colliepwa/durable-sdk";
const socket = process.env.COLLIE_DURABLE_SOCKET ?? `${process.env.XDG_RUNTIME_DIR}/hello/app.sock`;
const collie = await openCollie({ socket, hostName: "hello", caps: { asks: true } });
const pane = collie.workspace("hello", { title: "Hello" }).tab("main", { title: "Questions" }).pane("deploy", { title: "Deploy", harness: "hello" });
collie.ready();
console.log(`listening ${collie.address}`);
const options = [{ id: "yes", label: "Yes" }, { id: "no", label: "No" }];
const answer = await pane.ask({ kind: "choice", toolCallId: "deploy-1", itemId: "deploy-1", title: "Deploy to staging?", options });
console.log(`answer: ${answer.optionIds[0]}`);
await collie.close();Em um segundo terminal, anexe o agente ao seu Collie usando o caminho exibido. O --restart reinicia a bridge do Collie: seu celular reconecta em poucos segundos, e suas sessões de terminal continuam rodando.
$ collie durable attach hello --socket /run/user/1000/hello/app.sock --restart
Abra o ColliePWA no celular. Uma linha hello aparece na seção Agentes duráveis. Abra-a, e a conversa única dela terá a pergunta "Deploy to staging?". Toque em Yes ou No, e o agente exibe sua resposta e encerra.
04/Socket · HTTPS
Onde ele roda
- Na mesma máquina
- O Collie acessa o agente por um socket privado, um arquivo que só o seu usuário consegue abrir.
- Em qualquer outro lugar
- O Collie acessa o agente via HTTPS com um token de 32 bytes aleatórios ou mais, e qualquer pessoa com o token pode responder por você.
- Node ou Bun
- O SDK roda no Node 22.18 ou posterior e no Bun 1.4 ou posterior.
05/Documentação
Leia a documentação
A página Agentes duráveis na documentação cobre a configuração, as duas formas de conexão, solução de problemas e o que um agente durável pode exibir no celular.