Vercel Labs open-sourced portless, a tool that replaces port numbers with stable, named .localhost URLs for local development. Run portless myapp next dev and you get https://myapp.localhost instead of http://localhost:3000. HTTPS and HTTP/2 are on by default. A local certificate authority is generated and trusted on first run. The README’s tagline is blunt: “For humans and agents.”
The human ergonomics are real, but they are not the story. Named URLs for local dev servers have existed in various forms for years; mkcert solved the TLS trust problem back in 2018. What is genuinely new here is the explicit framing around agents. Vercel Labs is not just tidying up browser tabs. It is building the addressing layer for a world where software agents, not just humans, need to find and talk to local services.
Consider what an AI coding agent does today when it needs to verify its work. It starts a dev server, parses log output to discover the port, constructs a URL, and hits it with an HTTP request. That flow is fragile. Ports collide. Logs get truncated. The agent’s context window fills with noise about which process grabbed port 3001 this time. Portless eliminates the discovery step entirely: the URL is a deterministic function of the app name. An agent that knows the project is called myapp can go straight to https://myapp.localhost without reading a single line of terminal output.
The mechanics matter for this use case. Portless assigns a random port in the 4000-4999 range via the PORT environment variable, then routes traffic through a local proxy that binds only to loopback addresses (127.0.0.1 and ::1) outside LAN mode. The proxy auto-syncs /etc/hosts so hostnames resolve without manual editing. The state directory lives in ~/.portless, and configuration is reused across restarts so a reboot does not silently revert to defaults. For agents, every one of those details removes a class of nondeterminism.
The HTTP/2 default is a subtle but significant choice. The README notes that browsers limit HTTP/1.1 to six connections per host, which bottlenecks dev servers serving many unbundled files like Vite and Nuxt. HTTP/2 multiplexes all requests over a single connection. For a human, this means faster page loads. For an agent running a test suite against a dev server, it means fewer connection failures under parallel request load. WebSockets work over both protocol versions, so hot module replacement still functions through the proxy.
Git worktree support is another feature that reads differently through an agent lens. Portless automatically detects linked worktrees and prepends the branch name as a subdomain: a worktree on branch fix-ui gets https://fix-ui.myapp.localhost while the main checkout keeps https://myapp.localhost. No collisions, no --force flag. For a human juggling multiple branches, this is convenient. For an agent tasked with running the same test suite against several branches of a repository simultaneously, it is the difference between a clean matrix of URLs and a port-management nightmare.
The custom TLD feature points at where Vercel thinks this is heading. Portless accepts a multi-segment DNS name as a “TLD”, so a domain you own can serve as the suffix: portless proxy start --tld dev.example.com yields https://myapp.dev.example.com. The README is explicit about why this matters: strict OAuth providers like Google and Apple reject .localhost and .test redirect URIs but accept a real domain. A local URL structured like production keeps OAuth redirect URIs, cross-subdomain cookies, and host-based routing working identically in both environments.
That last point is where the agent story gets concrete. An agent building an authentication flow needs to test the full OAuth round trip. With portless and a custom TLD, https://myapp.dev.example.com/api/auth/callback/google works as a redirect URI against Google’s real servers. The agent can exercise the actual production-shaped code path from a laptop. Without this, the agent either mocks the OAuth provider, which tests nothing real, or fights with browser security policies around localhost redirects.
There are limits worth naming. Portless is pre-1.0, and the README warns that the state directory format may change between releases, requiring a re-run of portless trust. Per-project installs mean different contributors may run different versions. LAN mode serves apps under the .local TLD and ignores a custom --tld, so the two cannot be combined today. The tool also leaves scripts alone when it cannot classify them: compound commands with && or |, env prefixes like NODE_ENV=production vite, and delegation to another script all keep their own ports. That is honest engineering, but it means the “it just works” story has edges.
The deeper question is whether stable local URLs actually change agent behavior in a meaningful way, or whether they are a convenience that agents could route around anyway. An agent with a shell and lsof can always discover a port. But every discovery step is a chance for failure, and agentic coding tools are judged on reliability, not cleverness. Removing nondeterminism from the environment is how agent frameworks earn trust. Portless is a small piece of that removal.
Vercel’s positioning here is strategic, not charitable. The company has bet heavily on AI-assisted development with v0 and its agentic tooling. Every agent that can reliably run, test, and verify a Next.js app locally is an agent that drives more usage of Vercel’s platform when it comes time to deploy. A tool that makes local development more agent-friendly is a funnel improvement disguised as a developer utility.
The pattern is bigger than Vercel. As agentic coding tools move from generating code to verifying it, the local development environment becomes a runtime for AI. That runtime needs stable addressing, deterministic startup, and machine-readable state. Portless delivers all three. The .localhost TLD is IANA-reserved and auto-resolves to 127.0.0.1 in most browsers, which means no DNS configuration for the common case. The proxy binds only to loopback, which means no accidental network exposure. The state is per-user and shared between privileged and unprivileged processes via the invoking user’s home directory.
For AI builders, the takeaway is that infrastructure ergonomics are becoming agent ergonomics. The tools that win the next wave of developer adoption will be the ones that make their services addressable, deterministic, and discoverable by software, not just by humans. Portless is a small utility with a large implication: the localhost port number, that 60-year-old accident of network programming, is finally being treated as a liability for the agent era. Vercel Labs shipped the first credible replacement, and the README’s closing line about the proxy auto-syncing /etc/hosts for registered hostnames is the quiet detail that makes the whole thing work without ceremony.