Mirror from GitHub
  • Dart 66.9%
  • TypeScript 18.5%
  • JavaScript 4.6%
  • Rust 3.5%
  • C 3%
  • Other 3.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jacob Moura e99c94a3b0 chore(cockpit): bump 1.18.1+51
Repin flterm/libghostty na tag unificada cockpit-pin-flterm-cpu-baseline:
corrige a ghostty.dll do CI compilada com cpu=native do runner (AVX2/512),
que crashava com illegal instruction (0xC000001D) em CPUs sem essas
extensoes — o app 'piscava e fechava' sem log no Windows.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 16:07:10 -03:00
.claude/agents feat: add structured identity for mesh peers and enhance cmux-dispatch script 2026-06-06 11:05:37 -03:00
.cockpit fix(cockpit): stabilize Linux task launch and hot restart 2026-07-23 21:59:56 -03:00
.github/workflows feat(rp-s3): endpoint de upload de manifests + publish automático no CI 2026-07-29 22:09:33 -03:00
.orchestration feat(orch): push de conclusão worker→orquestrador no dispatch Cockpit 2026-07-19 18:17:22 -03:00
app fix(app): use axisAlignment in SizeTransition for Flutter 3.41 CI compat 2026-07-16 01:39:44 -03:00
branding fix: update SizeTransition alignment to use axisAlignment for Flutter compatibility 2026-06-12 13:05:21 -03:00
cockpit chore(cockpit): bump 1.18.1+51 2026-07-31 16:07:10 -03:00
pi-extension feat(mesh): enable canonical cross-pc routing (#67) 2026-07-22 18:49:28 -03:00
plan docs(plan): renumera semantic highlight e goto definition para 55 e 56 2026-07-28 12:29:23 -03:00
relay feat(mesh): enable canonical cross-pc routing (#67) 2026-07-22 18:49:28 -03:00
review feat: steer app messages during active turns 2026-06-12 11:28:42 +02:00
rp-s3 feat(rp-s3): endpoint de upload de manifests + publish automático no CI 2026-07-29 22:09:33 -03:00
scripts feat(orch): push de conclusão worker→orquestrador no dispatch Cockpit 2026-07-19 18:17:22 -03:00
site feat(site): reposiciona página do Cockpit como Agentic IDE 2026-07-19 23:41:25 -03:00
.gitignore chore: ignora .cockpit/worktrees/ 2026-07-22 20:12:18 -03:00
CHANGELOG.md chore: update iOS deployment target to 18.0 and adjust related configurations 2026-05-26 21:38:43 -03:00
CLAUDE.md feat(orch): push de conclusão worker→orquestrador no dispatch Cockpit 2026-07-19 18:17:22 -03:00
LICENSE chore: adiciona LICENSE MIT (requisito SignPath OSS) 2026-07-30 11:24:56 -03:00
PROTOCOL.md feat(mesh): enable canonical cross-pc routing (#67) 2026-07-22 18:49:28 -03:00
README.md feat(mesh): enable canonical cross-pc routing (#67) 2026-07-22 18:49:28 -03:00

Remote Pi logo

Remote Pi

Control your Pi coding agent from your phone. Pair with a one-time QR code and chat with your local agent — even when you're away from your computer.


Downloads

Platform Status
Google Play (Android) Get it on Google Play
App Store (iOS) Download on the App Store
APK (sideload, Android) GitHub Releases

What's in this repo

Package Stack Role
app/ Flutter (iOS / Android) Mobile client
pi-extension/ Node + TypeScript Pi extension exposing /remote-pi
relay/ Rust + Tokio WebSocket routing + signed mesh membership storage
site/ NextJS Landing page + legal pages

Architecture

Flutter app ──wss──► Relay (Rust) ◄──wss── Pi extension (Node)
                                                  │
                                           Local Pi process
                                                  │
                                           UDS broker (local mesh)
                                                  │
                                           Other agents on the same machine
  • Pairing via short-lived QR code; peers persisted in Keychain (mobile) and ~/.pi/remote/ (desktop)
  • Ed25519 authentication — the Relay handshake proves possession of the connection key; App↔Pi pairing is enforced by the endpoints. For Pi↔Pi routing, the current Relay permits a route when a correctly signed Owner blob lists both Pi keys; that check does not prove the Owner paired with or controls either Pi
  • TLS protects traffic in transit, but current payloads are not E2E; see relay/README.md for the exact trust boundary

Local agent mesh

When multiple Pi agents run on the same machine, they discover each other through a Unix Domain Socket broker managed by the extension. One agent wins the leader election and binds the socket; the others connect as clients. For targets on that same machine, agents use the opaque addresses returned by list_peers — no relay, no network, no extra config.

Three LLM-facing tools are exposed in the Pi chat:

  • list_peers — lists local and cross-PC addresses available to the agent
  • agent_send — sends a unicast message and waits for a delivery ACK. Compatible ACK values are received, busy, denied, and timeout; current brokers return received, denied, or timeout, while busy only indicates a dropped message from an old broker leader that must be restarted before resending. Broadcast is sent with no ACK. Asynchronous content replies use re
  • agent_request — request/response with timeout, available only as deprecated legacy behavior

This lets you set up local multi-agent workflows (e.g. a backend agent asks a frontend agent for help) entirely on your machine, in parallel with the remote mobile pairing.

Relay

A free community relay is available at:

wss://relay-rp1.jacobmoura.work

It's enough to get started, but the relay operator can see the content of your messages and is a single point of trust for routing. For sensitive work, we strongly recommend running your own relay — it's a single Docker command and the only thing your traffic ever touches is your own infrastructure.

Full security trade-offs and the self-hosting guide live in relay/README.md.

Getting started

Install the Pi extension in any project where Pi runs:

pi install npm:remote-pi

Then in the Pi chat, run:

/remote-pi

The setup wizard walks you through agent name, session name, and relay choice, then prints a QR code. Scan it with the Remote Pi mobile app and you're paired.

Statu

The MVP is functional. Planning notes and roadmap live in plan/.

License

License is per-package — see each subproject's LICENSE file (the pi-extension is MIT). A repository-wide license decision is pending.