remote_pi / pi-extension
CLAUDE.md475 starsChanged 5 months agoMITView on GitHub
Extensão para o Pi coding agent que adiciona o slash command /remote-pi. Embarca o SDK do Pi (@earendil-works/pi-coding-agent) e expõe via WebSocket pro relay. Faz parte da mesh de agentes coding cross-PC do Remote Pi: cada PC roda esta extensão (Node daemon) com uma Pi-key Ed25519 no keyring do sistema; o celular é autenticador inicial via QR; entre PCs irmãos do mesmo Owner, broker UDS local + relay forward Pi-to-Pi via WS roteiam envelopes com prefixo <pc>:<peer>. Protocolo, identidades, ACK,…
- Reads credentials
Files
Remote Pi — Pi Extension (Node + TypeScript)
Extensão para o Pi coding agent que
adiciona o slash command /remote-pi. Embarca o SDK do Pi
(@earendil-works/pi-coding-agent) e expõe via WebSocket pro relay.
Faz parte da mesh de agentes coding cross-PC do Remote Pi: cada PC
roda esta extensão (Node daemon) com uma Pi-key Ed25519 no keyring do
sistema; o celular é autenticador inicial via QR; entre PCs irmãos do
mesmo Owner, broker UDS local + relay forward Pi-to-Pi via WS roteiam
envelopes com prefixo <pc>:<peer>.
Protocolo, identidades, ACK, roteamento cross-PC e trust model: ver
../PROTOCOL.md (doc canônica do repo).
Stack
- Node 20+ / TypeScript 6
- Module system: ESM only (NodeNext). Imports com extensão
.jsmesmo em.ts - Package manager: pnpm (não usar npm/yarn)
- Crypto: libsodium-wrappers (Curve25519 + ChaCha20-Poly1305)
- Pi-secret storage:
@napi-rs/keyring(Keychain macOS / libsecret Linux desktop / Credential Manager Windows). Headless Linux sem D-Bus cai pra~/.pi/remote/identity.json(chmod 0600) com warning — instale GNOME Keyring/KWallet pra hardening real.
Comandos
pnpm install— instala depspnpm typecheck—tsc --noEmit, deve passar zero errospnpm build—tsc, geradist/pnpm dev—tsx src/index.ts, executa direto sem build
Configuração do relay
Ordem de resolução (precedência):
process.env.REMOTE_PI_RELAY— escape hatch pra CI/ops~/.pi/remote/config.json({ "relay": "..." }) — persistido via/remote-pi set-relay <url>kDefaultRelayUrl(https://relay-rp1.jacobmoura.work) — produção
Slash commands:
/remote-pi set-relay <http://… | https://…>— grava URL em~/.pi/remote/config.json. Validação rejeitaws://,wss://, string vazia e URLs malformadas (a extensão converte http(s)→ws(s) internamente ao abrir o WebSocket)./remote-pi config— mostra a URL efetiva atual + de qual fonte vem (env/config/default).
_cmdStart chama resolveRelayUrl() e exibe o source no notify
("Connecting to relay <url> (source: …)") pra QA validar.
Dependências importantes
@earendil-works/pi-coding-agent— SDK do Pi (AgentSession,SessionManager,ModelRegistry)ws— WebSocket client
Convenções
- Strict TS:
"strict": true, semanyexceto onde inevitável (useunknown+ narrow) - Imports:
import { foo } from "./bar.js"(extensão obrigatória em ESM) - Top-level await ok (ESM permite)
- Erros:
class XxxError extends Errorpara classes nomeadas, throw cedo no boundary - Logging:
console.logok no MVP; depois migrar prapinoou similar
NÃO fazer
- Não escrever CommonJS (
require,module.exports) - Não comitar
dist/(já no .gitignore raiz) - Não criptografar/descriptografar de forma custom — usar libsodium
- Não introduzir dependência que não seja ESM-friendly
Modo orquestrado
Se receber um prompt começando com [ORCH:<task-id>], leia
../.orchestration/INSTRUCTIONS.md antes de qualquer outra ação. Esse marker
indica que outro agente está coordenando o trabalho e tem regras específicas
(onde escrever resultado, não comitar, etc).
In this repository7 other files it gives its agents.
- app/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- cockpit/CLAUDE.mdCLAUDE.md
- relay/CLAUDE.mdCLAUDE.md
- site/CLAUDE.mdCLAUDE.md
- deploy-cockpitSkill
- deploy-serverSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

