Open-source ngrok alternatives
Twelve tools with open-source code you can run or host yourself, with their licenses, latest releases, and who can reach the app.
To run the whole stack on your own server, frp covers TCP, UDP, HTTP and HTTPS, and Pangolin adds SSO and expiring share links. zrok can be self-hosted or used as a service. To skip the server and keep the app off a public URL, the qURL™ CLI is MIT-licensed and needs no account.
Facts checked October 1, 2026, each value linked to its source. Full dataset.
Why people look for ngrok alternatives
- The ngrok agent is closed source, and every tunnel runs through ngrok’s own edge.
- An account and authtoken before the first URL, and a warning page for free-plan browser visitors.
- Free-plan limits: 3 endpoints, 1 GB a month out, and 20,000 HTTP requests a month.
- A public URL that anyone with the address can request unless you add a Traffic Policy.
The alternatives at a glance
License and release metadata checked October 14, 2026.
| Tool | Best for | License | Latest release | Account needed before the first URL | Who can reach it | Visitor access control |
|---|---|---|---|---|---|---|
| qURL CLI | An MIT-licensed CLI that shares an app with no account, no server and no public URL | MIT | v3.5.0 (2026-10-10) | No. The first publish creates the device identity our test | No one until a link is opened; then the opener’s public IP for that session, including other devices behind that IP layerv.ai | Single-use access link by default; link and session lifetimes. IP allow and deny lists and other rules can gate links through the API, not the CLI layerv.ai |
| frp | A full self-hosted reverse proxy for TCP, UDP, HTTP and HTTPS | Apache-2.0 | v0.71.1 (2026-10-14) | No; you run frps on your own server github.com | Public: anyone who reaches the server port or domain; STCP/XTCP proxies only to visitors with the secret key github.com | HTTP basic auth (httpUser/httpPassword) on http proxies; secretKey for STCP/XTCP visitors; token or OIDC authenticates clients, not visitors github.com |
| zrok (free) | Public or private shares, self-hosted or on the zrok.io service | Apache-2.0 | v2.0.8 (2026-10-08) | Yes: a free account, no card zrok.io | Your choice per share: public shares are open to anyone with the URL; private shares only to zrok accounts you grant netfoundry.io | Basic auth; OAuth with an email pattern; private shares github.com |
| Pangolin | A self-hosted reverse proxy with SSO, PIN codes, email one-time codes and expiring share links | AGPL-3.0 | 1.24.0 (2026-09-30) | Yes: a Pangolin Cloud account, or the admin account on your own server docs.pangolin.net | Visitors who pass the resource's authentication; Pangolin SSO is on by default docs.pangolin.net | SSO and identity providers, users and roles, PIN, passcode, email OTP, header auth, share links, IP/geo/path rules docs.pangolin.net |
| sish | Self-hosted tunnels over plain ssh -R, with nothing to install on the client | MIT | v2.24.1 (2026-10-09) | No, on your own server; your SSH public key goes in its pubkeys directory github.com | Public: anyone with the URL; TCP aliases only to authenticated SSH users docs.ssi.sh | HTTP basic auth per forwarded host; server-wide IP and country allowlists; TCP aliases limited to listed SSH key fingerprints docs.ssi.sh |
| chisel | TCP and UDP tunnels over HTTP, secured with SSH, to a server you run | MIT | v1.12.0 (2026-08-29) | No; you run chisel server yourself github.com | Anyone who can reach the reverse port on your server github.com | Not documented for visitors; --auth and --authfile authenticate tunnel clients github.com |
| Expose (free) | PHP developers who want a self-hostable server or the free hosted one | MIT | 3.2.4 (2026-09-17) | Yes: a free account for the auth token expose.dev | Public: anyone with the URL expose.dev | Basic auth (--basicAuth); pricing lists access control under Pro expose.dev |
| bore (bore.pub) | Forwarding a raw TCP port, through bore.pub or your own server | MIT | v0.6.0 (2025-06-09) | No, for the public bore.pub server github.com | Public: anyone who connects to the port github.com | Optional shared secret between client and server, not visitors github.com |
| rathole | A small, fast NAT-traversal proxy for TCP and UDP | Apache-2.0 | v0.5.0 (2023-10-01) | No; you run the rathole server yourself github.com | Public: anyone who connects to the port github.com | Not documented for visitors; a mandatory per-service token authenticates clients github.com |
| Tunnelmole | An HTTPS URL with no account from an npm package, or a self-hosted service | MIT | 2.4.0 (2025-06-05) | No tunnelmole.com | Public: anyone with the URL github.com | Not documented github.com |
| localtunnel | A one-line npx command in a Node.js project | MIT | 2.0.2 (2021-09-18) | No github.com | Public: anyone with the URL github.com | Not documented github.com |
| boringproxy | A self-hosted tunnel server with a web UI, automatic HTTPS and optional basic auth | MIT | v0.10.0 (2023-01-04) | No; boringproxy server creates the admin login on first run github.com | Public: anyone with the URL, unless the tunnel is password-protected github.com | Optional HTTP basic auth per tunnel (Password Protect) github.com |
Each alternative
qURL CLIMade by LayerV
Best for: An MIT-licensed CLI that shares an app with no account, no server and no public URL.
Trade-off vs ngrok: The CLI is open source; the service it connects to is LayerV’s. No raw TCP.
Command to the first shareable URLqurl publish http://127.0.0.1:3000 qurl share <CRID>frp
Best for: A full self-hosted reverse proxy for TCP, UDP, HTTP and HTTPS.
Trade-off vs ngrok: You run frps on a server with a public IP; visitor access is basic auth on HTTP proxies.
Command to the first shareable URL./frps -c ./frps.toml (on the server) ./frpc -c ./frpc.tomlzrok (free)
Best for: Public or private shares, self-hosted or on the zrok.io service.
Trade-off vs ngrok: The service needs an account; public shares from unverified free accounts show a warning page.
Command to the first shareable URLzrok2 enable <TOKEN> zrok2 share public 8080Pangolin
Best for: A self-hosted reverse proxy with SSO, PIN codes, email one-time codes and expiring share links.
Trade-off vs ngrok: You run the server and a site connector; the Community Edition is AGPL-3.0.
Command to the first shareable URLpangolin up site --id <ID> --secret <SECRET> --endpoint https://app.pangolin.net Then add a public HTTPS resource in the dashboardsish
Best for: Self-hosted tunnels over plain ssh -R, with nothing to install on the client.
Trade-off vs ngrok: You run the server; the managed tuns.sh is a paid service.
Command to the first shareable URLdocker run ... antoniomika/sish:latest --domain=example.com (on your server) ssh -p 2222 -R 80:localhost:8080 example.comchisel
Best for: TCP and UDP tunnels over HTTP, secured with SSH, to a server you run.
Trade-off vs ngrok: No hosted server and no visitor access control; users authenticate tunnel clients.
Command to the first shareable URLchisel server --port 8080 --reverse (on your server) chisel client http://<server>:8080 R:3000:localhost:3000Expose (free)
Best for: PHP developers who want a self-hostable server or the free hosted one.
Trade-off vs ngrok: The hosted server needs an account; free connections are time-limited.
Command to the first shareable URLexpose token <TOKEN> expose share http://localhost:3000bore (bore.pub)
Best for: Forwarding a raw TCP port, through bore.pub or your own server.
Trade-off vs ngrok: TCP only, with no TLS; anyone who connects to the port reaches it.
Command to the first shareable URLbore local 8000 --to bore.pubrathole
Best for: A small, fast NAT-traversal proxy for TCP and UDP.
Trade-off vs ngrok: You run the server; tokens authenticate clients, not visitors; the latest release is from 2023.
Command to the first shareable URL./rathole server.toml (on the server) ./rathole client.tomlTunnelmole
Best for: An HTTPS URL with no account from an npm package, or a self-hosted service.
Trade-off vs ngrok: HTTP only; the URL is public and contains your IP address.
Command to the first shareable URLnpx tunnelmole 3000localtunnel
Best for: A one-line npx command in a Node.js project.
Trade-off vs ngrok: Public; visitors are asked for a tunnel password, per the maintainer.
Command to the first shareable URLnpx localtunnel --port 8000boringproxy
Best for: A self-hosted tunnel server with a web UI, automatic HTTPS and optional basic auth.
Trade-off vs ngrok: You run the server; the latest release is v0.10.0, from 2023.
Command to the first shareable URLboringproxy server -admin-domain <domain> (on the server) boringproxy client -server <domain> -user <user> -token <token> -client-name <name> Then add a tunnel in the web UI
When to keep ngrok
Keep ngrok when you want a managed edge with no server to run, request inspection and one-click replay for webhook debugging, and OAuth, OIDC, basic auth and IP rules in one Traffic Policy.
Frequently Asked Questions
Is there a free, open-source ngrok alternative?
Yes. frp (Apache-2.0), rathole (Apache-2.0), chisel (MIT), sish (MIT), bore (MIT), Expose (MIT), zrok (Apache-2.0), boringproxy (MIT), localtunnel (MIT) and the Tunnelmole client (MIT) are open source. Pangolin’s Community Edition is AGPL-3.0. The qURL CLI is MIT-licensed and connects to LayerV’s service.
Which open-source tunnels need no server of my own?
bore has a public server at bore.pub, Tunnelmole and localtunnel have hosted defaults, Expose has a free hosted server with an account, and zrok has the zrok.io service. frp, rathole, chisel, sish and boringproxy expect a server you run. The qURL CLI needs no server and no account.
Which open-source alternatives control who can open the app?
Pangolin has SSO, PIN codes, passcodes, email one-time codes and share links that can expire and be revoked. zrok has basic auth, OAuth with an email pattern, and private shares. sish has basic auth, IP and country allowlists and per-tunnel deadlines. frp has basic auth for HTTP proxies and secret keys for STCP. A qURL link opens once and expires within 24 hours.
Is inlets open source?
inlets Pro, the version that is maintained, is commercial software that needs a paid subscription and a license key.
Built it with an agent? Let it share it.
One prompt points Claude Code, Cursor, or Windsurf at the qURL skill. Or install the CLI and publish the app yourself. No account either way.
New to qURL? Start at qurl.link