Releases: lance0/hookshot
Releases · lance0/hookshot
Hookshot v1.0.0
The self-hosted webhook relay. Receive Stripe, GitHub, and other webhooks on localhost—without paying for ngrok.
Highlights
- Free & Self-hosted — Your webhooks, your servers, no subscription
- Request Replay — Re-send any webhook for debugging (included free, unlike ngrok)
- Beautiful TUI — Live request stream with Catppuccin colors
- SQLite Storage — Request history persists across restarts
- Security Hardened — UUID tunnel IDs, size limits, origin validation
Features
- WebSocket-based tunnel relay for webhook forwarding
- Interactive TUI with live request stream and search/filter
- Request replay from TUI (r key) or CLI
- Path-based routing to multiple local targets
- Auth tokens for secure relays (--token)
- SQLite persistent storage (--database)
- YAML configuration files
- Native TLS/HTTPS support
- Docker and Fly.io deployment ready
Security
- Full UUID tunnel IDs (36 characters) — prevents guessing
- Server-generated IDs only — client requests ignored
- Replay API ownership verification
- Configurable body/message size limits (default 10MB)
- WebSocket origin validation (--allowed-origins)
- Bearer token auth only — no URL token leakage
- Graceful shutdown on SIGINT/SIGTERM
Quick Start
Install
go install github.com/lance0/hookshot/cmd/hookshot@v1.0.0
Run server (on your VPS)
hookshot server --token secret --database /data/hookshot.db
Connect locally
hookshot client -s https://your-server.com --token secret --tui
Deploy
Fly.io:
git clone https://github.com/lance0/hookshot.git && cd hookshot
fly launch --copy-config --name my-hookshot
fly volumes create hookshot_data --size 1
fly secrets set TOKEN=your-secret
fly deploy
Docker:
docker run -p 8080:8080 -v hookshot-data:/data ghcr.io/lance0/hookshot:v1.0.0 server --token=secret
vs ngrok
| ngrok | Hookshot | |
|---|---|---|
| Price | $8-20/mo | Free |
| Self-hosted | No | Yes |
| Replay | Paid | Included |
| Path routing | No | Yes |
Full documentation: https://github.com/lance0/hookshot