offline-first ยท tui ยท go
A terminal webhook receiver that never phones home. Captures every request, replays any of them, and forgets about the internet entirely.
go install github.com/iamkorun/kowari@latest
{
"id": "evt_1PzQ...",
"type": "charge.succeeded",
"data": {
"object": {
"amount": 4200,
"currency": "usd"
}
}
}
Every webhook stays on your machine. Your Stripe test events don't need to round-trip through someone else's SaaS to land in your dev server.
A single static Go binary. Point it at a target URL and start catching. No config files, no projects, no accounts.
Hit r and kowari re-sends the selected request to your local server. Perfect for "just reproduce the bug one more time".
in action
kowari \ --port 8080 \ --target \ http://localhost:3000
Listens on :8080, shows the TUI, replays on r.
kowari \ --save hooks.jsonl
Every captured request appended as JSONL. Diff fixtures against prod.
kowari \ --headless \ --save hooks.jsonl
No TUI, just capture. Useful in integration tests and automated runs.
compared
| thing | kowari | webhook.site | ngrok inspect |
|---|---|---|---|
| requires account | no | yes | yes |
| works offline | yes | no | no |
| your bodies leave your box | never | always | always |
| one-key replay | yes | manual | manual |
| binary size | ~8MB | โ | ~30MB |