Runtime-agnostic error capture

Catch every error, in any language before your users do.

Nadi is the central control plane for error telemetry from every app you ship — PHP, JavaScript, Python, Go, and beyond. Send the error, we group it, you triage it.

No SDK lock-in Ā· Any HTTP client Ā· PII scrubbed on arrival

report an error LIVE
$ curl -X POST https://ingest.nadi.pro/v1/ingest \
  -H "X-Ingest-Key: nadi_live_••••••••" \
  -d '{
    "event_id": "3f9c…b21a",
    "level": "error",
    "exception": { "type": "TypeError" }
  }'

# → 202 Accepted  grouped → issue #1042

One backend for every runtime you ship

PHP JavaScript Python Go Ruby Any HTTP client

Built for the things that actually matter

Three principles run through the whole platform.

Accept-fast, flush-later

Ingest returns 202 after only cheap in-memory work, then batches to storage async. A slow or down store never slows the app being monitored.

Fingerprinting that gets grouping right

Per-runtime normalisers understand PHP, minified JS, Python and Go stack formats — so the same error groups into one issue, not a thousand.

Privacy-first by default

PII is scrubbed before anything is stored, returned or forwarded — first-class from day one, and ready for government-grade requirements.

From raw telemetry to a triaged inbox

Everything your team needs to find, understand and resolve issues.

Grouped issue inbox

Occurrences roll up into deduplicated issues with counts, levels and the latest stack trace.

Lifecycle triage

Open, resolve, reopen, mute and acknowledge — assign issues to the right teammate.

Occurrence sparklines

See volume over time at a glance and spot regressions the moment they spike.

Role-based access

Owner, admin, member and viewer roles scope what each teammate can see and do.

Multi-channel alerts

New-issue and regression alerts over email, Slack, Telegram and webhooks.

Analytics

Trends across projects and environments to understand where errors come from.

Up and running in three steps

No agent to babysit. Point your app at an ingest key and you are live.

1

Send

Your app POSTs an error envelope to the ingest endpoint, authenticated by a per-project ingest key.

2

Group

Nadi scrubs, fingerprints and groups each occurrence into the right issue — across every runtime.

3

Triage

Your team triages from a clean inbox: assign, resolve, mute, and get alerted on new issues and regressions.

Stop hearing about bugs from your users.

Start capturing errors across every app you run — in minutes.