Okapi
Changelog

What's new in Okapi.

Every release in plain language — ship notes for humans and the agents reading them.

v0.6.0

Alerts, rebuilt

Notification channels — Slack incoming webhooks and signed generic webhooks live at the organization level with a health status, a test send and secret rotation; the destination URL is the credential, so it is withheld from every read and revealed only behind a password prompt
Team and personal rules — per-project routing with a typed filter vocabulary (level, environment, whether the release is the latest, affected users) combined with AND; a personal rule notifies only you and is bound to your membership
A notification that fails is retried, not lost — every granted alert is recorded before its fan-out is attempted, with one ledger row per destination and a retry ladder, so a Slack outage no longer silently swallows the alert
Caps you can reason about — throttles apply per issue, per rule and per destination, and a channel that is dropping everything gets paced back instead of retried into the ground
The old alerts surface is gone — legacy alert rules and the per-project Slack integration are removed along with their API endpoints; existing rules and webhook URLs are not migrated and must be recreated in the new model
Browse Okapi Cloud plans without an account — the pricing and plan pages are readable signed-out, with the trial length coming from the billing catalog itself
v0.5.1
Phone and tablet — the top bar collapses, the section nav scrolls instead of wrapping, settings sidebars stack above their content, and the dense issue and user tables scroll inside their card rather than crushing their columns
Release list search, sort and date range — the controls on the releases page were placeholders; they now filter by version, sort by last or first seen, and bound by a last-seen range
Events over time, from real counts — a 24-hour bar chart on issue detail and a daily chart on release detail, plus the environments a release was seen in
v0.5.0
Negative issue search — exclude terms and phrases with -redis or -"connection reset", and search culprit, short id and error type alongside the title
Ingest repairs bad payloads instead of losing them — NUL bytes, invalid UTF-8, lone surrogates and out-of-range timestamps are fixed or clamped at accept time, and an envelope item that gets dropped is now reported back to the SDK instead of vanishing
Log search matches what you typed% and _ are literal characters again, not accidental wildcards
Cloudflare email transport — send invites, verification and alert mail through Cloudflare's HTTPS API instead of SMTP
Steadier under load — background panics are contained instead of crash-looping, dead-lettered queue rows are counted and requeued, abandoned sessions and notifications are pruned, and /readyz stays down until migrations finish so a deploy never takes traffic on an unmigrated instance
Honest paging — every list endpoint publishes its offset bound and refuses a page past it, rather than quietly returning a different page
IBM Plex Sans throughout — the interface face is self-hosted, so text renders identically on every device
v0.4.0

MCP server for agents

Point a Sentry SDK at Okapi, hand your agent a token, and errors get fixed.

MCP server, first-class — mounted at /mcp with scoped agent tokens (read / triage / admin), rate-limited and audited
An error tracker agents can drivewhats_new, get_issue_context, check_resolution, bulk triage, resolve-in-commit, agent-executed onboarding; agent actions attributed in the UI
Prompt-injection defense — every event-derived string returned to an agent is fenced as untrusted data
Organizations — multi-tenant workspaces isolated by Postgres row-level security; owner/member roles; usage quotas that degrade gracefully instead of surprise-billing
Okapi Cloud — hosted Okapi with a 14-day trial, flat plans, no overage bills
Self-host licenses — flat yearly pricing, a year of updates; your instance never stops ingesting
System monitoring, built in — live CPU/RAM/disk tiles, zoomable history, and threshold alerts for the instance itself
v0.3.2
In-app notifications — a bell and a full notifications page
Account settings — rename, verified email change, password change
Email verification + password reset — single-use hashed tokens; a reset signs out every session
Event stepping — walk an issue's events with prev/next
v0.3.1
SDK backoff done right — 429s carry Retry-After and X-Sentry-Rate-Limits so SDKs pause instead of hammering
Load shedding — a bounded ingest queue sheds bursts with 429s before they hurt the database
Per-project retention — override the global event window per project
Live-updating issues list — new and updated counts appear without a reload
Hardened dashboard auth — CSRF gating and timing-safe checks
v0.3.0

Source maps

Source map upload — sentry-cli compatible, per-project upload tokens
Symbolication before grouping — minified JS frames resolve to real code, so fingerprints survive builds
All-new UI — full redesign, light + dark, compact density
Guided empty states — every zero-state teaches the next step
v0.2.3
Deep-linkable everything — filters and page live in the URL; back/forward-safe, shareable
Release detail pages — what each release introduced and resolved
Real event trends — per-issue sparklines from actual event counts
DSN key last-used — see which keys are alive before revoking one
v0.2.2
Projects dashboard — cards with 30-day sparklines, environments, platforms, latest release; per-user stars
Pagination + bulk actions — issues, logs, releases paginate; select-all-matching bulk resolve/snooze/delete
⌘K command palette — jump anywhere
Update checker — self-host instances learn when a newer Okapi exists (telemetry is opt-out)
v0.2.1

Alerts

Alert rules — get notified when issues fire, with per-rule throttling
Slack + email notifiers — bring-your-own SMTP; evaluation runs off the ingest hot path
v0.2.0

Structured logs

Structured logs — log records ingested from SDK envelopes, with searchable attributes and their own retention window
Logs view — filter by level, search body and attributes
Experimental MCP server — list projects, triage issues, search logs from an agent
v0.1.2
Browser SDK support — CORS on ingest, so frontend SDKs report directly
Per-key rate limiting — a runaway error loop can't flood the instance
Sentry-style numeric project IDs — DSNs look and parse exactly like Sentry's
v0.1.1
Release tracking — events carry their release; issues show where they first appeared
Regression detection — a resolved issue that recurs reopens, flagged as a regression
Snooze with expiry — silence an issue until a time; it wakes itself up
Retention — events pruned past a configurable window
v0.1.0

First release

The first working Okapi: point a Sentry SDK at it and get grouped, triageable errors.

Sentry-compatible ingeststore and envelope endpoints; existing SDKs work by swapping the DSN
Issue grouping — stacktrace fingerprinting groups events into issues; resolve and snooze
Projects & DSN keys — multiple projects per instance, revocable keys
Team basics — session auth, first-run setup, member invites
Single-binary deploy — one Go binary + Postgres; Docker Compose quickstart