Everything that happened,
on a server you own.
Analytics, error tracking, APM, logs, session replay, monitoring, feature flags and experiments in one self-hosted binary. Click an error, see the trace, watch the session. Two processes, about 100 MB idle, on a $5 VPS.
Four vendors, four dashboards, four bills, and the moment that matters falls between them. Observe keeps the error, the trace behind it, the log line inside it, and the session that hit it in one place, on hardware you already pay for.
Everything connects
One data layer under every vertical, so a click carries you from the symptom to the cause without changing tools or copying an id.
TypeError in CartSummary
34 users since release 9f3c21. Grouped by type and in-app frames, source-mapped.
POST /api/checkout, 212ms
The span that threw, the query before it, the Stripe call that ran long, the log lines inside each.
sess_a91f, error at 02:35
Watch what the user did before it broke. The error is a marker on the timeline.
Every vertical, one install
Product analytics without the cookie banner
Pageviews, visitors, sessions, funnels, retention, journeys and goals. Cookie-free, so there is nothing to consent to.
- Top pages, referrers, UTM and channel classification
- Browser, OS, device, country, language
- Custom events with property drill-down
- Funnels, retention cohorts, user journeys, goals
- Real-time active visitors
- Web vitals with observe.trackVitals()
Grouped, searchable, and tied to the session that hit it
Automatic grouping by type and in-app frames, source-mapped stack traces, and a link from every error to the trace and the replay behind it.
- Automatic grouping, release health, breadcrumbs
- Stack trace viewer with source-map support
- Full-text search across messages
- Issue status: open, resolved, ignored
- Error to session and error to trace correlation
- Alert on new or regressed issues
OpenTelemetry in, RED metrics and waterfalls out
Point any OTLP exporter at Observe over HTTP. Traces, metrics and logs in protobuf or JSON, no collector required.
- Service list with rate, errors, duration
- Waterfall and flame-graph views
- Dependency map
- p50 / p95 / p99 latency per endpoint
- Slow query detection
- LLM calls: tokens, cost, latency, per model
Logs that know which trace they belong to
Level, service and trace-id correlation with full-text search, plus pipelines to shape what you keep.
- Trace-id correlation from the log line to the span
- Full-text search
- Pipelines: JSON parse, regex extract, rename, mask, sample
- Per-site rate limiting so one noisy site cannot starve another
- WAL-backed ingest; crash recovery replays since the last checkpoint
Watch the session, not the screenshot
DOM snapshots with mouse, click, scroll and mutation recording. Scrub the timeline; errors are marked on it.
- DOM snapshot plus interaction recording
- Timeline scrubbing
- Error markers on the timeline
- Jump from an error group to its sessions
- Feedback widget in one script tag
The product tools that usually cost a second subscription
Feature flags, A/B experiments with real statistics, surveys, uptime and cron monitors, alerting with incident markers.
- Boolean and multivariate flags, rollout %, user targeting
- Experiments: frequentist p-value and Bayesian probability-to-beat
- Surveys and custom dashboards with panels
- HTTP uptime monitors and cron heartbeat monitors
- Threshold alerts with cooldown and silence; a fired alert opens an incident marker
- Jira, GitHub, PagerDuty, Slack, email, webhooks
Three things no competitor bundles
AI query assistant
English in, SQL out, on the read-only explorer. Your LLM key, your cost, and every call logged to the LLM-tracing table.
Incident markers
When an alert fires, every time-series chart overlays the window. You stop guessing whether the spike and the page were the same thing.
r2://acme-exports · 02:00 UTCsent
s3://finance · Mon 06:00sent
minio://ops · hourlysent
Scheduled SQL exports
Any query, on a schedule, to any S3-compatible bucket. Your data warehouse gets Observe's tables without an ETL vendor.
Two processes.
~100 MB idle.
A $5 VPS.
A Go binary and Nucleus. That is the whole stack.
No Kafka, no ClickHouse cluster, no Kubernetes. Ingest is WAL-backed, per-site rate limited, and replays from the last checkpoint after a crash. Upgrades stage the new binary, require three healthy responses from the new version, and roll back on their own if they do not get them.
One command, then one script tag
Homebrew, Docker Compose, or a signed install script that verifies the release checksum before it runs anything. First visit is the setup wizard; there is no default password because none exists until you choose one.
OTLP exporters point at /v1/traces, /v1/metrics, /v1/logs over HTTP. No collector required.
Four bills or none
5M events, 10 hosts, 50k errors a month
50M events, 50 hosts, 500k errors a month
- One install, one dashboard, no per-seat pricing
- Your server, your data, no event caps
- Click an error, see the trace, watch the session
- Flags, experiments and monitors included
Pricing verified for the two scales shown. Costs compound as events and hosts grow; Observe's cost is the box it runs on.
How Observe compares
| Observe | PostHog | Sentry | Datadog | Umami | |
|---|---|---|---|---|---|
| Web analytics | Yes | Yes | No | Limited | Yes |
| APM and tracing | Yes | No | Limited | Yes | No |
| Error tracking | Yes | No | Yes | Limited | No |
| Logs | Yes | No | Limited | Yes | No |
| Session replay | Yes | Yes | Yes | Yes | No |
| Feature flags and experiments | Yes | Yes | No | No | No |
| Self-hosted | One binary | Yes, heavy | Yes, heavy | No | Yes |
| Cookie-free | Yes | No | N/A | N/A | Yes |
| OTLP compatible | Yes | No | No | Yes | No |
| One dashboard across all of it | Yes | Analytics only | Errors only | Infra focus | Analytics only |
Run it yourself
One binary, your server. No accounts, no event caps, no per-seat pricing.