Skip to main content
Every VM gets https://name.boxd.sh the moment it boots. TLS terminated, HTTP redirects to HTTPS, HSTS set, WebSockets supported. No DNS to point, no certificates to renew, no deploy step. Start a server on port 8000, share the URL.

How it works

When a VM boots, boxd registers a default proxy that pairs https://name.boxd.sh with port 8000 on the VM. DNS is created automatically (60s TTL). You can change the port, swap to auto-detect, or add subdomain proxies for additional services on the same VM. The result: prototypes, design reviews, and founder demos are one command away from being shareable.

Use it

Open https://demo.boxd.sh and youโ€™re looking at it. If your app listens on a different port:
Or let boxd pick whichever port your app started on:

Multi-port apps

Frontend on 3000, API on 3001, websocket on 8080? Add a subdomain proxy per port.
You now have:
List what you have:
Remove one with boxd machine proxy remove api --vm demo.

Patterns

Founder demo

Spin a fresh box, run your dev server, paste the URL into a DM. Suspend it after the call. Resume in microseconds when the next person clicks the link.

Design review on a branch

Fork your golden, check out the branch, share the URL with the designer. Destroy the fork when merged.

nginx in front of multiple services

nginx is pre-installed and listens on 8000 once you start it. Point the default proxy at nginx and route internally:

FAQ

Yes. The proxy upgrades WebSocket connections transparently.
Yes. Anyone with the URL can reach the service. If you need auth, put it in your app or in front of it (e.g. basic auth via nginx).
The DNS record is removed. Recreating a VM with the same name reuses the same URL and, when possible, the same SSH port.
Custom domain binding isnโ€™t available yet. Contact the Azin team if you need it.

Next

Per-PR preview URLs

A URL per pull request, posted as a comment on the PR.

Proxies

The HTTPS layer in detail. Domains, ports, TLS.