Pular para o conteúdo
ColliePWA

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@experimental

Salve 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.