piagent_
← ~/map

$ cat ~/map/pi-remote.md

pi-remote

Phone remote control for pi: one Python process wraps pi --mode rpc — self-hosted, relay-free, built for native Windows.

tools✓ Sep 15

Facts

repository
github.com/jotapemj/pi-remote ↗
GitHub Stars
★ 10
Forks
0
license
MIT
npm / mo
—
last push
Oct 11, 2026

install

pip install -r requirements.txt, run python pi_web_bridge.py from the repository with the static folder next to it, and open the machine's port 8770 in a browser (over Tailscale, use the tailnet name)

## TL;DR

A self-hosted remote control for the pi coding agent: one Python bridge wraps pi --mode rpc and serves a phone-friendly web app over a tailnet, built for native Windows with no relay and no third party in the path.

## Key points

## FAQ

Q Can the browser attach to a pi session already running in a terminal?

No — a process has one stdin, so the bridge spawns its own pi --mode rpc. What is shared is the session file on disk: a session started in the terminal can be opened in the browser and the other way round, one writer at a time.

Q Is it safe to expose the bridge port to the internet behind a token?

No. The README's caution is explicit: this is a single-user tool, and whoever can reach the port and holds the token can run commands on your machine — there is no sandbox. Keep the port inside your tailnet.

Q Why do pi-guardrails file-access prompts never show up?

That guard draws its prompt with ctx.ui.custom(), which does not exist over RPC — the call returns undefined, which is read as deny, so every access outside the working directory is refused silently. Disable that one feature in guardrails.json (pathAccess false) or set its mode to allow; the command gate keeps working because it uses select.

## References

## Related entries

## Guides

Last updated: Sep 15, 2026