What is Nevo?

An inbound event gateway for AI agents — webhooks, email, Slack, and cron delivered prompt-ready.

Nevo is the inbound event layer for AI agents. Point webhooks, inbound email, Slack, or cron schedules at one URL; your agent receives them verified, persisted, and rendered prompt-ready — formatted text you can hand straight to a model. Traditional backends use the same surface without the rendering step.

Why it exists

Every agent team we’ve talked to spends the first sprint doing the same plumbing: verifying Stripe signatures, wiring a separate email provider, translating each vendor’s payload shape into something a model can read, writing a retry log, building a replay tool for when the model drops an event. Nobody ships agent features until that layer exists.

Nevo is that layer, productized:

  • One receiver. Point every provider — Stripe, GitHub, Resend, Linear, whatever — at one place. Your agent listens on one stream, one shape, no per-source parsing.
  • Prompt-ready. Every event arrives with a deterministic text rendering (event.prompt_ready) that’s already shaped for an LLM. The raw payload stays on event.data when your code needs exact values.
  • Built-in durability. Signature verification, rate limits, replay from the dashboard, and a full delivery log out of the box. Events your agent drops can be replayed with one click.

What you get

  • Streaming delivery — persistent SDK connection, or HTTP POST to URLs you own. Pick one, use both; same event shape either way.
  • Replies. await event.reply(text="…") from inside a handler sends the response back on the channel the event arrived on. Email threading via RFC 5322 headers; Slack threading via thread_ts — replies land in the same conversation.
  • Filter rules. Declarative rules in the dashboard drop noisy events (bot PRs, test-mode webhooks), transform fields (redact secrets, normalise cases), or route to specific endpoints — with dry-run against the last 7 days before you enable. See Rules.
  • Dashboard. Live events feed, delivery log, channels, endpoints, API keys, billing. Everything operable without writing code.
  • Replay. Re-deliver any historical event to your agent from the dashboard — recover gracefully when a model goes off the rails.

Who it’s for

Primarily agent builders: teams writing handlers that consume real-world signals, think about them with an LLM, and respond. An on-call agent reading Sentry + PagerDuty and paging a human. A support agent replying to forwarded email. A PR reviewer commenting on GitHub diffs.

Traditional services use Nevo the same way. A Stripe webhook worker, an email-to-ticket bridge — same SDK, same event shape, same dashboard. You just skip event.prompt_ready since there’s no model on the other end.

How it fits together

  ┌──────────────────────────────┐
  │  Webhook / email / slack /   │  ←  Stripe, GitHub, Resend, @mentions,
  │  cron                        │     schedules — anything
  └─────────────┬────────────────┘
                │ verify, rate-limit, persist

  ┌──────────────────────────────┐
  │            Nevo              │  ←  normalise, render prompt-ready, fan out
  └─────────────┬────────────────┘


  ┌──────────────────────────────┐
  │         Your agent           │  ←  one handler, branch on event.type
  └──────────────────────────────┘

SDKs

First-party SDKs with identical event shapes and reply semantics:

  • Pythonpip install nevo-sdkdocs.
  • TypeScriptnpm install nevo-sdkdocs.
  • Gogo get github.com/nevo-sh/nevo-godocs.

Each SDK wraps the same streaming connection and reply API. Pick by stack; move between them without code changes on the Nevo side.

Next

Create a project and an API key in Create a project, then wire up your first event in Your first event.