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.
354
stars
899
commits
Dart
primary language
Sep 10, 2026
updated
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.
| Platform | Status |
|---|---|
| Google Play (Android) | Get it on Google Play |
| App Store (iOS) | Download on the App Store |
| APK (sideload, Android) | GitHub Releases |
| 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 |
Flutter app ──wss──► Relay (Rust) ◄──wss── Pi extension (Node)
│
Local Pi process
│
UDS broker (local mesh)
│
Other agents on the same machine
~/.pi/remote/ (desktop)relay/README.md for the exact trust boundaryWhen 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 agentagent_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 reagent_request — request/response with timeout, available only as deprecated legacy behaviorThis 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.
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.
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.
@eko24ive/pi-askpi install npm:@eko24ive/pi-ask
With pi-ask installed, the agent's ask_user clarification prompts (structured
questions with options, multi-select, and previews) render natively in the
mobile app — answer from your phone and the flow resolves on the desktop.
Without it, the agent simply asks in plain chat text (also answerable from the
phone, just unstructured). Remote Pi works either way; pi-ask is optional.
The MVP is functional. Planning notes and roadmap live in plan/.
License is per-package — see each subproject's LICENSE file (the pi-extension
is MIT). A repository-wide license decision is pending.
Dart
73.8%
TypeScript
16.8%
Rust
3.4%
C
2.4%
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.
354
stars
899
commits
Dart
primary language
Sep 10, 2026
updated
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.
| Platform | Status |
|---|---|
| Google Play (Android) | Get it on Google Play |
| App Store (iOS) | Download on the App Store |
| APK (sideload, Android) | GitHub Releases |
| 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 |
Flutter app ──wss──► Relay (Rust) ◄──wss── Pi extension (Node)
│
Local Pi process
│
UDS broker (local mesh)
│
Other agents on the same machine
~/.pi/remote/ (desktop)relay/README.md for the exact trust boundaryWhen 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 agentagent_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 reagent_request — request/response with timeout, available only as deprecated legacy behaviorThis 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.
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.
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.
@eko24ive/pi-askpi install npm:@eko24ive/pi-ask
With pi-ask installed, the agent's ask_user clarification prompts (structured
questions with options, multi-select, and previews) render natively in the
mobile app — answer from your phone and the flow resolves on the desktop.
Without it, the agent simply asks in plain chat text (also answerable from the
phone, just unstructured). Remote Pi works either way; pi-ask is optional.
The MVP is functional. Planning notes and roadmap live in plan/.
License is per-package — see each subproject's LICENSE file (the pi-extension
is MIT). A repository-wide license decision is pending.
Dart
73.8%
TypeScript
16.8%
Rust
3.4%
C
2.4%