Run your existing full-stack app on any device without changing a single line of code.
Your frontend already works on your phone.
Your backend usually doesn't.
Nether makes both work exactly as they do on localhost.
Nether preserves your existing development workflow. Your application keeps talking to localhost; Nether makes that work from other devices.
Test your local development server on any mobile device on your network with just one command.
nether✓ Found frontend on port 5173
✓ Found backend on port 8000
⚡ NETHER - Frictionless Dev Proxy
Frontend Route: * -> http://localhost:5173
Backend Route: /__nether__* -> http://localhost:8000
🚀 Proxy running at: http://192.168.1.100:8081
✓ Runtime URL rewriting enabled
Scan the QR code below to open on your phone:
[ QR Code ]
- ✅ Zero configuration
- ✅ No
.envchanges - ✅ No CORS headaches
- ✅ No IP swapping
- ✅ No tunnel services
Without Nether:
- edit
.env - replace
localhostwith your LAN IP - restart the app
- configure CORS
- undo the changes later
With Nether:
- run
nether - scan QR
- done.
Getting a backend working on a phone usually means changing environment variables, configuring CORS, exposing additional ports, or rewriting API URLs. Nether doesn't modify your project—it adapts the browser at runtime so your existing application works unchanged on other devices.
Phone
│
▼
Nether Proxy (The Portal)
│
├── Frontend requests ─────────► localhost:5173
│
└── localhost API requests ───► localhost:8000
Nether only rewrites requests that target localhost. Everything else behaves exactly as your application intended.
When Nether proxies your frontend to your phone, it transparently injects a tiny script into the HTML. This script monkey-patches fetch, XMLHttpRequest, WebSocket, and EventSource on the fly.
Any time your frontend tries to make an API call to localhost, Nether seamlessly intercepts it and routes it through the portal to the correct backend port on your laptop.
- Next.js
- React + Vite
- Express
- FastAPI
- Django
- Laravel
- NestJS
- Any frontend and backend served over HTTP
- ✅ fetch
- ✅ XMLHttpRequest
- ✅ Axios
- ✅ React Query
- ✅ SWR
- ✅ WebSockets
- ✅ Server-Sent Events
Ngrok is fantastic, but we built Nether because:
- Zero Setup: You don't need to create an account, log in, or configure auth tokens just to test on your phone.
- Speed: Traffic stays entirely on your local network unless you explicitly use the
--globalflag.
You can run Nether instantly using npx (no installation required) as long as your dev servers are already running:
npx nether-devBy default, Nether automatically detects the ports your frontend and backend are running on by pinging common development ports (e.g., 3000, 5173, 5000, 8000).
If you have a complex setup with multiple ports, you can specify them manually:
nether --frontend 5173 --backend 9000You can also change the port the proxy itself runs on (default is 8081):
nether --port 8080Need to test your app on a device not connected to your Wi-Fi? Or share your local server with a client across the globe?
Just pass the --global (or -g) flag.
nether --globalNether will automatically provision a secure, public Cloudflare HTTPS tunnel under the hood and print a global URL and QR code. No ngrok account, auth tokens, or configuration required!
MIT