/docs/self-host
Self-host architecture
obsrv is hosted SaaS by default. Enterprise customers can deploy in their own VPC. This page describes the architecture you'll be running.
Components
- Go ingest API — chi router, slog logging, pgx for Postgres, GCP SDKs for object storage and warehouse.
- Next.js dashboard — App Router, NextAuth v5, server actions for mutations.
- Postgres (pgvector) — control plane: orgs, projects, members, keys, metrics, clusters, embeddings.
- Object storage — GCS by default; S3-compatible buckets supported on Enterprise.
- Warehouse — BigQuery by default; Snowflake / DuckDB on Enterprise.
- Embedding worker — long-running Go worker that extracts text and computes embeddings.
- Cluster discoverer — k-means worker that produces clusters and labels them via Claude.
Required infrastructure
- A Postgres 14+ instance with the
pgvector,pgcrypto, andcitextextensions. - An object storage bucket (GCS or S3-compatible).
- A warehouse for trace indexes (BigQuery, Snowflake, or a DuckDB volume for smaller deployments).
- A container runtime (Kubernetes, Cloud Run, ECS, Fly).
Threat model and isolation
Every artifact stored on disk lives under orgs/{org}/projects/{project}/…. API keys are bound to a project. Dashboard users are bound to org membership. Crossing tenants requires a deliberate, audited control plane action.