Pick your platform. The daemon starts automatically on login.
Port Zero's daemon watches for processes with PZ_TUNNEL and routes traffic automatically. The domain you choose determines the scope.
Configure every service to bind on port 0. The OS picks a free port at random — conflicts are structurally impossible.
PZ_TUNNEL
Use portzero.local for on-machine routing or portzero.cloud for internet tunnels. Same syntax either way.
The daemon finds the process, assigns it a stable address, and starts routing. Your app code doesn't change at all.
Every feature follows from one idea: ports should never be your problem.
Running main and feature-auth in separate
worktrees? Each gets its own address. Both live at once — no
restarts, no juggling.
Not just HTTP. WebSockets, gRPC, raw TCP, database connections — Port Zero routes it all. If it runs over TCP, it works.
Switch portzero.local to portzero.cloud and
your service is on a public HTTPS URL. No firewall rules, no reverse
proxy setup.
Every service gets the same address every run. Share a URL with a teammate — it still works tomorrow. No random subdomains, no re-auth.
A daemon runs on your machine and watches for PZ_TUNNEL. The domain determines which path it takes.
PZ_TUNNEL template.
portzero.cloud in PZ_TUNNEL.
Local routing is always free. Pay only for cloud tunnels.
Local routing + one cloud tunnel to try it
For developers who share work daily
Questions, bug reports, partnership notes, or anything else.
Include context, links, or a tunnel domain if that helps. We reply by email.
Prefer email? Write to support@portzero.net.