| name | vers-networking |
| description | How Vers VM networking works — public URLs, port routing, TLS proxy, IPv6, and running services on VMs. |
Vers VM Networking
Every Vers VM gets a public URL and can serve traffic on any port. This is how you expose services, APIs, and web interfaces running on VMs.
Public URLs
Every VM is reachable at:
https://{vmId}.vm.vers.sh:{port}
For example:
https://45a68069-defc-4233-9865-6298d87053af.vm.vers.sh:3000/health
The Vers proxy terminates TLS and routes traffic to the specified port on the VM. This works for any protocol over TCP — HTTP, WebSocket, gRPC, etc.
Key Facts
- All ports are routable. Specify the port in the URL. There is no need for SSH tunnels or port forwarding.
- TLS is handled by the proxy. Clients connect via
https://, the proxy terminates TLS and forwards to the VM. Your service does NOT need to handle TLS.
- IPv6 required. Services on the VM must bind to IPv6 (e.g.,
:: or ::1) for the proxy to reach them. Binding to 0.0.0.0 (IPv4 only) will not work through the proxy.
- No firewall. All ports are open by default. There is no allowlist or port mapping configuration needed.
Running a Service on a VM
Bind to IPv6
Most frameworks default to IPv4 (0.0.0.0). You must configure them to listen on :: (all interfaces, IPv6 + IPv4 dual-stack).
Node.js (Hono + @hono/node-server):
import { serve } from ;
({ : app., : , : });