tunnelctl is the in-house tunneling daemon for Nubeo developers. Drop an encrypted public endpoint — HTTP, TCP, or UDP — on top of any localhost service in under 200 ms. Share with the team, hit it from a phone, get the QA crew unblocked. Zero accounts. Zero config. Free for the whole org.
tunnelctl deliberately ships less than ngrok. No paid plans, no feature creep — just the one job done well. Spin up an HTTP, TCP, or UDP tunnel against a localhost port, share the endpoint, ship the demo. Anything fancier we add only when an actual Nubeo project asks for it.
One command spins up a TLS-terminated tunnel pointing at any local port. No signup, no DNS, no waiting. Ship a working URL before your coffee finishes brewing.
You choose the slug — every HTTP tunnel lives at <slug>.intunnel.eu. The
same name across restarts means stable URLs for QA, webhook callbacks, and shared previews.
Not just HTTP. tunnelctl up tcp exposes Postgres, Redis, SSH, MQTT — anything
that talks bytes. up udp handles DNS, QUIC, game servers. Ports come from a
shared pool at tcp.intunnel.eu / udp.intunnel.eu.
TLS 1.3 with ChaCha20-Poly1305 between client and edge on HTTP. Optional basic-auth gate or IP allowlist if you're exposing a staging build to a vendor.
One static binary. No Docker, no systemd hoops, no language runtime. macOS (Intel + Apple
Silicon), Linux x86_64 / arm64, Windows. Just drop it in your $PATH.
Install once. Authenticate against your Nubeo SSO once. Tunnel forever. The full reference — every flag, every config knob, every edge case — lives at docs.tunnelctl.eu.
Single binary, zero deps. Pick your distro in the hero — the snippet below switches with it. Same data, just annotated for context.
SSO via Nubeo's identity provider. tunnelctl login auto-detects the right flow
— PKCE in the browser on a desktop, OAuth device grant on a headless box. Override with --auth-flow when you need to.
Pick a protocol — http, tcp, or udp — and go. HTTP
tunnels live at <slug>.intunnel.eu; raw L4 lands on a port from the
shared pool. -d backgrounds it.
We're being upfront about scope. Below is what's in the box right now and what's on the backlog. If something on the right side blocks your work, file an issue at track.nubeo.eu and we'll bump it.
up http, up tcp, up udp<slug>.intunnel.eutcp.intunnel.eu:<port>slugs check + ports helpersstatus --all cross-host rostertunnels list-d to detach--auth-flow family--host-header-rewrite for dev servers that strict-match
the Host header (Vite, webpack-dev-server)*.intunnel.eu — no api.acme.dev yetDrop a public URL on top of localhost in the next 30 seconds. No credit card. No marketing email. No quota. Just a daemon and a glowing terminal — courtesy of Nubeo Engineering.
$ brew tap tunnelctl/tunnelctl https://git.piblade.net/tunnelctl/homebrew-tunnelctl.git
$ brew install tunnelctl