A terminal-based webhook listener with localtunnel integration, SQLite persistence, and a clean TUI interface.
- Localtunnel Integration: Automatically creates a public URL for receiving webhooks
- Auto-shutdown: Configurable tunnel timeout (default 30 min) to prevent leaving tunnels open
- SQLite Storage: All webhooks are persisted and can be browsed across sessions
- Pagination: Navigate through large webhook histories
- Multiple Views: Table and list view modes
- Vim Keybindings: Navigate with familiar vim-style keys
- Search: Search within webhook detail content with
/ - Raw Body Toggle: View raw or pretty-printed JSON body
- Copy to Clipboard: Copy webhook body with
y - Signature Verification: Verify webhook signatures (HMAC-SHA1/SHA256/SHA512) against a secret
- Public IP Display: Shows your public IP for webhook authentication purposes
go build -o webhook-tui .Requires npx (Node.js) for localtunnel.
./webhook-tuiConfigure the following options:
| Field | Description | Default |
|---|---|---|
| Port | Local port for the webhook server | 8098 |
| Subdomain | Custom localtunnel subdomain | (random) |
| Timeout | Minutes before tunnel auto-disconnects | 30 |
Press Enter to start the server and tunnel.
| Key | Action |
|---|---|
Tab |
Next field |
Shift+Tab |
Previous field |
Enter |
Start server |
q |
Quit |
| Key | Action |
|---|---|
↑/↓ or j/k |
Select webhook |
n or → |
Next page |
p or ← |
Previous page |
g |
Go to top |
G |
Go to bottom |
Enter |
View webhook details |
t |
Toggle table/list view |
r |
Reconnect tunnel |
l |
Load webhooks from database |
c |
Clear current view |
q |
Quit |
| Key | Action |
|---|---|
↑/↓ or j/k |
Scroll |
Ctrl+f |
Page down |
Ctrl+b |
Page up |
Ctrl+d |
Half page down |
Ctrl+u |
Half page up |
g |
Go to top |
G |
Go to bottom |
/ |
Search within detail content |
n |
Next search match |
N |
Previous search match |
r |
Toggle raw body view |
y |
Copy body to clipboard |
s |
Verify webhook signature |
Esc |
Back to list |
q |
Quit |
Webhooks are stored in a SQLite database at:
~/.webhook-tui/webhooks.db
Send a test webhook:
curl -X POST https://YOUR-SUBDOMAIN.loca.lt \
-H "Content-Type: application/json" \
-H "Bypass-Tunnel-Reminder: true" \
-d '{"event": "test", "data": {"message": "Hello!"}}'The tunnel status indicator shows:
- Green ● - Tunnel is active with countdown timer
- Orange countdown - Less than 5 minutes remaining
- Red countdown - Less than 1 minute remaining
- Red DISCONNECTED - Tunnel expired (press
rto reconnect)
MIT
