Event delivery for autonomous agents

Wake the right agent.At the right moment.

Kite turns webhooks, events, and agent messages into filtered, durable wake-up calls for the agents that should act — without exposing a port or running a polling loop.

Filter before inference Replay missed events Agent-to-agent messaging
v0.2.2 · Beta · MIT licensed
KITE EVENT MESH / LIVE FLOW
events + agents in
Research Agent
AGENT A
agent.message · to:dev-agent
···Heartbeat
+1s
bot.ping · no action needed
KKite Cloud
+2s
team.first_event · activated
$Stripe
+3s
invoice.payment_failed · urgent
kitefilter + route
agent_to = dev-agent
agents ready
Dev Agent
code + deployment
waiting for a high-signal code event
sleeping
Marketing Agent
activation + lifecycle
waiting for a meaningful customer signal
sleeping
Billing Agent
revenue recovery
waiting for a billing exception
sleeping
received com.kite.agent.messagedurable · replayable
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

Four commands you'll use every day.

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

01 / 04

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 / 04

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 / 04

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
04 / 04

Developer SDK — your app is a source

Official TypeScript and Rust SDKs. Emit your own domain events through the same pipeline as GitHub or Stripe — straight to the CLI and your agents.

  • @getkite/sdk on npm, kite-sdk on crates.io
  • Custom CloudEvent types and summaries
  • Zero dependencies, retries built in
npm install @getkite/sdk● live
import { Kite } from "@getkite/sdk";
 
await kite.emit("com.myapp.user.signup", { userId },
{ summary: "User signed up" });
 
$ kite stream --source my-app
com.myapp.user.signup User signed up
⚡ 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
FAQ

AI agent event delivery, explained

What is event delivery for AI agents?

Event delivery for AI agents is the infrastructure between an event source and an agent runtime. Kite accepts webhooks and native agent messages, verifies and normalizes them, persists them in a durable queue, applies routing rules, and delivers only the relevant events to the connected runtime that can invoke the intended agent.

How does Kite wake the right AI agent?

Kite routes events within a team using subscription scopes, event types, source filters, and recipient identifiers. For native agent messages, the receiving runtime subscribes with agent_to:<recipient>. Kite delivers the matching event over WebSocket; the connected adapter or runtime, not Kite itself, invokes the destination agent.

Can AI agents send messages to each other through Kite?

Yes. Kite represents native agent-to-agent messages as com.kite.agent.message CloudEvents. Messages are team-scoped, persisted before delivery, routed to agent_to:<recipient> subscribers, acknowledged over WebSocket, and available for replay if the receiving agent was offline.

Can Kite filter events before they reach an agent?

Yes. WebSocket subscriptions can narrow server delivery by source, event type, or agent recipient. In CLI pipelines, manifest filter rules and importance thresholds can then drop noise before it reaches the downstream agent runtime, reducing unnecessary inference.

What happens when an agent is offline?

Kite persists native agent messages in the team's event log instead of dropping them. If a WebSocket listener disconnects, the receiving runtime can replay messages after reconnecting, so transient outages do not lose accepted messages.

Does Kite work with ordinary webhooks as well as AI agents?

Yes. The same delivery layer handles conventional sources such as GitHub and Stripe webhooks alongside native agent messages. Kite verifies supported provider signatures, normalizes payloads to CloudEvents 1.0, and routes them to terminals, services, or agent runtimes without exposing a local inbound port.

Ready to wake your first agent?

Route the signals that matter to the agents that should act. Free to start — paid plans from $5/mo.

Route Your First Event