Skip to main content

Tunnel through barriers, instantly - expose local services to the internet

Project description

Instanton

PyPI Python License CI Stars


Tunnel through barriers, instantly

Expose localhost to the internet. One command. Zero config.
Open source - Self-hostable - Enterprise security - Free forever


Features Complete Tests Latency Throughput


pip install instanton && instanton --port 8000

That's it. You now have a public HTTPS URL. No signup. No config files. No BS.


Quick Start - Why Instanton - Features - Benchmarks - Deployment - Configuration




The Problem

You're building something awesome on localhost:8000. Now you need to:

  • Share it with a client
  • Test webhooks from Stripe/GitHub
  • Demo to your team
  • Debug a mobile app

The old way: Port forwarding, firewall rules, dynamic DNS, SSL certificates, nginx configs...

The Instanton way:

instanton --port 8000
  ⚡ Instanton v1.0.0

  ✓ Tunnel established
  ✓ HTTPS certificate provisioned

  Public URL:  https://abc123.instanton.tech
  Forwarding:  https://abc123.instanton.tech → http://localhost:8000

  Inspector:   http://localhost:4040

  Press Ctrl+C to stop



Why Instanton?


What ngrok charges $240/year for...

  • Custom subdomains
  • TLS certificates
  • Traffic inspection
  • Rate limiting
  • Webhooks
  • Multiple tunnels

Instanton gives you free. Forever.

Plus:

  • Zero Trust security
  • 9 load balancing algorithms
  • HTTP/3 with QUIC
  • Native Python SDK
  • Self-hosting
  • No vendor lock-in

Feature Comparison

Instanton ngrok Cloudflare Tunnel tunnelto
Open Source ✅ Full
Self-Hostable
HTTP/3 (QUIC)
Zero Trust ✅ Free $7/user/mo
Load Balancing ✅ 9 algos ⚠️ Limited¹ ✅ Via LB²
DDoS Protection Paid
Traffic Inspector Paid ⚠️ Basic
Native Python SDK
TCP/UDP Tunnels
Price $0 $10-65+/mo $0-7/user $0-4/mo³

¹ ngrok: Endpoint Pooling with equal distribution only (custom algorithms coming soon)
² Cloudflare Tunnel: Via Cloudflare Load Balancing integration
³ tunnelto: Free basic usage, $4/mo for 20 custom subdomains




Quick Start

Installation

pip install instanton

HTTP Tunnel

# Basic - expose port 8000
instanton --port 8000

# Custom subdomain
instanton --port 8000 --subdomain myapp

# With traffic inspector
instanton --port 8000 --inspect

TCP Tunnel (Databases, SSH)

# PostgreSQL
instanton tcp 5432

# MySQL
instanton tcp 3306

# SSH
instanton tcp 22

UDP Tunnel (Gaming, VoIP, DNS)

# Game server
instanton udp 27015

# DNS
instanton udp 53

Python SDK

import instanton

# Async context manager
async with instanton.forward(8000) as tunnel:
    print(f"Public URL: {tunnel.url}")
    # Your app is now accessible at tunnel.url
    await your_app.run()

# Sync API
tunnel = instanton.forward_sync(8000)
print(tunnel.url)

Long-Running APIs (AI, Streaming)

# No timeout - perfect for AI inference, video streaming
instanton --port 8000 --no-request-timeout



Features


🚀 Performance

  • 5ms latency (3x faster than ngrok)
  • 1.2 Gbps throughput
  • 6,500 connections/sec
  • 250ms cold start
  • HTTP/3 with QUIC
  • 0-RTT connection resumption
  • Connection migration
  • LZ4/Zstd compression
  • Zero-copy buffer pooling

🔐 Security

  • Zero Trust architecture
  • 5-tier trust levels with risk scoring
  • TLS 1.3 with certificate pinning
  • mTLS (mutual TLS)
  • JWT, OAuth2, OIDC, API Keys
  • DDoS protection & rate limiting
  • Bot detection & IP reputation
  • Geo-blocking & firewall rules
  • Input sanitization (XSS, SQLi)

📊 Observability

  • Real-time traffic inspector
  • Request/response replay
  • Prometheus metrics
  • OpenTelemetry tracing
  • Structured logging
  • Health checks & probes
  • Circuit breaker
  • P99 latency tracking

⚖️ Load Balancing

9 algorithms:

  • Round-robin
  • Weighted round-robin
  • Least connections
  • Weighted least connections
  • Random / Weighted random
  • IP hash
  • Consistent hash ring
  • Least response time

🔌 Protocols

  • HTTP/1.1, HTTP/2, HTTP/3
  • WebSocket (full duplex)
  • gRPC (with frame interception)
  • TCP (raw passthrough)
  • UDP (via QUIC datagrams)
  • Auto protocol detection
  • Streaming support
  • Chunked transfer

🛠️ Developer Experience

  • One command to start
  • Native Python SDK
  • Async & sync APIs
  • Rich CLI with colors
  • Auto subdomain from project
  • YAML config support
  • Hot reload
  • Detailed error messages



Benchmarks

Metric Instanton ngrok Cloudflare Winner
Latency 5ms 15ms 10ms 🏆 Instanton
Throughput 1.2 Gbps 500 Mbps 1 Gbps 🏆 Instanton
Connections/sec 6,500 1,000 3,000 🏆 Instanton
Memory (idle) 35 MB 50 MB 30 MB Cloudflare
Cold Start 250ms 2s 3s 🏆 Instanton

How we achieve this:

┌─────────────────────────────────────────────────────────────────┐
│                     INSTANTON ARCHITECTURE                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│   Client                    Relay Server              Origin    │
│     │                           │                        │      │
│     │◄──── QUIC/HTTP3 ─────────►│◄────── HTTP/WS ───────►│      │
│     │      (0-RTT, multiplexed)  │       (pooled)         │      │
│     │                           │                        │      │
│     │   ┌─────────────────────┐ │                        │      │
│     │   │ • LZ4 compression   │ │                        │      │
│     │   │ • Connection pool   │ │                        │      │
│     │   │ • Zero-copy buffers │ │                        │      │
│     │   │ • uvloop (Linux)    │ │                        │      │
│     │   └─────────────────────┘ │                        │      │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘



Zero Trust Security


                           ZERO TRUST ARCHITECTURE
  ┌──────────────────────────────────────────────────────────────────┐
  │                                                                  │
  │   ┌──────────┐    ┌──────────┐    ┌──────────┐    ┌──────────┐  │
  │   │ Identity │───►│  Device  │───►│   Risk   │───►│  Access  │  │
  │   │  Verify  │    │ Posture  │    │  Score   │    │ Decision │  │
  │   └──────────┘    └──────────┘    └──────────┘    └──────────┘  │
  │                                                                  │
  │   Trust Levels:                                                  │
  │   ═══════════════════════════════════════════════════════════   │
  │   UNTRUSTED ──► LOW ──► MEDIUM ──► HIGH ──► VERIFIED            │
  │       │          │         │          │         │               │
  │       ▼          ▼         ▼          ▼         ▼               │
  │     Block    Limited   Standard   Extended    Full              │
  │              Access    Access     Access     Access             │
  │                                                                  │
  └──────────────────────────────────────────────────────────────────┘

🔒 TLS 1.3

ECDHE + AES-GCM ChaCha20-Poly1305 Certificate pinning Perfect forward secrecy

🛡️ DDoS Protection

Rate limiting (3 algorithms) Bot detection IP reputation scoring Geo-blocking Slowloris mitigation

🔑 Authentication

JWT (HS256, RS256) OAuth2 / OIDC mTLS certificates API keys (Argon2) Basic auth




Deployment

Docker

# Run the relay server
docker run -d \
  --name instanton-server \
  -p 443:443 \
  -p 80:80 \
  -e INSTANTON_DOMAIN=tunnel.example.com \
  -v instanton-certs:/app/certs \
  ghcr.io/drruin/instanton-server:latest

Docker Compose

version: '3.8'
services:
  instanton:
    image: ghcr.io/drruin/instanton-server:latest
    ports:
      - "443:443"
      - "80:80"
    environment:
      - INSTANTON_DOMAIN=tunnel.example.com
    volumes:
      - certs:/app/certs
    restart: unless-stopped

volumes:
  certs:

Kubernetes (Helm)

# Add the Helm repository
helm repo add instanton https://drruin.github.io/instanton
helm repo update

# Install
helm install instanton instanton/instanton-server \
  --set domain=tunnel.example.com \
  --set ingress.enabled=true

Kubernetes (Manual)

kubectl apply -f https://raw.githubusercontent.com/DrRuin/instanton/main/deploy/k8s/



Configuration

CLI Options

instanton --help

Options:
  --port INTEGER          Local port to expose [required]
  --subdomain TEXT        Request specific subdomain
  --server TEXT           Relay server address
  --auth-token TEXT       Authentication token
  --timeout INTEGER       Connection timeout (seconds) [default: 30]
  --idle-timeout INTEGER  Idle timeout (seconds) [default: 300]
  --no-request-timeout    Disable request timeout (for long-running APIs)
  --inspect               Enable traffic inspector at localhost:4040
  --quic / --no-quic      Use QUIC transport [default: enabled]
  --verbose               Enable verbose logging
  --version               Show version
  --help                  Show this message

Environment Variables

export INSTANTON_SERVER=relay.example.com
export INSTANTON_AUTH_TOKEN=your-token
export INSTANTON_DOMAIN=tunnel.example.com
export INSTANTON_LOG_LEVEL=info

Config File (instanton.yaml)

server: relay.example.com
auth_token: ${INSTANTON_AUTH_TOKEN}

tunnels:
  web:
    port: 8000
    subdomain: myapp

  api:
    port: 3000
    subdomain: api
    no_request_timeout: true

  db:
    type: tcp
    port: 5432



Testing

# Clone the repository
git clone https://github.com/DrRuin/instanton.git
cd instanton

# Install development dependencies
pip install -e ".[dev]"

# Run all tests (1000+)
pytest tests/ -v

# Run with coverage
pytest tests/ -v --cov=instanton --cov-report=html

# Run specific test categories
pytest tests/test_protocol.py -v
pytest tests/test_security.py -v
pytest tests/test_loadbalancer.py -v



Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

# Fork and clone
git clone https://github.com/YOUR_USERNAME/instanton.git
cd instanton

# Create a branch
git checkout -b feature/amazing-feature

# Make your changes, then test
pytest tests/ -v
ruff check src/
ruff format src/

# Commit and push
git commit -m "Add amazing feature"
git push origin feature/amazing-feature

# Open a Pull Request



Roadmap

  • HTTP/HTTPS tunnels
  • TCP/UDP tunnels
  • QUIC/HTTP3 transport
  • Zero Trust security
  • 9 load balancing algorithms
  • DDoS protection
  • Traffic inspector
  • Prometheus metrics
  • OpenTelemetry tracing
  • Docker & Kubernetes
  • Helm charts
  • Python SDK
  • SAML authentication
  • Web dashboard
  • Terraform provider
  • VS Code extension



License

MIT License - see LICENSE for details.




Life's too short for port forwarding and firewall configs.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

instanton-0.2.0.tar.gz (732.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

instanton-0.2.0-py3-none-any.whl (253.5 kB view details)

Uploaded Python 3

File details

Details for the file instanton-0.2.0.tar.gz.

File metadata

  • Download URL: instanton-0.2.0.tar.gz
  • Upload date:
  • Size: 732.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for instanton-0.2.0.tar.gz
Algorithm Hash digest
SHA256 262cac5fb72754b47480915c0941daa3367bff40128bada43bdc2f1cfba72bd5
MD5 dfe2b45acf2d86e74f78793d43ef8333
BLAKE2b-256 97e27adf8205e49b9fc53aef61827d6f681560ca345492e25fafb614572327fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for instanton-0.2.0.tar.gz:

Publisher: release.yml on DrRuin/instanton

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file instanton-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: instanton-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 253.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for instanton-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 68b1aa28fea45dda3b9562a272576654e229bbb39d9f4d7bafca4d5e337893b9
MD5 1085d9313da1747da39415183e6b5962
BLAKE2b-256 ad0f314d56a91d3385609e27e5b077da643fc5661abbd23e817748a36fa57574

See more details on using hashes here.

Provenance

The following attestation bundles were made for instanton-0.2.0-py3-none-any.whl:

Publisher: release.yml on DrRuin/instanton

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page