HTTP Tunnels
Binboi only exposes HTTP. The CLI forwards a public HTTPS URL at https://<subdomain>.binboi.com to a local plain-HTTP port. TLS terminates at the Binboi edge in Frankfurt — your local server speaks plain HTTP.
How tunnels work
When you run binboi http <port>, the CLI dials the relay at api.binboi.com:8081 and opens a yamux-multiplexed connection over TCP. The control plane claims <subdomain>.binboi.com for that connection. Inbound HTTPS requests are decrypted at the edge, framed over the yamux session, and forwarded to the CLI, which proxies them to http://localhost:<port>.
Subdomain assignment
| Plan | Subdomain | |---|---| | Free | Random per session, rotates every time you start the tunnel | | Pro | Reserved subdomains — persist across sessions | | Max | Reserved subdomains + custom domains |
Random subdomains look like wispy-otter-7421.binboi.com and are released back to the pool when the tunnel closes. Reserved subdomains stay attached to your account until you release them from the dashboard.
# Random subdomain (Free)
binboi http 3000
# Reserved subdomain (Pro / Max)
binboi http 3000 my-appCLI dashboard
Once the tunnel is up, the CLI replaces its startup output with a live, ngrok-style dashboard:
- Tunnel URL (
https://<sub>.binboi.com → localhost:<port>) - Relay address and ping latency
- Uptime counter
- Request and error counters, downstream / upstream bytes
- p50 / p90 latency
- A scrolling recent-requests table (method, path, status, RTT, time)
Press Ctrl+C to close the tunnel. For full request bodies and headers, see binboi.com/dashboard/requests.
Request lifecycle
- Client sends a request to
https://<subdomain>.binboi.com. - DNS resolves to the Binboi edge.
- Caddy terminates TLS at the edge.
- The control plane looks up the active tunnel bound to
<subdomain>. - The request is forwarded over the yamux session to the CLI.
- The CLI proxies it to
http://localhost:<port>and streams the response back along the same path.
If no tunnel is active for the subdomain, the edge returns 502 Bad Gateway.
Request retention
Every request is recorded and inspectable at binboi.com/dashboard/requests.
| Plan | Retention | |---|---| | Free | 24 hours | | Pro | 7 days | | Max | 30 days |
After the retention window, requests are purged.
Limits per plan
| Plan | Active tunnels | Active tokens | Reserved subdomains | Custom domains | |---|---|---|---|---| | Free | 1 | 2 | — | — | | Pro | 10 | 25 | ✅ | — | | Max | 50 | 100 | ✅ | ✅ |
Active token quota frees up when you revoke a token.
Reserved subdomains
Pro and Max can reserve subdomains so they persist across CLI sessions. Reserve one of two ways:
- From the dashboard at binboi.com/dashboard.
- By passing it positionally on
binboi http:
binboi http 3000 my-appThe first successful reservation locks the subdomain to your account. Free accounts cannot reserve — pass no subdomain and accept the random one.
Custom domains
Max only. Bring your own domain by pointing it at the Binboi edge:
- In your DNS provider, add a
CNAMErecord:your-domain.com → cname.binboi.com. - Add the domain at binboi.com/dashboard and click Verify.
- The edge auto-provisions a TLS certificate. Traffic to
https://your-domain.comis now routed to your active tunnel.
Next
- CLI reference — every command and flag.
- API reference — list and close tunnels programmatically.
- Troubleshooting — fixes for tunnel and routing errors.