hookwitness

Self-hosted webhook catcher with verdicts: signature and JSON Schema checks, fault scenarios, live UI, reports, REST API and MCP.

Go / Docker / REST API / MCP

Self-hosted: container image or one binary

Catch webhooks, get a verdict, attach the evidence.

Status: 0.2 (v0.2.0, October 2026). The catcher, scripted replies, verdicts, reports, the REST API and the MCP server work, with users and login, replay and setup files. Until 1.0 a minor version may change the API or the flags. Apache License 2.0.

A 20-second run: GitHub webhooks arrive live on the register; the third is answered 503 by a rule; one signed with the wrong secret turns red and its page says the signature does not match; then the report is downloaded and opened

  • A verdict for every request. Signatures (GitHub, Stripe, Standard Webhooks, any HMAC), bearer tokens, Basic credentials and JSON Schema, each pass or fail with the reason.
  • Faults on purpose. Fail every Nth delivery or the first N, answer late, hang, reset the connection, and watch the sender's retries on the strip.
  • Evidence for the ticket. A Markdown, HTML or PDF report of what arrived and what was answered.
  • Users and replay. Login with two roles, personal tokens for scripts and agents; a kept request is sent again, byte for byte, to a URL of your choice.
  • REST API and MCP server. Everything the UI does, plus long-poll waits and an expect assertion for agents.

Try it:

docker run -d --name hookwitness -p 127.0.0.1:8080:8080 -v hookwitness:/data \
  ghcr.io/petroladkin/hookwitness:0.2

Then open http://127.0.0.1:8080/admin/ and create an endpoint. Quick start, documentation and the comparison with other tools are in the repository.