Skip to main content

Expose local ports with custom DNS for webhook testing - TUI interface

Project description

Webhook Tunnel

License: MIT

A professional Python CLI to expose local ports with a custom hostname, ideal for testing webhooks and callbacks during development. Includes an interactive TUI (Text User Interface).

This version can also expose your local endpoint to the public internet (no account required) using localtunnel via npm/npx.

Webhook Tunnel Demo

✨ Key Features

  • 🚀 Fast local port exposure
  • 🌐 Custom hostname with subdomains
  • 🌍 Public internet URL via npm/npx (localtunnel) for webhook testing
  • 💻 Interactive TUI
  • 📊 Real-time monitoring (CPU, memory, uptime)
  • 🔍 Built-in log viewer
  • 🎯 Multiple tunnels simultaneously
  • 💾 Automatic persistence (config + tunnel registry)
  • 🧹 Dead process cleanup

📦 Installation

From PyPI (recommended)

pip install webhook-mannager

With extras

# Full installation with an example webhook server
pip install webhook-mannager[webhook-server]

# Development extras
pip install webhook-mannager[dev]

🚀 Quick Start

1) Start your local service

Make sure your application is running locally, e.g.:

uvicorn app:app --port 8000

2) Create a tunnel

tunnel start teste 8000

You will get:

  • Hostname URL (e.g. http://teste.localhost:8001) — requires DNS resolution of teste.localhost
  • Local URL (always works) (e.g. http://127.0.0.1:8001) — works without any OS DNS changes

If your hostname does not resolve, use the printed curl --resolve ... example.

3) Expose publicly (for real webhook callbacks)

tunnel start teste 8000 --public

This will:

  • keep the local gateway running (port forward)
  • start localtunnel via npx
  • print an External URL that can be called by third-party webhook providers

If npx is not available, the tool can automatically download a portable Node.js LTS runtime into:

~/.webhook-mannager/tools/node

🖥️ TUI (Interactive Interface)

tunnel-tui

Common keys:

  • c create a tunnel
  • d delete a tunnel
  • r restart a tunnel
  • l open logs
  • p toggle public exposure (localtunnel)
  • q quit

🧪 Testing your endpoint

If your local app has GET /readyz, you can test via:

  • Local gateway:
curl -v http://127.0.0.1:8001/readyz
  • Hostname without OS DNS changes:
curl -v http://127.0.0.1:8001/readyz -H "Host: teste.localhost"
  • External URL (requires --public):
curl -v <external_url>/readyz

📚 Documentation

📄 License

MIT

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

webhook_mannager-1.0.1.tar.gz (25.3 kB view details)

Uploaded Source

Built Distribution

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

webhook_mannager-1.0.1-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file webhook_mannager-1.0.1.tar.gz.

File metadata

  • Download URL: webhook_mannager-1.0.1.tar.gz
  • Upload date:
  • Size: 25.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.8.20

File hashes

Hashes for webhook_mannager-1.0.1.tar.gz
Algorithm Hash digest
SHA256 1b4163e2c3909c5cd945f551a45bbc362bb93f7c418b308a0d2013a97cea3938
MD5 70fc4c3b05328a12d5e745e155f31685
BLAKE2b-256 66e6980d353c0caa24d8258c8bcbf1e599ac2073b830ddd058785445051aad16

See more details on using hashes here.

File details

Details for the file webhook_mannager-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for webhook_mannager-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 94dc87c7af5ca462e44d721e0edc4a7a0b7641e15756d9aadf258a78b2f88fc8
MD5 82b7068569da05bb046028ef63dcd84f
BLAKE2b-256 7ad8be1f78febab3e1b99e93ee29fc0a939b794c136255c3ae9f147841c39c4a

See more details on using hashes here.

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