Epure
Get startedWelcome

Welcome

Epure groups exceptions: stack traces, breadcrumbs, occurrence counts. Self-host is one Rust binary + PostgreSQL 16 (RLS), two Compose containers. Cloud is the same binary, hosted. Official Sentry SDKs; change only dsn.

Job: app throws → grouped issue + readable stack → ship the fix.

What is Epure?

Error tracking for exceptions: grouped issues, stack traces, breadcrumbs. Keep the official Sentry SDK for your runtime and point dsn at your host (self-host or Cloud).

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 up

8080 taken? cp .env.example .env and set EPURE_PORT. 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.

Self-host is $0 on hardware you control. Unsure which SDK package: Pick your SDK. Prefer managed hosting: Epure Cloud.

What you keep

Keep the official Sentry client and the envelope/store wire shape. Change the host and project id in dsn.

KeepChange
Official Sentry SDK for your runtime (see Pick your SDK)Point dsn at your host
Envelope / store wire shapeHost 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.

ShipsDoes not ship
Exception events + breadcrumbsTracing / APM
JS/TS source map demangleSession replay, profiling
Issues triage, releases, webhooksGeneric logs product
Spike valve, ingest capsiOS / Android crash reporting

Where to go next

Install Compose if the host is down. Otherwise copy a DSN and capture one exception.

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?

Envelope and store accept those official Sentry SDKs. Demangle is JS/TS only, so stacks stay as the SDK sent them. Grouping still uses exception type plus the top in-app frame. Guides: Python, Go, Ruby, PHP, Java, .NET.

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 (public URL follows on localhost), recreate epure. Details: Configuration.

Can I deploy on Render or a homelab panel?

Yes. Templates ship in the public repo — import from Git, no marketplace export. PaaS and panels, one-click deploy guide, Self-host § Deploy.