localhost, shared
Turn localhost into a link.
You already have something running on your machine. Run one command and get a public HTTPS URL anyone can open. A client, a teammate, your own phone. No deployment. No account. No config.
Now live. Share your localhost.
Local
http://localhost:3000
Shareable
https://a8f3k2qd.devlink365.dev
How it works
Three steps. The third one is sending a message.
DevLink365 shares a server you are already running. It does not build anything, deploy anything, or ask you to sign up for anything.
01
Run your app
Whatever you normally do. Next.js, Vite, Rails, Django, a static folder. It does not matter.
npm run dev
02
Run DevLink365
In a second terminal. It finds the port your app is on and opens a secure tunnel out to the internet.
npx devlink365
03
Send the link
Anyone who opens it sees the app running on your machine, live, as you change it.
https://a8f3k2qd.devlink365.dev
The whole thing
One command, and you have a link.
This is not an abbreviated example. This is the entire experience.
$ npx devlink365 ✓ DevLink365 is running Local: http://localhost:3000 Public: https://a8f3k2qd.devlink365.dev Expires: in 4 hours Relay: relay.devlink365.dev Anyone with the link can reach your local app. Press Ctrl+C to stop sharing. 14:22:07 GET 200 / 12ms · 4.1 kB 14:22:07 GET 200 /_next/static/chunk.js 3ms · 89.2 kB 14:22:11 POST 201 /api/checkout 48ms · 312 B 14:23:02 GET 404 /favicon.ico 2ms · 0 B
Two ways in
Use it as a command, or as a library.
At the terminal
Just the command
The common case needs no flags at all. When you do need one, there are only a handful, and each exists because guessing would be wrong.
In your code
The same thing, scriptable
Open a tunnel from a test suite or a CI job, hand the URL to a webhook provider or a screenshot service, and tear it down when you are done.
Compatibility
If it speaks HTTP on a port, it works.
DevLink365 forwards raw HTTP. It has no opinion about what is on the other end, which is why the core package will never depend on a framework. Deeper, automatic integrations are planned per ecosystem.
Security
You are pointing the internet at your laptop.
That is the whole idea, and it is also the whole risk. Here is exactly what DevLink365 does about it, and what it does not do yet.
- Unguessable URLsIds come from a cryptographic random source over an alphabet with no vowels and no look-alike characters. Naming a link never removes the random part.
- Everything expiresFour hours by default, twenty-four at the absolute maximum, enforced by the relay rather than trusted to the client.
- Ctrl+C is finalClosing the CLI closes the tunnel and the URL dies with it. Immediately, not eventually.
- Reserved names are off limitsNo tunnel can ever be served at a hostname people reasonably trust, and only one level of subdomain is ever routed.
- Your database stays putAutomatic detection only ever selects a port that answered with HTTP, so an open Postgres port is never quietly published.
- Limits, not promisesRequest bodies are capped, visitors are rate limited per tunnel, and one machine cannot open an unbounded number of links.
- Not yet: passwords or visitor authUntil those ship, treat a DevLink365 URL as public. Anyone holding it can reach your app, so do not point one at something with real credentials or production data.
Where this goes
The link is the beginning, not the product.
The long game is a live, collaborative window into local development. Everything below Phase 1 is a plan, not a feature. None of it exists yet.
Phase 1 · Core
localhost to public HTTPS · the CLI · temporary links · configurable expiration · secure defaults
ShippedPhase 2 · Sharing
password protection · visitor authentication · QR codes · mobile preview · finer sharing controls
PlannedPhase 3 · Inspection
request inspection · session visibility · webhook testing · live traffic view
PlannedPhase 4 · Collaboration
invite teammates and clients · comments and annotations · shared application state · bug reproduction
PlannedPhase 5 · Intelligence
AI request and session analysis · debugging assistance · automatic issue explanations
PlannedGet started
Your localhost. Anywhere.
Start your app, then run this. Nothing to install, nothing to sign up for.