We've all been there: you've just built a stunning new feature on your local machine. You want to show it to a colleague, a client, or a friend. But they aren't in the same room.
The traditional dance begins: you commit the code, push to a repository, wait for CI/CD pipelines to run, wait for a staging environment to build, and finally share a link. All for a 10-second visual check. Or maybe you wrestle with complex tunneling setups, configuring ports and auth tokens just to get a temporary URL.
There had to be a better way. Enter shp.it.
The Premise: Zero-Friction Sharing
The core idea behind shp.it is simple: sharing your local dev server shouldn't be a chore. It should feel like magic.
With a single terminal command - npx shp-serve - shp.it automatically detects your framework (whether you're using Next.js, Vite, SvelteKit, or Django), locates your dev server, opens an end-to-end encrypted tunnel, and copies a live HTTPS link directly to your clipboard.
Three seconds. Start to finish.
Everything You'd Expect. Nothing to Configure.
When building shp.it, I focused on removing every possible barrier while maintaining the high-quality developer experience you deserve.
- Live Reload Included: Hot Module Replacement (HMR) seamlessly works through the tunnel. As you edit files locally, every viewer sees the changes instantly. No manual refreshing required.
- Encrypted & Ephemeral: Security isn't an afterthought. Every tunnel is end-to-end encrypted. Links self-destruct after 24 hours to prevent lingering access, and you can easily add password protection with a single flag.
- Framework Agnostic: If it runs on localhost, it works on shp.it. No custom configuration files are needed to support your favorite stack.
- Built-In Dashboard: Right from your terminal, you can see who is viewing your work, inspect real-time request logs, and monitor bandwidth.
The Engineering Challenge
Proxying local development servers sounds trivial until you try to support Hot Module Replacement over a tunnel. Handling varying WebSocket configurations across different bundlers (Webpack, Vite, Turbopack) without requiring user configuration was our biggest technical hurdle.
By aggressively auto-detecting the underlying build tool and dynamically adapting the proxy headers, shp.it achieves exactly what I set out to do: it just works.
Ready to ship?
Don't let deployment pipelines slow down your feedback loops. Your local project is just one command away from the world.
To get started, simply run:
npx shp-serve
Get The Drop
Drop your email to get early access to tools like shp.it before anyone else.