v0.9 · OTLP gRPC + HTTP

See every request.
Run it on a laptop.

Thrum is distributed tracing without the distributed system. One binary, OpenTelemetry in, a fast UI out. Built for teams too small to run Jaeger and too serious to guess.

$curl -fsSL thrum.dev/install | shCopy

macOS · Linux · Docker · 28MB · MIT licensed

trace 7f3a…c21e412ms · slow
  • GET /api/checkout412ms
  • auth.verify24ms
  • cart.load46ms
  • pg: SELECT items38ms
  • pricing.compute239ms
  • redis: GET rates11ms
  • tax.lookup ×14214ms
  • payment.authorize70ms
  • stripe: POST /v162ms
Thrum found it: tax.lookup called 14× sequentially inside pricing.compute. Batching would save ~190ms.

28MB

single binary

40MB

RAM at 1k spans/s

< 2ms

p99 ingest overhead

0

config files required

Why it’s small on purpose

Everything the big tools do for one service. Nothing they do for ten thousand.

One binary

Collector, storage, and UI in a single 28MB file. No Kafka, no Elasticsearch, no Helm chart. `thrum serve` and you're tracing.

40MB resident

Runs comfortably on the smallest instance you have — or on your laptop next to the thing you're debugging.

OpenTelemetry native

Speaks OTLP over gRPC and HTTP. If you're already instrumented, point the exporter at Thrum and nothing else changes.

Query by shape

Find traces by what happened in them: `where span.db.rows > 10k and duration > 200ms`. Not just by service name.

Retention you choose

Keep 1% of the boring traces and 100% of the slow ones. Sampling rules are three lines of config and reload live.

Works offline

Your data stays on your disk. The free tier isn't a trial — it's the product, without a login.

Instrument

Three lines. Then go back to your actual work.

Thrum ships SDKs for Node, Go, Python, and Rust, but you don’t need them — any OpenTelemetry exporter works. Point it at localhost and traces appear as they happen.

  • Auto-instruments http, pg, redis, grpc
  • Zero-allocation span buffer
  • Hot-reload sampling rules
// app.ts
import { thrum } from "@thrum/node";

thrum.start({ service: "checkout" });

// that's it — http, pg and redis are traced
// open http://localhost:4318

Pricing

Free where it runs on your machine. Paid where we run it.

Local

$0 forever

The full product on your own hardware. No account, no limits, no phone-home.

Install

Team

$29 per month, flat

We host it. Unlimited seats, 30-day retention, SSO, alerts to Slack. One price, not per-seat.

Start 14-day trial

Self-hosted+

$490 per year

Local, plus long-term retention, RBAC, and a human who answers email within a day.

Talk to us
Concept build by Foldline — back to work