duto
Put a local service on the internet at a stable HTTPS URL, with one command:
duto 3000 --name web # https://web-<user>.duto.page → localhost:3000
The URL stays the same from one session to the next, so you set it once as a webhook endpoint or an OAuth callback. Duto is free for now and invite only; create your account at duto.dev from an invite link.
Install
npm i -g @dutodev/cli
Needs Node 18 or later, on macOS, Linux or Windows.
Start
duto login # once per machine; opens your browser
duto 3000 # https://<user>.duto.page
duto 3000 --name web # https://web-<user>.duto.page, the same every time
Every tunnel of a project
Create duto.yml at the root of the project and run duto:
tunnels:
web: 3000
backend: 8000
webhook: 4000
All tunnels open together, in one screen. Commit the file and everyone on the team gets their own addresses from it.
Commands
| Command | What it does |
|---|---|
duto | Open the tunnels in duto.yml |
duto <port> | Open a tunnel to localhost:<port> |
duto http <port> | Same, for people coming from ngrok |
duto login | Log in through the browser |
duto login <token> | Log in with a token from the Machines page, for CI and servers |
duto status | Show your account and live tunnels |
duto mcp | Run the MCP server for AI agents |
duto logout | Log this machine out |
Docs
- Quickstart: install, log in and open your first tunnel.
- How it works: the path of a request from the internet to your port.
- Test webhooks: a fixed URL for Stripe or GitHub, and replay without resending.
- Test on your phone: open a local app on a real device with a QR code.
- OAuth and login callbacks: register one callback URL and keep it.
- Share your work: show a client or a teammate without deploying.
- Framework setup: let Vite, Next.js, Rails or Django answer on a tunnel.
- Use with AI agents: let Claude Code or Cursor read your requests and open tunnels.
- duto.yml: every option of the project file.
- Host and headers: change what your local service receives.
- Password protection: a password per person, with webhook senders let through.
- Inspect and replay: every request in the terminal and in the browser.
- Network security: what protects each hop.
- CLI reference: every command, option and environment variable.
- Limits and pricing: what Duto costs and where the limits are.
- Troubleshooting: common messages Duto shows, and what to do.