Now in public beta

Secure TCP Tunnels — Hosted or Self-Hosted

Expose local services to the internet in seconds. Run your own infrastructure or use our managed tunnels — no config needed.

Open source · No credit card required · Self-host for free

gotunnel — zshCONNECTING

gotunnel http 3000 --server tunnel.gotunnel.dev

 

$ 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

Best for Full Control

Deploy the GoTunnel server binary on any Linux VPS. You own the infrastructure, the certs, the config, and the data. Built for teams who can't send traffic through third-party servers.

  • Full TLS encryptionCustom certs or auto-generated
  • Deploy on any Linux VPSUbuntu, Debian, CentOS, Alpine
  • File-based configurationserver.yaml with env var support
  • No vendor lock-inOpen source, self-contained binary
  • Systemd service supportRun as a managed background service
  • Prometheus metricsScrape live tunnel and stream stats

gotunnel server --config server.yaml

GoTunnel Server v1.1.0

Listening on :7000 (control)

Public port range :8000–9000

TLS enabled

Auth token

Waiting for clients...

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 URLstunnel.gotunnel.dev 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 tunnel.gotunnel.dev

Connected to managed server

Forwarding https://xyz.tunnel.gotunnel.dev → 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 tunnel.gotunnel.dev

› resolving tunnel.gotunnel.dev

$ 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.tunnel.gotunnel.devactive
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 billing --list-plans

loading plan registry

sys::plan_registry

Simple, Transparent Pricing

// start free with self-hosted tunnels, or use our managed infrastructure.

// no hidden fees · cancel anytime · open-source core.

MonthlyYearly
plan::00

Free

Self-Hosted
$0

Full control. Deploy on your own infrastructure at zero cost.

  • Self-hosted server binary
  • Unlimited tunnel usage
  • Full infrastructure control
  • Open-source CLI
  • Community support
  • Custom domains
  • Managed infrastructure
Get the CLI
plan::01

Starter

$5/mo

Managed tunnels for solo developers and side projects.

  • Hosted managed tunnels
  • Up to 2 active tunnels
  • Random public URLs
  • Basic metrics dashboard
  • Email support
  • Custom domains
  • Reserved ports
Get Started
plan::02

Pro

Most Popular
$15/mo

Built for active developers who need reliable, persistent tunnels.

  • Unlimited active tunnels
  • Reserved ports
  • Custom domain support
  • Advanced metrics & logs
  • Priority support
  • Multiple auth methods
  • Team accounts
Start Pro
plan::03

Team

$49/mo

Shared infrastructure and access controls for engineering teams.

  • Everything in Pro
  • Multiple team members
  • Role-based access control
  • Usage limits & controls
  • Team dashboards
  • Audit logs
  • Dedicated support
Get Started
No contractsCancel anytimeOpen-source coreSelf-host for freeUpgrade or downgrade anytime

$ gotunnel http 3000

sys::ready

Start Tunneling in Seconds

Run GoTunnel your way — connect to our managed infrastructure instantly, or deploy the server binary on your own VPS. Same binary. Same protocol.

open source · no credit card required · self-host for free

gotunnelconnected

gotunnel http 3000

Connected to managed server

Forwarding https://xyz.tunnel.gotunnel.dev → localhost:3000

Status connected ✓ latency: 11ms