Nevo is an inbound events layer for your backend. Accept webhooks, inbound email, and more from any provider; Nevo verifies, rate-limits, persists, and hands each one to your service as the same event shape.
Why it exists
Handling inbound from the world is the quiet time-sink of any backend: verify Stripe signatures, thread retries, integrate a separate email provider, translate each vendor’s payload shape, surface a dashboard so someone can see what’s happening. Every team writes that layer. Nobody ships product until they’re done.
Nevo is that layer, pre-built:
- One receiver. Point every provider — Stripe, GitHub, Resend, whatever — at one place. You get one stream to listen on and one shape to code against.
- One shape. Every event arrives as the same object:
webhook.receivedoremail.receivedtoday, more later. Branch onevent.typeand move on. - Built-in durability. Signature verification, per-provider rate limits, replay from the dashboard, and a full delivery log out of the box.
What you get
- Streaming delivery to your service — persistent connection via the SDK, or plain HTTP POST to your own URLs.
- Replies. Call
event.reply(text="…")inside a handler and we route the response back on the channel the event arrived on. Email threading works automatically. - Dashboard. Live events feed, delivery log, channels, endpoints, API keys, billing — everything operable without touching code.
- Replay. Re-deliver any historical event to your service from the dashboard.
Who it’s for
Anyone with a service that needs to react to inbound events. A backend draining Stripe webhooks, a support tool ingesting forwarded email, an AI agent reading alerts and replying — same integration either way. The handler on the other side doesn’t change.
How it fits together
┌────────────────────┐
│ Webhook / email │ ← Stripe, GitHub, Resend, anything
└─────────┬──────────┘
│ verify, rate-limit, persist
▼
┌────────────────────┐
│ Nevo │ ← normalises, records, fans out
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ Your service │ ← one handler, branch on event.type
└────────────────────┘
Next
Create a project and an API key in Create a project, then wire up your first event in Your first event.