Every Vers VM is reachable from the public internet at a predictable hostname, through a proxy that handles TLS, across a wide port range. You don’t configure any of this — it’s automatic the moment youDocumentation Index
Fetch the complete documentation index at: https://docs.vers.sh/llms.txt
Use this file to discover all available pages before exploring further.
vers run.
This page documents what the network looks like from the inside and outside of a VM.
Hostnames
Every VM has a public hostname of the form:{vm-id} is the ID returned by vers run (e.g. vm-abc123). The hostname resolves to the Vers edge proxy, which routes the connection to your VM.
There’s no per-user setup. DNS for *.vm.vers.sh is managed by Vers; wildcard TLS certificates are issued automatically.
Port range
Vers routes TCP traffic to ports 1024 through 10000 on your VM. Any server you run on a port in that range is reachable at:TLS is handled for you
The Vers proxy terminates TLS for every VM hostname. That means:- Your VM serves plain HTTP.
- Browsers and clients see HTTPS.
- You do not need to configure a certificate, manage renewal, or run a TLS stack of your own.
IPv6 dual-stack (important)
The Vers edge proxy reaches your VM over IPv6. If your server binds only to IPv4 (0.0.0.0 or 127.0.0.1), the proxy can’t connect and requests will fail.
Bind to all interfaces, dual-stack:
| Language / framework | Dual-stack bind |
|---|---|
Node.js (net, http, express) | server.listen(PORT, "::") |
Python (http.server, flask) | app.run(host="::", port=PORT) |
Go (net/http) | http.ListenAndServe(":PORT", handler) — Go binds dual-stack by default |
Rust (tokio, axum) | Bind to [::]:PORT |
| Gunicorn / Uvicorn | --bind [::]:PORT |
0.0.0.0 or 127.0.0.1, override it explicitly. “It works locally but nobody else can reach it” is almost always a missing dual-stack bind.
SSH
SSH access is howvers connect works. It’s layered a little differently from HTTP:
- SSH connects over port 443 (not the 1024–10000 range).
- The SSH connection is tunneled through TLS so corporate firewalls that only permit 443 outbound can still reach your VMs.
- You don’t manage SSH keys manually.
vers connecthandles key provisioning, fingerprint verification, and connection setup automatically.
vers connect for the CLI details and VM access for interactive and programmatic access patterns.
Outbound connectivity
Your VM has unrestricted outbound internet access. DNS, package installs, API calls, cloud storage uploads — all work out of the box, no configuration. Common things that work:Multiple services on one VM
You can run any number of services on different ports in the routed range. Each is independently reachable:https://{vm-id}.vm.vers.sh:8000→ the Python static-file serverhttps://{vm-id}.vm.vers.sh:3000→ your Node.js app
Putting it together
A typical full-stack workflow looks like:What’s next
VM access
Interactive SSH, command execution, file transfer.
Agent swarms tutorial
Running real services on branched VMs, including the “serve it” step.
vers connect
CLI details for SSH access.
Architecture
How VMs sit in the tree and what branching means for networking.