Now in public beta

Secure TCP Tunnels — Hosted or Self-Hosted

Expose local services to the internet in seconds. Download the demo build, run one command, and share a public URL — no signup, no config.

Public beta · macOS, Linux & Windows · Open source

gotunnel — zshCONNECTING

❯ gotunnel http 3000 --server gotunnel.bakaredev.site

 

❯

$ gotunnel deploy --mode [self-hosted|managed]

› resolving deployment target▊

sys::deployment_mode

Run GoTunnel Your Way

// two modes. same binary protocol. same stream multiplexing. same TLS.

// choose based on ownership preference — not capability.

Mode 01

Self-Hosted

Free · Available

Run the same GoTunnel binary as your own server on any Linux VPS. You own the infrastructure, the certs, and the data — no database, Redis, or email required. Built for teams who can't send traffic through third-party servers.

  • Full TLS encryptionYour certs, or a reverse proxy
  • Deploy on any Linux VPSSingle static binary, no runtime
  • Token authenticationOne or more tokens you control
  • No vendor lock-inYou own the server and the data
  • Systemd service supportRun as a managed background service
  • Port or subdomain modeFixed ports or Host-routed subdomains

❯gotunnel server --auth-tokens SECRET

GoTunnel Server v1.0.1

Tunnel port :9000

Auth 1 token

Ready for connections

# then, on your machine:

❯gotunnel --server your-vps:9000 --local localhost:3000 --token SECRET

Read the self-hosting guide →
HTTPHTTPSSSHTCPPostgresRedis
Mode 02

Hosted

Recommended for Quick Start

Connect to GoTunnel's managed infrastructure in one command. No server to provision, no certs to manage. Get a live public URL in under five seconds — perfect for demos, webhooks, and rapid iteration.

  • Zero infrastructure setupOne command to connect
  • Instant public URLsgotunnel.bakaredev.site subdomains
  • Managed TLS terminationHTTPS out of the box
  • Real-time traffic dashboardMonitor requests and streams
  • Custom domain supportBring your own domain
  • Multiple auth methodsTokens, JWT, API keys

❯gotunnel http 3000 --server gotunnel.bakaredev.site

Connected to managed server

Forwarding https://xyz.gotunnel.bakaredev.site → localhost:3000

Status connected ✓

Latency 12ms

Streams 4 active

Uptime 00:04:31

HTTPHTTPSSSHTCPPostgresRedis

Both modes use the same binary protocol with stream multiplexing and TLS encryption end-to-end.

$ gotunnel inspect --capabilities

› loading feature manifest▊

sys::capabilities

Built for Real-World Traffic

// engineered from the protocol layer up — not bolted on after.

// custom binary protocol · stream multiplexing · TLS 1.3 · single binary.

mod::00High Throughput

Stream Multiplexing

Handle multiple concurrent connections over a single secure tunnel without overhead.

status: active
mod::01Secure

TLS Encryption

End-to-end encrypted tunnel traffic using TLS. Custom certs or auto-generated.

status: active
mod::02Access Control

Token Authentication

Gate tunnel access with secure token validation. Rate limiting and lockout built in.

status: active
mod::03Resilient

Auto-Reconnect

Exponential backoff reconnect loop recovers from network drops without manual intervention.

status: active
mod::04Flexible

Protocol Agnostic

Tunnel any TCP-based service — HTTP, HTTPS, SSH, Postgres, Redis, and beyond.

status: active
mod::05Observable

Metrics & Monitoring

Track latency, active streams, bandwidth, and connection health via Prometheus export.

status: active
mod::06Scalable

Multi-Client Support

Run multiple tunnel clients simultaneously with independent stream pools and auth.

status: active
mod::07Portable

Zero Dependencies

Ships as a single compiled Go binary. No runtime, no containers, no package manager.

status: active
Custom binary protocolStream multiplexingTLS 1.3Go runtimeSingle binary
sys::packet_trace

How GoTunnel Works

// traffic enters the public internet and exits at your localhost.

// encrypted end-to-end. no port forwarding. no firewall rules.

sys::initstep/01 of 04

Start the Client

Run the GoTunnel client and point it at your local service port. One command — no config files, no firewall rules.

gotunnel — sys::init01/04

❯gotunnel http 3000 --server gotunnel.bakaredev.site

› resolving gotunnel.bakaredev.site

$ gotunnel query --use-cases

› scanning workflow registry▊

sys::workflow_registry

Built for Real Development Workflows

// from webhook testing to remote debugging — GoTunnel keeps your development moving.

// 6 registered workflows · all environments · zero config.

wf::01
Most Commonwebhooks

Webhook Testing

Receive third-party callbacks from payment gateways, CI pipelines, or any external API without deploying your app.

stripe · github · twilioactive
wf::02
demos

Client Demos

Share working applications with clients instantly using secure public links — no staging environment needed.

https://xyz.gotunnel.bakaredev.siteactive
wf::03
mobile

Mobile App Testing

Connect iOS and Android apps to local APIs without cloud deployment or ngrok subscriptions.

ios · android · react nativeactive
wf::04
debug

Remote Debugging

Access services running behind firewalls securely from any remote location without VPN complexity.

ssh · gdb · dlvactive
wf::05
iot

IoT Device Access

Expose services running inside restricted, embedded, or air-gapped networks without opening firewall ports.

raspberry pi · arduino · edgeactive
wf::06
internal

Internal Tool Sharing

Safely share dashboards, admin panels, and development tools across distributed teams in real time.

grafana · retool · metabaseactive
HTTP tunnelsTCP passthroughSSH forwardingAny local portSub-second latency

$ gotunnel benchmark --output metrics

› running perf suite▊

sys::perf_matrix

Engineered for Performance

// benchmarked on reference hardware under sustained load · single binary · no sidecar.

// optimized for speed, scalability, and reliable connections.

perf::01latency
<0ms
Latency Overhead

Minimal added latency across tunnel connections under sustained load.

perf::02throughput
0+MB/s
Throughput

High-speed data transfer across active tunnels.

perf::03concurrency
0+Concurrent Streams

Simultaneous connections per server instance.

perf::04memory
~0MBMemory Usage

Efficient resource usage per active session.

perf::05recovery
Auto
Reconnect Recovery

Automatic reconnection with exponential backoff — no manual restart.

Go runtimeZero allocations hot pathSingle binaryNo GC pressureTCP over TLS 1.3

$ gotunnel audit --security-model

› loading security manifest▊

sys::security_model

Built with Security in Mind

// secure connections, controlled access, and reliable session protection.

// designed for production · no plaintext · no shared sessions.

sec::01
TLS 1.3encryption

TLS Encryption

All tunnel traffic is encrypted end-to-end using TLS 1.3. Custom certificates or auto-generated — zero plaintext in transit.

enforced
sec::02
Requiredauth

Token Authentication

Clients authenticate using secure access tokens before a tunnel session is established. Invalid tokens are rejected at the handshake layer.

enforced
sec::03
isolation

Session Isolation

Each tunnel session runs in an isolated stream context. Traffic from one client cannot bleed into another session.

enforced
sec::04
heartbeat

Heartbeat Monitoring

Persistent heartbeat checks detect dropped or stale connections. Dead sessions are terminated and cleaned up automatically.

enforced
sec::05
Policy-basedaccess

Access Control

Define authentication policies per tunnel — token-based, JWT, or API key. Unauthorized connections are dropped before proxying begins.

enforced
sec::06
payload

Payload Protection

Configurable payload size limits and connection rate controls reduce exposure to abuse and bandwidth exhaustion attacks.

enforced
TLS 1.3Token-gated sessionsNo plaintextRate limitingAutomatic cleanup

$ gotunnel http 3000▊

sys::ready

Start Tunneling in Seconds

Download the build for macOS, Linux, or Windows, run one command, and get a public URL. Use the managed beta, or self-host the same binary on your own VPS — both are free.

public beta · what you download is a beta build · open source

gotunnelconnected

❯gotunnel http 3000

Connected to managed server

Forwarding https://xyz.gotunnel.bakaredev.site → localhost:3000

Status connected ✓ latency: 11ms