Remote terminal over WebSocket.
Run a command on your machine. Scan a QR code.
Get a fullscreen terminal on your phone.
No SSH. No port forwarding. No config files.
Install
brew install lfsmoura/tap/buildscroll
Run
buildscroll
Spawns claude by default. Use --command /bin/zsh for a shell.
Scan
A QR code appears in your terminal. Scan it with your phone. You're in.
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β your mac βββWSβββΆβ cloudflare ββββWSβββ your phone β
β (bridge) β β (relay) β β (xterm.js) β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
PTY β passthrough browser
ββββββββββββ
β claude / β
β shell β
ββββββββββββ
transport
Binary WebSocket frames. PTY I/O piped directly through a Cloudflare relay.
auth
Random token in the URL #fragment β never sent to the server in HTTP requests.
latency
Cloudflare edge. The relay is a Durable Object β your session lives close to you.
terminal
xterm.js in the browser. Full ANSI support. Resize events propagate back to the PTY.
# spawn a shell
buildscroll --command /bin/zsh
# run htop remotely
buildscroll --command htop
# use a different relay
buildscroll --relay https://my-relay.example.com