Every webhook, live in your terminal.
Stream every event from the bucket. Filter, search, replay — all without leaving the CLI.
Press space. See the entire request.
Headers, payload, response, latency — every detail of any event, ready to copy.
Generate types from real traffic.
TypeScript, Zod, Effect Schema, Go, Python — synced to what your producer actually sends.
| Time | Method | Path | Dest | Code | Status | Duration | |
|---|---|---|---|---|---|---|---|
| ▶ | 14:05:18.412 | POST | /v1/stripe/payment_intent.succeeded | Local → http://localhost:3060/webhooks/stripe | 200 | SUCCESS | 39ms |
| ▶ | 14:05:17.823 | POST | /v1/github/issues.opened | Local → http://localhost:3060/webhooks/github | 200 | SUCCESS | 82ms |
| ▶ | 14:05:17.012 | POST | /v1/shopify/checkouts.update | Local → http://localhost:3060/webhooks/shopify | 200 | SUCCESS | 47ms |
| ▶ | 14:05:16.554 | POST | /v1/auth/token.expired | Local → http://localhost:3060/api/auth | 401 | FAILED | 9ms |
| ▶ | 14:05:15.991 | POST | /v1/notifications/delivered | Local → http://localhost:3060/api/notifications | 200 | SUCCESS | 58ms |
| ▶ | 14:05:15.420 | POST | /v1/stripe/customer.updated | Local → http://localhost:3060/webhooks/stripe | 200 | SUCCESS | 71ms |
| ▶ | 14:05:14.812 | POST | /v1/github/check_run.completed | Local → http://localhost:3060/webhooks/github | 200 | SUCCESS | 53ms |
| ▶ | 14:05:14.205 | POST | /v1/inventory/restock | Local → http://localhost:3060/api/inventory | 502 | FAILED | 5.4s |
| ▶ | 14:05:13.677 | POST | /v1/shopify/orders.cancelled | Local → http://localhost:3060/webhooks/shopify | 200 | SUCCESS | 64ms |
| ▶ | 14:05:13.103 | POST | /v1/slack/reaction_added | Local → http://localhost:3060/webhooks/slack | 200 | SUCCESS | 42ms |
| ▶ | 14:05:12.522 | POST | /v1/stripe/charge.failed | Local → http://localhost:3060/webhooks/stripe | 200 | SUCCESS | 48ms |
| ▶ | 14:05:11.998 | POST | /v1/payments/refund.created | Local → http://localhost:3060/api/payments | 200 | SUCCESS | 76ms |
| ▶ | 14:05:11.412 | POST | /v1/orders/shipped | Local → http://localhost:3060/api/orders | 200 | SUCCESS | 59ms |
| ▶ | 14:05:10.834 | POST | /v1/github/release.published | Local → http://localhost:3060/webhooks/github | 200 | SUCCESS | 37ms |
| ▶ | 14:05:10.212 | POST | /v1/stripe/invoice.upcoming | Local → http://localhost:3060/webhooks/stripe | 200 | SUCCESS | 92ms |
| ▶ | 14:05:09.687 | POST | /v1/auth/login.success | Local → http://localhost:3060/api/auth | 200 | SUCCESS | 31ms |
| ▶ | 14:05:09.122 | POST | /v1/shopify/products.update | Local → http://localhost:3060/webhooks/shopify | 200 | SUCCESS | 68ms |
| ▶ | 14:05:08.567 | POST | /v1/notifications/bounced | Local → http://localhost:3060/api/notifications | 200 | SUCCESS | 45ms |
| ▶ | 14:05:08.234 | POST | /v1/stripe/checkout.completed | Local → http://localhost:3060/webhooks/stripe | 200 | SUCCESS | 61ms |
| ▶ | 14:05:07.811 | POST | /v1/github/workflow_run | Local → http://localhost:3060/webhooks/github | 200 | SUCCESS | 44ms |
| ▶ | 14:05:06.523 | POST | /v1/orders/refund.requested | Local → http://localhost:3060/api/orders | 503 | FAILED | 2.1s |
| ▶ | 14:05:05.412 | POST | /v1/shopify/inventory.update | Local → http://localhost:3060/webhooks/shopify | 200 | SUCCESS | 73ms |
| ▶ | 14:05:04.198 | POST | /v1/slack/team.access_revoked | Local → http://localhost:3060/webhooks/slack | 200 | SUCCESS | 55ms |
| ▶ | 14:05:03.034 | POST | /v1/stripe/invoice.paid | Local → http://localhost:3060/webhooks/stripe | 200 | SUCCESS | 43ms |
| ▶ | 14:05:01.911 | POST | /v1/github/push | Local → http://localhost:3060/webhooks/github | 201 | SUCCESS | 87ms |
| ▶ | 14:05:01.602 | POST | /v1/stripe/customer.subscription | Local → http://localhost:3060/webhooks/stripe | 200 | SUCCESS | 62ms |
| ▶ | 14:05:01.003 | POST | /v1/orders/created | Local → http://localhost:3060/api/orders | 500 | FAILED | 1.2s |
| ▶ | 14:05:00.524 | POST | /v1/shopify/orders.create | Local → http://localhost:3060/webhooks/shopify | 200 | SUCCESS | 124ms |
| ▶ | 14:05:00.015 | POST | /v1/payments/intent.succeeded | Local → http://localhost:3060/api/payments | 429 | FAILED | 8ms |
| ▶ | 14:04:59.412 | POST | /v1/stripe/charge.refunded | Local → http://localhost:3060/webhooks/stripe | 200 | SUCCESS | 51ms |
| ▶ | 14:04:58.797 | POST | /v1/slack/message.channels | Local → http://localhost:3060/webhooks/slack | 200 | SUCCESS | 67ms |
| ▶ | 14:04:57.475 | POST | /v1/inventory/sync | Local → http://localhost:3060/api/inventory | 504 | FAILED | 30.0s |
| ▶ | 14:04:55.456 | POST | /v1/github/pull_request.opened | Local → http://localhost:3060/webhooks/github | 200 | SUCCESS | 95ms |
| ▶ | 14:04:55.454 | POST | /v1/auth/user.deleted | Local → http://localhost:3060/api/auth | 404 | FAILED | 12ms |
| ▶ | 14:04:46.518 | POST | /v1/stripe/invoice.paid | Local → http://localhost:3060/webhooks/stripe | 200 | SUCCESS | 38ms |
Every webhook, live in your terminal.
Stream every event from the bucket. Filter, search, replay — without leaving the CLI.
Press space. See the entire request.
Headers, payload, response, latency — every detail of any event, ready to copy.
Generate types from real traffic.
TypeScript Zod, Effect Schema, Python, Go — synced to what your producer actually sends.
$ repost forward queue --to localhost:3060
Every workflow, one binary.
Six commands cover the entire webhook lifecycle.
Tunnel a live bucket to localhost. Same TUI as the screenshot above.
repost forward queue --to localhost:3060
Query any event by path, status, or payload. Pipe to jq.
repost search queue --status 5xx --since 1h
Re-deliver one event or a whole search result. Idempotent.
repost replay --query 'status:failed' --limit 100
Generate TypeScript or Go types from observed payloads.
repost types queue --lang ts --out ./src/webhooks.ts
Live-stream events to stdout. JSON, plain, or pretty.
repost tail queue --format json | jq .body
Pause forwarders during deploys, drain on resume.
repost deploy pause queue && ./deploy.sh
One command.
No runtime.
Single static binary. No Node, no Python, no Docker required. Ships for macOS, Linux, and Windows on amd64 and arm64.
brew install repost-sh/tap/repost
Stop dropping webhooks.
Start in 30 seconds.
50K events/month free. No credit card required.