On-demand tunnels with a kill switch.
Expose localhost to the internet — temporarily, intentionally, programmatically. Every tunnel has a TTL. No permanent attack surface.
Tunnels that know when to quit.
Every tunnel gets a TTL. Free tunnels expire after 2 hours. Paid tunnels are persistent by default, or set your own TTL per tunnel. No zombie tunnels.
Every tunnel gets HTTPS automatically via Let's Encrypt. No setup, no certs to manage.
Open, close, and manage tunnels via REST API. Built for automation — scripts, bots, CI/CD pipelines.
See active tunnels, traffic stats, and API keys. Suspend tunnels with one click. Real-time status.
Client reconnects automatically with exponential backoff. Survives server restarts and network blips.
One binary, zero dependencies. Run your own NullBore server. Open source, ELv2 licensed.
Define tunnels in config.toml, run nullbore daemon, and they stay up. Opens ports on the fly, reconnects automatically. Perfect for always-on services behind NAT.
Tunnel traffic is encrypted over TLS. We relay raw bytes — we don't inspect or store your payload. Request metadata is available only for your own debugging.
Full WebSocket and Server-Sent Events support out of the box. Run ComfyUI, live dashboards, or streaming APIs through your tunnel — no special config needed.
NullBore is built for autonomous agents. The kill switch isn't a feature, it's the design: agents open a tunnel, use it, and the tunnel closes itself. No exposed services left running after the session ends.
Give a cloud-hosted agent access to your local MCP server with one command. Idle TTL closes it the moment the agent stops sending requests.
Open, list, and close tunnels via plain HTTP. Designed for tool-use loops — no SDK, no auth dance, just a Bearer token.
Works the same for Claude Code, Cursor, Aider, or any agent that can call HTTP. See the agent integration guide →
Click any use case for a step-by-step guide.
Start tunneling →