Observability

Know what identity is doing

Who is active, what is slow, what failed and why — from a dashboard you did not have to assemble, over a request trail you can query

Observability/Audience · last 30 days

Audience

Who is active in this project, and when.

Unique active users per day

Activity by hour and weekday

Mon
Tue
Wed
Thu
Fri
Sat
Sun
Audience

Audience

Product questions, answered from identity data you are already producing

Events and logs/Requests

Requests

Every call the platform served, as it happened.

TimeMethodStatusPath
12:04:11.204POST200/auth/signin
12:04:10.881GET200/.well-known/jwks.json
12:04:09.117POST401/auth/signin
12:04:08.640POST200/oauth/token
12:04:07.019POST429/auth/signin
12:04:05.552POST502/functions/webhook-relay
12:04:04.238GET200/auth/session
12:04:02.907POST202/notifications/send

Status codes over time, then the individual requests — with session, latency and edge on each row

Active users

Unique users per day, over any window you pick

Activity heatmap

Density by hour and weekday — when your product is actually used

Method breakdown

Which ways in people actually take, and which you can retire

Retention

Who came back, grouped by when they first signed up

Monitoring

Monitoring you did not have to set up

Throughput by status class, by endpoint, and the bandwidth moving through. The monitoring exists because the platform served the calls — there is no agent to install and no metrics pipeline to keep alive

  • Requests

    Volume and status codes per endpoint over time

  • Latency

    p50, p95 and p99, split by endpoint and by edge

  • Network

    Geography and edge distribution of live traffic

  • Errors

    Failure rate with the failing requests one click away

Network

Bandwidth in and out, minute by minute.

last 10 min

Web bandwidth total per minute

Total bandwidth used per minute, in bytes

bytes
50k25k0
04:2504:2704:2904:3104:33
Bandwidth (bytes)

Ingress per minute

bytes
20k10k0
04:2504:2704:29
Ingress (bytes)

Egress per minute

bytes
50k25k0
04:2504:2704:29
Egress (bytes)

Bandwidth and throughput as live series — the brand-coloured line is your traffic, minute by minute

Detection

See it before your inbox does

A wall of 5xx after a release, a wave of 401s from one client, an endpoint that quietly started refusing everyone. It shows up in the shape of the series long before someone writes in about it

Throughput by HTTP status

The shape changes before anyone writes in.

5xx up 42% on /oauth/tokenlast 30 min

Web throughput by HTTP status

Grouped by status class

req/m
20100
04:0504:1204:1904:2604:33
2xx4xx5xx

Status classes over time, so a change in shape is what you notice — not a number in a table

Status classes

2xx, 4xx and 5xx as separate series, so a spike has an obvious colour

Per endpoint

Narrow to the path that changed shape, then read its requests

Nothing to instrument

The series exist because the platform served the calls, not because you wired an agent

Logs

Logs you can query

One trail across authentication, functions, notifications and system events — with a query language, not a search box

  • Explorer

    Write a query, get rows, keep the query

  • Request logs

    Every call with its session, decision, duration and origin

  • Function and system logs

    Your code and the platform, in the same place and the same schema

  • Audit trail

    Who changed which setting, in which environment, and when

Explorer

One trail across auth, functions, notifications and system events.

Run
select ts, email, reason, ip from auth_events
where event = "signin" and ok = false
tsemailreasonip
12:04:11[email protected]bad_password31.22.8.4
12:03:52[email protected]user_banned77.14.2.90
12:02:19[email protected]mfa_required81.3.44.7
11:59:03[email protected]bad_password31.22.8.4

A query language over the same trail, so "which sign-ins failed and why" is one query

Every call is already an event

You do not instrument anything. The same call your product makes is the row you query later, with the session and decision attached.

observability.ts
const { data: verified } = await nulvless.auth.verify({
  resource: "proj_16tbwq34",
  roles: ["owner", "admin"],
});

One platform, from your first user

Focus on your product. We handle identity infrastructure

What you would have built

Six areas, every one of them a project of its own.

  • Authenticationpasswords, providers, MFA, sessions
  • AuthorizationRBAC, scopes, per-resource grants
  • OAuth serverOIDC discovery, JWKS, PKCE
  • Edge functionsDeno runtime, deploys, rollback
  • Notificationstemplates, providers, delivery logs
  • Observabilitymonitoring, audit trail, query
Roughly9 engineer-months · $135,000You start at$0