Hooklistener CLI
A fast, terminal-based CLI for browsing webhooks, forwarding events, and exposing local servers using Hooklistener. Built with Rust and Ratatui for a smooth, responsive TUI experience.

Features
- 🚀 Fast & Lightweight - Built in Rust for maximum performance
- 🖥️ Terminal UI - Browse requests with a keyboard-driven interface
- 🔄 Real-time Forwarding - Stream webhook requests from existing endpoints to your local server
- 🚇 HTTP Tunneling - Expose your local server to the internet with a public URL (like ngrok)
- 🔍 Search & Filter - Quickly find specific requests
- 📋 Request Details - View headers, body, and metadata
- 🔐 Secure OAuth - Device code authentication flow (no API keys needed)
- 📊 Professional Logging - Structured logging with file rotation and diagnostics
Installation
Homebrew (macOS / Linux)
npm
Cargo
Quick Install Script
Install with a single command:
macOS / Linux
|
Windows (PowerShell)
irm https://raw.githubusercontent.com/hooklistener/hooklistener-cli/main/scripts/install.ps1 | iex
Manual Installation
Download and extract the binary for your platform from the Releases page.
Install System-Wide (Optional)
After downloading, move the binary to your PATH:
# macOS/Linux
Now you can run hooklistener from anywhere.
Quick Start
-
Install (see above).
-
Authenticate:
Follow the on-screen instructions to authorize the device.
-
Choose your mode:
- Browse Webhooks: Run
hooklistener(orhooklistener tui) to view requests. - Forward Webhooks: Run
hooklistener listen <endpoint-slug>to forward events from an existing endpoint. - Expose Local Server: Run
hooklistener tunnelto get a public URL for your local app.
- Browse Webhooks: Run
Usage
Authentication
Authenticate securely via the device flow. This is required for all operations.
# Authenticate (opens browser if needed)
# Force re-authentication
Browsing Webhooks (TUI)
Launch the interactive Terminal User Interface to browse, search, and inspect webhook requests.
# Launch TUI (default command)
# or simply
Keyboard Shortcuts:
| Key | Action |
|---|---|
↑/k |
Move up |
↓/j |
Move down |
Enter |
View request details |
/ |
Search requests |
f |
Toggle filters |
r |
Refresh |
q |
Quit |
? |
Show help |
Forwarding Webhooks (listen)
Use this when you have an existing Hooklistener Endpoint and want to debug webhooks locally. It forwards requests sent to that endpoint to your localhost.
# Forward webhooks from 'my-endpoint' to http://localhost:3000 (default)
# Forward to a custom local URL
Exposing Local Server (tunnel)
Use this to create a public URL that tunnels traffic to your local machine. Great for receiving webhooks from third-party services directly to your dev environment.
# Start a tunnel to port 3000 (default)
# Tunnel to a specific port
# Tunnel to a specific host and port
# Use a persistent subdomain (Paid plans)
Maintenance & Diagnostics
# Generate a diagnostic bundle for support/debugging
# Clean up old log files
# Show help
Configuration
Configuration is stored in ~/.config/hooklistener/config.json. The CLI handles token management automatically.
Environment Variables
For advanced usage or self-hosting:
HOOKLISTENER_API_URL: Base URL for API requests.HOOKLISTENER_WS_URL: Base URL for WebSocket connections.HOOKLISTENER_DEVICE_PORTAL_URL: URL for device activation.
Development
Prerequisites
- Rust 1.75+
- Cargo
Building
# Run locally
# Build release
Contributing
See CONTRIBUTING.md for guidelines.
License
MIT License - see LICENSE.