buildscroll

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.

$ getting started

1

Install

brew install lfsmoura/tap/buildscroll
2

Run

buildscroll

Spawns claude by default. Use --command /bin/zsh for a shell.

3

Scan

A QR code appears in your terminal. Scan it with your phone. You're in.

$ how it works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   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.

$ examples

# spawn a shell
buildscroll --command /bin/zsh

# run htop remotely
buildscroll --command htop

# use a different relay
buildscroll --relay https://my-relay.example.com