Launch offer: −50 % on your first payment, until November 30.See the offer →
webhook·toolkit
smee.io alternative

The smee.io workflow, with an inspector and replay

smee.io, from the GitHub Probot team, is the classic way to receive GitHub webhooks on localhost: a channel URL plus a small client that forwards each delivery. It does that job well. webhook-toolkit keeps the same one-command flow and adds what you usually end up needing next: the webhooks stay stored, you can replay them, generate signed test events and wait for them in tests.

From smee to webhook-toolkit in one line

Before
npx smee-client -u https://smee.io/aBcD1234 -t http://localhost:3000/api/github/webhooks
After
npx webhook-toolkit listen --forward http://localhost:3000/api/github/webhooks

Paste the printed URL as the webhook URL of your GitHub App or repository. Each delivery appears in your terminal with the event name (push, pull_request, issues…), is forwarded to your handler with its original X-Hub-Signature-256, and stays visible in the web inspector.

Side by side

smee.iowebhook-toolkit
Public URL that forwards to localhost✓✓
No account needed✓✓
Webhooks kept when your machine is off—✓ 7–30 days
Web inspector (headers, raw body, search)live only✓ stored
Sender & event detection (Stripe, GitHub, Shopify…)—✓
Replay a past webhook to localhost—✓
Signed test events (GitHub, Stripe, Slack…)—✓
Wait for a webhook in Vitest / Jest / Playwright—✓
MCP server for AI agents—✓
Open source client✓✓ MIT

Based on the public smee.io site and client in September 2026.

Test a GitHub webhook handler without GitHub

Terminal
npx webhook-toolkit sign github --secret "$GITHUB_WEBHOOK_SECRET" \
  --payload '{"action":"opened","number":42}' \
  --send http://localhost:3000/api/github/webhooks

More commands on the CLI page; signature debugging on the GitHub signature validator.

Frequently asked questions

Is webhook-toolkit a drop-in replacement for the smee client?

For the forwarding part, yes: `smee -u https://smee.io/abc -t http://localhost:3000/webhooks` becomes `npx webhook-toolkit listen --forward http://localhost:3000/webhooks`. You get a new public URL to paste in GitHub (or any sender) instead of the smee channel URL.

Are signatures preserved when forwarding?

Yes. The request is re-sent with the same method, headers and raw body, so X-Hub-Signature-256, Stripe-Signature and other HMAC headers still verify against your secret on localhost.

What happens to webhooks sent while my laptop is off?

They are stored on the URL (7 days free, 30 days on paid plans). Open the inspector to see them, or replay any of them to localhost later with `npx webhook-toolkit replay <token> <id> --to http://localhost:3000/webhooks`.

Is it free and open source?

The CLI is MIT-licensed on GitHub and free to use without an account. A free account keeps your URL forever; the 7-day Pass (€5) or Pro (€9/month) add AI explanations, 25 URLs and the Relay tunnel.

Launch offer · −50 %

Debugging a webhook integration this week?

The 7-day Pass unlocks AI explanations and ready-to-paste handler code, 25 permanent URLs, 30-day history and the Relay tunnel to localhost. Pay once, no subscription.

€5 €2.50 once
One-time payment · no subscription · 14-day money-back · launch price until November 30
smee.io alternative — forward webhooks to localhost with an inspector · Webhook Toolkit