API & app monitoring · SaaS

The fastest way to see inside your stack

One plugin for your backend, one SDK for your apps — live traffic, errors, latency, consumers, uptime and alerts — on a dashboard that answers in milliseconds, not minutes.

Start monitoring free See the engine
$ bun add @sentrinel/plugin
Elysia · live today Flutter · live today Hono · soon Express · soon Fastify · soon OpenTelemetry · soon
app.sentrinel.dev/traffic LIVE
Traffic
Consumers
Request logs
Uptime
Resources
Alerts
Errors
Performance
Requests
184k
Error rate
0.4%
p95
118 ms
Apdex
0.97
Requests · last 24 h
EndpointRequestsp95Errors
GET /v1/orders12.4k42 ms0.1%
POST /v1/payments8.1k118 ms1.2%
GET /v1/users6.7k31 ms0.0%
01 — Features

Deep monitoring for APIs
and apps. Nothing else.

No session replay, no product analytics, no kitchen sink. Sentrinel does one job — the sharpest possible view of your backend and the apps that call it — and does it properly.

Endpoint metrics & Apdex

p50 / p95 / p99, throughput and Apdex per endpoint, with banded charts and drill-down modals.

Error tracking

Stacked error charts by status code today; fingerprinted, grouped issues with stack traces next.

Request logs

Search full logs — headers and payloads included — down to a drag-selected slice of any chart.

Consumer analytics

See exactly which API clients drive traffic, errors and transfer — first-class, not an afterthought.

Uptime & alerts

HTTP checks with uptime strips, plus threshold alerts on error rate, latency and downtime.

Host metrics

CPU and memory for the machines running your apps — captured by the same plugin, no extra agent.

+ Distributed tracing + Time travel on every view + Drag-to-zoom charts + Multi-tenant orgs & quotas
02 — The differentiator

Know who is calling, not just how often

Most APM tools tell you your API is slow. Sentrinel tells you it's slow because one consumer is hammering one endpoint. Every request is attributed to the API client behind it.

Traffic, error and data-transfer breakdowns per consumer — the view Datadog and Sentry treat as an afterthought is first-class here.

Consumers — share of trafficLAST 24 H
acme-prod41% · 102k req
mobile-app27% · 67k req
partner-api18% · 45k req
staging-ci ▲ errors9% · 22k req
internal-cron5% · 12k req
03 — The engine

Handles your busiest day
without breaking a sweat

Send us millions of requests a day — Sentrinel absorbs them all, keeps your dashboards answering in milliseconds, and cleans up old data automatically. You never manage storage, servers or retention jobs.

Smart sampling keeps your bill flat: routine traffic is sampled, but every error and every slow request is kept — and your metrics stay exact. Team workspaces, per-app keys and usage quotas are built in from day one.

Your app@sentrinel/plugin · head sampling
▼  HTTPS ingest · per-app API key
Sentrinel APIauth · quotas · batching
Control planeorgs · apps · alerts · rollups
Telemetry enginelogs · spans · auto-retention
▲  millisecond queries
Sentrinel dashboardlight · fast · drag-to-zoom
app.ts// the entire integration
import { Elysia } from "elysia";
import { sentrinel } from "@sentrinel/plugin";

const app = new Elysia()
  .use(sentrinel({
    apiKey: process.env.SENTRINEL_API_KEY,
    sampleRate: 0.25, // errors always kept
  }))
  .get("/", () => "hello")
  .listen(3000);

Keys, environments and sampling are configured from the dashboard once your app connects. Nothing else to deploy.

6,000 rows/s
sustained ingest, verified under load
4–14 ms
dashboard query time over 50,000 rows
100%
of errors and slow requests kept — sampling never hides an incident
04 — Why not a heavyweight APM?

Focused beats bloated

Sentrinel
Datadog / New Relic
Setup time
✓ under 5 minutes
hours of agent & config work
Native SDKs
✓ in-process, zero agents
heavy generic agents
Consumer analytics
✓ first-class
afterthought
Dashboard speed
✓ 4–14 ms queries
often seconds per panel
Cost model
✓ sampling keeps bills flat
per-host + per-GB, grows fast
Scope
✓ deep API monitoring
everything, shallowly, priced high
05 — Pricing

Choose the right plan for you

Try Sentrinel free for 14 days, then decide which plan suits you best. No credit card required at sign up.

Basic

The basics for your side project.

/mo
pricing not yet published
Try for free
✓ 1 app ✓ 1 dashboard user ✓ 100 API consumers ✓ Unlimited requests for metrics ✓ 1M request logs / month ✓ App logs & traces ✓ Uptime checks
MOST POPULAR

Starter

For small teams ready to scale.

/mo
pricing not yet published
Get started
✓ 3 apps ✓ 3 dashboard users ✓ 1,000 API consumers ✓ Unlimited requests for metrics ✓ 5M request logs / month · then $2 per 1M ✓ 20M logs & spans / month · then $1 per 1M ✓ Alerts: Slack · Discord · webhook · email

Premium

The full package for growing teams.

/mo
pricing not yet published
Get started
✓ 10 apps ✓ Unlimited dashboard users ✓ Unlimited API consumers ✓ Unlimited requests for metrics ✓ 25M request logs / month · then $2 per 1M ✓ 100M logs & spans / month · then $1 per 1M ✓ Priority support
06 — FAQ

Frequently asked questions

Nothing on the request path. Metrics are aggregated in memory and flushed on a timer, so no request waits for a network call to us. If Sentrinel is unreachable the batch is dropped with a single warning rather than backing up your process.
Yes. Counters are computed in your process before sampling, so request counts and error rates stay exact at any sample rate — only the individual stored log rows are thinned. Errors and slow requests are never sampled out.
Only if you enable payload capture, and only after masking. Masking runs inside your process before anything is sent, so a masked field never reaches the network. Self-host and nothing leaves your servers at all.
Elysia is first-class. Express, Next.js and Flutter have their own adapters, and anything that speaks OpenTelemetry can skip the plugin and export OTLP/HTTP straight to us.
That is the default. The whole stack is a docker-compose file: the API, Postgres for the control plane and ClickHouse for telemetry, with retention you set. The instrumentation plugin is open and installable straight from GitHub.
Every record knows its neighbours. A log opens the request it was written during; a request opens its trace waterfall; an error occurrence opens the exact request that produced it. You never copy an id into a search box.

Five minutes from now,
you'll know exactly how your app behaves

Free for your first 100k requests. No credit card, no agents, no YAML.

Start free $ bun add @sentrinel/plugin