v0.2.1 — Beta · MIT licensed

Stream webhooks to your terminal.

Managed endpoints, signature verification, and CloudEvents normalization — streamed straight to your terminal.

or
14ms p50 deliveryCloudEvents nativeRust, single static binaryMIT protocol & CLI
Live · the actual product

One pipe from any source to your agent loop.

Webhook in, normalized event out, JSON streaming into whatever you're hacking on. No tunnels to manage, no infra to deploy.

webhook source
# GitHub fires…
POST /hooks/team_42/github
x-github-event: push
content-type: application/json
{
"ref": "refs/heads/main",
"commits": [...],
"repository": {...}
}
kite stream — zsh
$ kite stream --source github
↳ Listening on team_42…
github.push (2.3kb)
"refs/heads/main" → 3 commits
stripe.payment.succeeded (1.1kb)
amount: 4900 usd · cust_LZ4q…
$
your agent
# claude reacts…
reading event…
type=com.github.push
signature=verified ✓
running checks
tests passed
deploy queued
→ posted to slack
→ 14ms total
What you actually do with it

Three commands you'll use every day.

Not a list of buzzwords — actual CLI you can copy and run.

01 / 03

Pipe events to anything

Standard streams. Pipe to jq, fzf, your agent runner, or a bash one-liner. No SDK lock-in.

  • CloudEvents 1.0 envelope
  • Filter by source, type, or JSONPath
  • Compact, JSON, or summary modes
kite stream | jq● live
$ kite stream --source stripe --json | jq '.data.amount'
4900
12000
2599
$ kite stream --type "github.*" --compact
push main +3
pr.opened #412
issue_comment #388
02 / 03

Replay yesterday

Every event lives in your durable queue. Replay by range, by source, or by predicate — locally or against staging.

  • 7-day retention on free, unlimited on pro
  • Per-event seq numbers, idempotency keys
  • DLQ for the failures you can act on
kite queue · replay● live
$ kite queue list --source github --since 24h
SEQ TYPE AGE STATUS
1042 push 14m delivered
1041 pr.opened 18m delivered
1040 push 22m retrying
1039 workflow_run 31m dlq
$ kite queue replay --seq 1039
✓ replayed → ok (89ms)
03 / 03

Fan out across the mesh

A manifest declares your sinks, filters, and enrichment. One source, many consumers. Mesh handles the rest.

  • kite.json — single source of truth
  • Per-sink retry, scoring, and importance
  • Open protocol, hosted control plane
kite run --manifest kite.json● live
# kite.json
{
"source": "github",
"sinks": [
{ "to": "http://localhost:3000" },
{ "to": "agent://triage", "filter": ".action == 'opened'" }
]
}
$ kite run --manifest kite.json
↻ 2 sinks active · 0 retries
⚡ x402 · pay-per-event

No signup. Just pay the bootstrap invoice.

Send your first webhook through Kite without an account. Settle micropayments per event over the x402 protocol — perfect for agents that need ephemeral, programmatic access to webhook delivery.

POST /api/v1/bootstrap/x402● 402 Payment Required
# 1. agent calls bootstrap
POST https://api.getkite.sh/api/v1/bootstrap/x402
# 2. server returns invoice
{ "price": "0.001 USDC", "expires_in": 300 }
# 3. agent pays + retries
x-payment: 0xa3f…1c4
200 OK { "team_id": "eph_…", "hook_url": ... }
Pricing

Free to start. Cheap to scale.

Per-event metering, no per-seat charges. Need more? Talk to us.

Free

$0forever
  • 500 events total
  • 7-day retention
  • No overage (hard limit)
Get started free

Growth

$5/ month
  • 5,000 events / month
  • 30-day retention
  • $0.0015 / event overage
Choose Growth
High volume, on-prem, or compliance? Talk to us about Enterprise →

Ready to streamline your webhooks?

Join developers using Kite to build faster, more reliable integrations. Free to start — paid plans from $5/mo.

Get Started Now