Goodbye, Port 3000. Hello, Stable Local URLs.
If you've ever sent a "hey, can you check out my local feature?" link to a teammate, you know the pain. You send http://localhost:3000, they have to ask "wait, what port again?", or worse, their local port 3000 is already taken by another project. The dance of port numbers is a small but constant friction in local development and collaboration.
What if you could just have a stable, memorable URL for your local server that always works, regardless of the port it's actually running on? That's the itch that portless scratches.
What It Does
Portless is a lightweight tool that creates a stable, named .local URL for your local development server. Instead of accessing your app at localhost:8080, you could access it at myapp.local or react-project.local. It runs a local DNS server and a proxy to seamlessly route requests from that pretty URL to whatever random high-numbered port your app is actually using.
Why It's Cool
The clever part is in its simplicity and transparency. You don't have to reconfigure your application server. You run your app as usual (e.g., npm run dev on port 1234), and in another terminal, you run portless pointing at that port with your chosen name. It handles the rest.
This becomes incredibly useful for:
- Team Demos: Share a single, consistent URL like
project-alpha.localfor a feature branch. Teammates just need to run oneportlesscommand to access it. - Multi-Service Projects: Run your frontend on
app.localand your API onapi.local, making your local environment mirror production routing more closely, without port conflicts. - Bookmarking: You can actually bookmark your local development environment. No more remembering if this project runs on 3000, 3001, or 8080.
It sidesteps the complexity of editing your system's hosts file or setting up heavy reverse proxies. It's a focused tool for a specific, common problem.
How to Try It
Portless is a Node.js package. You can install and try it out in a few minutes.
First, install it globally via npm:
npm install -g @vercel/portless
Then, start your development server as you normally would. Let's say it's running on http://localhost:3000.