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.
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.
Links
- Official site —
- Package documentation —
- GitHub —
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 | Stateless WebSocket relay | | 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) - TLS in transit on the WebSocket connection
- Ed25519 pairing authentication — only paired devices can route messages through your peer slot on the relay (challenge-response handshake)
- The relay forwards opaque ciphertext as far as routing is concerned, but the payload itself is not end-to-end encrypted in the current version — see
relay/README.mdfor the security trade-offs
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. After that, any agent can send a message or make a request to any other agent by name — no relay, no network, no extra config.
Two LLM-facing tools are exposed in the Pi chat:
agent_send— fire-and-forget message to another local agentagent_request— request/response with timeout
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.