Observability — bRRAIn Docs

Dashboards, audit log, request tracing, and the metrics endpoints the Console exposes.

Observability

Observability in the Console is your read-only window into how your organization is using bRRAIn — what's hot, what's slow, what's failing, who did what.

The Observability page

Console → Observability opens to a four-pane view:

  1. Request rate — requests per second across all bRRAIn surfaces, grouped by surface.
  2. Latency — p50 / p95 / p99 latency, again grouped by surface.
  3. Errors — error count and rate, with status-code breakdown.
  4. Compute — CPU / GPU / memory / inflight requests on your brain pod.

Every pane has a range selector (1h / 24h / 7d / 30d / custom) and a filter bar (by surface, by extension, by member role).

Per-extension breakdown

Click any installed extension on the left rail to filter every pane to that extension's traffic. Useful when an extension is suspected of driving load or errors.

The extension-specific view also shows:

  • Its child-process restart count.
  • Its memory and CPU footprint inside the pod.
  • Its last failed health check, if any.

Audit log

The audit log is one of the panes (and is also reachable from Settings → Audit). It shows every action taken on your organization in a searchable table:

  • Who (member or service account).
  • What (the verb on the resource).
  • Where (the affected resource — record, extension, integration, zone, member, etc.).
  • When (timestamp with millisecond precision).
  • How (which client surface — Console, app, API, SDK, marketplace, etc.).
  • Why (free-text reason, when the actor provided one).
  • IP and user-agent at the time of the action.

The log is append-only. Entries can be exported but not edited or deleted (without a destructive Sovereign action that itself audit-logs).

Search supports plain-text query, time range, and structured filters (actor:, action:, resource:). Results stream in as you type.

Request tracing

Click any request on the request-rate pane (drilldown view) to see its trace:

  • Each step the request took through the pod (auth, policy check, handler call, vault read, integration call, etc.).
  • Time spent at each step.
  • The status of each step.

Useful when chasing a slow or failing request. The trace IDs flow through to extension internals when extensions integrate with the bRRAIn tracing SDK.

Quota usage

A separate Quota tab shows current usage against every configured quota:

  • Storage (Vault and Document Portal).
  • Compute hours.
  • Per-extension request quotas.
  • Per-integration call quotas.
  • Member counts vs plan caps.

You can configure soft (warning) and hard (limit) thresholds from Settings & themes → Quotas.

Metrics endpoints (programmatic)

For organizations that want to feed bRRAIn telemetry into their own monitoring stack, we expose a Prometheus-compatible metrics endpoint:

GET https://<your-org-slug>.brrain.io/api/orchestrator/metrics
Authorization: Bearer <service-account-token>

Returns text-format Prometheus metrics covering every counter, gauge, and histogram surfaced on the dashboard. Scrape interval recommendation: 30 seconds.

A Grafana dashboard JSON is available at:

GET /api/orchestrator/grafana.json

Import into your Grafana to get four pre-built panels mirroring the Console panes.

Logs

Operational logs from your pod and from each installed extension are stored on the pod's network volume with rotation. Observability → Logs lets you tail them, search them, and export them.

Logs do not contain Vault record contents — only operational events (requests, restarts, errors). Sensitive payloads are not logged.

Alerts

When a custom alert (configured under Notifications) fires, the firing event appears in the Observability event stream with a click-through to the underlying telemetry that triggered it.

Status page integration

Your organization's status (degraded, healthy, incident) flows automatically into a per-organization status badge displayed at the top of the Console. The same status is queryable via the API for embedding into your own status pages or chatops.

Where to next