Built for code in production · Observability 3.0

The console can wait.
The stack trace can't.

Application monitoring built for developers who actually read the stack trace. Errors, performance, profiling, replays — one platform, one query language, one bill.

sentri.app / acme-web / issues / SENT-2814
prod live
ERROR TypeError · checkout.tsx
12import { computeTotal } from "@/lib/cart"
13
14export async function checkout(cart) {
15 const total = computeTotal(cart.items)
16 → Cannot read properties of undefined (reading 'price')
17 return await stripe.charge(total)
18}
at computeTotal (lib/cart.ts:42)
at checkout (checkout.tsx:16)
at POST (route.ts:9)
DETAILIssue context
events1,284
users412
first seen2h ago
last seen12s ago
environmentproduction
releaseweb@v2026.5.20
browserChrome 134
nodev22.4.0
suspect commita3f29c · river@
+ assign + resolve + replay
Errors. Performance. Profiling.

Everything you need to debug production.

Stop guessing. Sentri ships errors, performance, session replay, distributed tracing, code profiling, and AI root-cause analysis under one unified data model — query it all in one place.

Error monitoring

Every uncaught exception, stack-traced and grouped. Suspect commit, breadcrumbs, and the user who hit it — in one view.

events/day· 18.4M

Performance

Distributed tracing across services, browsers, mobile. Find the slow span — even when it's three jumps deep.

p95 trace· 240ms

Session replay

Watch the exact pixels your user saw when the error fired. Rage clicks, dead clicks, console errors — captured.

replays/day· 2.1M

Code profiling

CPU and memory profiles, line-by-line. Find the hot function before it costs you a server.

fns sampled· 940M/wk

Releases + suspect commit

Tie every error to a release, every release to a commit, every commit to a developer. Blame, kindly.

commits matched· 99.2%

Sentri AI · suspects

The AI reads your traces, replays, commits, and tells you the root cause in plain English — usually within 30 seconds.

root cause· 73% auto
Three lines

Install. Wrap. Ship.

Install the SDK for your runtime, wrap your app, deploy. Sentri starts capturing the moment your first error fires — usually within seconds.

JavaScript Python Go Ruby Rust PHP iOS Android
# 1 — install
$ npm install @sentri/nextjs

# 2 — wrap your app (instrumentation.ts)
import * as Sentri from "@sentri/nextjs"

Sentri.init({
  dsn: "https://abc@o0.ingest.sentri.io/0",
  tracesSampleRate: 1.0,
  replaysSessionSampleRate: 0.1,
  release: "web@v2026.5.20",
  environment: "production"
})

# 3 — ship.
Pricing

Pricing plans for dev teams of all sizes.

Pay by volume. No per-seat tax. No data-residency tax. The free tier is genuinely free, and the next one is the one you actually want.

Developer

$0/ mo

For solo devs and side projects. No card required.

  • 5k errors / mo
  • 10k performance events
  • 50 replays
  • 1 user
  • Community Discord
Start Free

Team

$26/ mo

For startups shipping fast. The usual suspects, included.

  • 50k errors / mo
  • 100k performance events
  • 500 replays / mo
  • Unlimited users
  • Email + chat support
Start Trial

Enterprise

Talk· custom

For regulated industries. SLA, BAA, dedicated CSM.

  • Unlimited volume
  • SOC 2 + HIPAA + BAA
  • SLA · 99.95% uptime
  • Dedicated CSM
  • Self-hosted option
  • Audit log + retention
Talk to Sales

Design system reference

Tokens, type ladder, radius, components — pulled from the captured DESIGN.md.
View source DESIGN.md ↗

Color

Dual-polarity. Violet-midnight + lime keyword chip for marketing; pure white for transactional. Lime is a typographic device, never a button.

Brand & accent

Primary
#150f23
Ink deep
#1f1633
Lime
#c2ef4e
Pink
#fa7faa
Violet
#6a5fc1
Violet deep
#422082

Surface

Canvas dark
#1f1633
Night
#150f23
Canvas light
#ffffff
Hairline violet
#362d59
Hairline cool
#cfcfdb
Hairline cloud
#e5e7eb

Text & state

On primary
#ffffff
Ink
#1f1633
On-dark 72%
rgba(255,255,255,.72)
On-dark 18%
rgba(255,255,255,.18)
Violet mid
#79628c
Press light
#f0f0f0

Typography

Chunky display sans for hero (Rubik 700 stand-in), Rubik for UI, Monaco for code. Buttons + eyebrows are always uppercase with 0.2px tracking.

display-hero
88 / 700 / 1.2
The stack trace
display-large
60 / 500 / 1.1
Debug production
heading-xl
30 / 500 / 1.2
Pricing plans
heading-md
24 / 500 / 1.25
Card title
body-lg
16 / 400 / 2.0
Marketing prose with airy 2.0 leading.
body-md
16 / 500 / 1.5
Default UI body, table cells, form labels.
button-cap
14 / 700 / +0.2 · UPPER
GET STARTED
eyebrow
15 / 500 / 1.4
Errors. Performance. Profiling.
code
16 / 400 · Monaco
Sentri.init({ dsn })

Radius

Buttons + code blocks at 8px, pricing cards at 12px, illustration containers at 18px. Pill-radius for avatars.

xs
4px
sm
6px
md
8px
lg
10px
xl
12px
xxl
18px
full
9999px

Components

Single-polarity CTAs (primary on light, inverted on dark), uppercase button caps, lime keyword chip = typographic device, never a button.

Buttons

inverted
ghost-on-dark
violet-token+ ASSIGN

Pills & chips

chip-lime-keywordtrace
pill-neutral-dark
prod ● live
violet-token+ RESOLVE

Inputs

text-input
focused
select-violet
United States ▾

Code block

# install
$ npm i @sentri/nextjs
Sentri.init({ dsn })

Mascot stickers (decorative — never inside cards)

VIEW DESIGN.MD ↗