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

Features
- 🚀 Fast & Lightweight - Built in Rust for maximum performance
- 🖥️ Interactive Terminal Experience - Browse requests with keyboard shortcuts
- 🔄 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:
- Forward & Inspect 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.
- Forward & Inspect Webhooks: Run
Usage
Authentication
Authenticate securely via the device flow. This is required for all operations.
# Authenticate
# Force re-authentication
# Log out
Organization Selection
Most API-backed commands use a selected organization. Set it once and reuse it.
# List organizations available to your account
# Set default organization for commands that require one
# Clear default organization
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 and shows live request details in the terminal.
# Forward webhooks from 'my-endpoint' to http://localhost:3000 (default)
# Forward to a custom local URL
Endpoint Discovery (endpoint)
Manage endpoints and captured requests from the CLI.
# Create/list/show/delete endpoints
# Override organization for a single command
# List captured requests for an endpoint
# Show/delete a single request
# Replay and inspect replay attempts
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)
Static Tunnel Slugs (static-tunnel)
Manage reserved static slugs used by hooklistener tunnel --slug.
# List static tunnel slugs
# Create a static slug
# Delete a static slug by ID
Maintenance & Diagnostics
# Generate a diagnostic bundle for support/debugging
# Clean up old log files
# Show help
Automation & Completions
# Machine-readable output for non-interactive commands
# Generate shell completions
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.