Yes — and you almost certainly should not rent a server to do it.
bb already ships the exact thing you described. The server and the thing that runs your agents are separate processes that talk over an outbound WebSocket. You can move the server, or you can leave it where it is and just publish it. The second is one command and costs nothing.
Two facts drive everything below:
Server stays on your laptop. getbb.app hosts the tunnel gate. Your bb dials
out, gets https://<handle>.getbb.app, and access is gated on your getbb.app
session — not a public link.
bb connect --code <code> --server https://<handle>.getbb.app
The tunnel is a builtin plugin’s background service, so it lives as long as the
bb server runs and re-establishes on restart. bb connect status to inspect,
bb connect off to unpair, bb plugin disable connect to cut all remote
access.
Bonus: bb connect expose <port> from inside a thread shares a dev server at
https://<label>--<port>.getbb.app, same account gate.
Cost: zero servers. What you avoid: a VPS, TLS certs, a reverse proxy, an auth layer, OS patching, and a second copy of your state to back up.
If you would rather not depend on getbb.app, keep bb on loopback and publish it inside your own tailnet:
tailscale serve --bg --https=443 http://127.0.0.1:38886
bb-app config set BB_APP_URL https://<machine>.<tailnet>.ts.net
Free for personal use. Tailscale ACLs are the access boundary. Works on your phone. Never expose this through Funnel — that puts the unauthenticated API on the public internet.
This is what you literally asked for, so here is the honest version.
The package ships a standalone bb-server entrypoint and a standalone
host-daemon. So:
bb-server. Node 22.19/24/26, git, and native builds for
better-sqlite3, node-pty, @parcel/watcher.
--server-bind-host 0.0.0.0 on a public box.
~/.bb-machines/<server-host>/ with its own systemd user unit, joins, and
never touches your existing ~/.bb.
--machine <your-laptop>.
Resource envelope is small: your entire ~/.bb is 17 MB today. Node is the
constraint, not bb.
Free tiers that actually fit an always-on Node process with a persistent disk:
Verify current terms before committing; free-tier rules move.
It earns its keep in exactly one case: you want threads to keep running against a repo that lives on an always-on box while your laptop is off. That is not “point the server at this computer” — that is moving the work itself, and the answer there is to enroll the VPS as the execution machine and check the repo out there.
--server-bind-host 0.0.0.0 on anything with a public IP. Never
Tailscale Funnel. Both put an unauthenticated command-execution API online.
maxPermissionMode, default Full
Access), settable only from Settings -> Machines by an owner session. If a
remote server drives your laptop, lower your laptop’s ceiling.
Run Option A today. It is one command, it is the supported path, and it gives you the phone and remote-browser access you were after. Revisit Option C only if you decide you want agents running while the laptop is off — and at that point host the checkout, not the server.