Welcome
What Epure is, what ships, and which doc to open next.
Epure groups exceptions on hardware you control. Stack: one Rust binary + PostgreSQL 16 (RLS). Two Compose containers. Official Sentry SDKs; change only dsn.
Job: app throws → grouped issue + readable stack → ship the fix.
What is Epure?
Exception-only error tracking you run yourself. Keep the official Sentry SDK for your runtime and point dsn at your host.
Fastest path if the host is already up: Quickstart. From zero, published repo:
git clone https://github.com/epure-sh/epure.git && cd epure && docker compose up8080 taken? cp .env.example .env and set EPURE_PORT plus EPURE_PUBLIC_URL. Configuration.
http://{public_key}@localhost:8080/{project_id}Who is this for?
You already ship an official Sentry SDK, or you are about to. You want Issues on a VPS without another APM suite.
Cloud billing (Pro $24 / Plus $79) ships later. Unsure which package: Pick your SDK.
What you keep
Keep the official Sentry client and the envelope/store wire shape. Change the host and project id in dsn.
| Keep | Change |
|---|---|
| Official Sentry SDK for your runtime (see Pick your SDK) | Point dsn at your host |
| Envelope / store wire shape | Host and project id in the DSN |
CI fixtures cover @sentry/browser and @sentry/node 7.120.0; other languages have captured fixtures. Set traces, profiles, and replay sample rates to 0.
What ships today?
Two Compose containers, no Redis or Kafka.
| Ships | Does not ship |
|---|---|
| Exception events + breadcrumbs | Tracing / APM |
| JS/TS source map demangle | Session replay, profiling |
| Issues triage, releases, webhooks | Generic logs product |
| Spike valve, ingest caps | iOS / Android crash reporting |
Where to go next
Install Compose if the host is down. Otherwise copy a DSN and capture one exception.
Also useful
FAQ
Can I keep my Sentry SaaS init options?
Yes. Replace dsn and leave the rest of Sentry.init. Set sample rates for traces, profiles, and replay to 0, since those item types are discarded on ingest. Confirm a throw with Verify. Full init tables: JavaScript.
Do Python, Go, or PHP SDKs work?
Do I need Redis or Kafka?
No. Two containers: the Rust binary and PostgreSQL 16. Ingest uses an in-process Tokio queue and sessions live in Postgres. Operators set env vars in Configuration.
What if port 8080 is taken?
cp .env.example .env, set EPURE_PORT and EPURE_PUBLIC_URL together, recreate epure. Details: Configuration.