A single Rust binary with SQLite storage. Multi-project support, trend charts, source maps, DuckDB-powered analytics, LLM call tracing, and SDKs for every platform.
One Rust binary. SQLite for storage. No Postgres, no Redis, no Kafka. Deploy a docker run and you're done.
Buffered MPSC channel with backpressure. Bloop ACKs instantly and never returns 429s to your clients, even under load.
Normalizes UUIDs, IPs, and numbers before hashing with xxhash3. Groups "Error at 10.0.0.1:5000" and "Error at 192.168.1.2:3000" into one issue.
WebAuthn-based authentication. No passwords to leak, no tokens to rotate. Just your fingerprint or hardware key.
Hourly event timeseries with SVG area charts. Sparklines on every error row show 24-hour trends at a glance.
Isolate errors per project with scoped API keys. Each project gets its own key, alerts, and source maps.
Upload source maps and see deobfuscated stack traces. Toggle between original and minified views in the dashboard.
Create bearer tokens with granular scopes for CI pipelines, AI agents, and scripts. Project-scoped, SHA-256 hashed, revocable from the dashboard.
Optional DuckDB-powered Insights tab: spike detection via z-scores, top movers, error correlations, release impact scoring, and environment percentile breakdowns. Zero data migration — DuckDB reads SQLite directly.
Works with any LLM provider — OpenAI, Anthropic, Google, Mistral, OpenRouter, or local models. Zero-instrumentation proxy mode captures all calls automatically by changing your base URL. Also supports SDK auto-instrumentation for TypeScript/Python. Server-side cost calculation from 2,500+ model pricing with prompt A/B testing.
First-party SDKs for Rust, TypeScript, Swift, Kotlin, React Native, Python, and Ruby. Automatic error capture with zero config.
| Bloop | Sentry (self-hosted) | GlitchTip | Self-built | |
|---|---|---|---|---|
| Deploy complexity | docker run | 23+ containers | 3-5 containers | You decide |
| Dependencies | None (SQLite) | Postgres, Redis, Kafka, Zookeeper, ClickHouse | Postgres, Redis | Varies |
| Idle memory | ~20 MB | 4+ GB | ~500 MB | Varies |
| Binary size | ~15 MB | N/A (multi-service) | N/A (Python) | Varies |
| Ingestion auth | HMAC-SHA256 | DSN tokens | DSN tokens | Custom |
| Dashboard auth | WebAuthn passkeys | Email/password | Email/password | Custom |
| Cost | Free (Apache 2.0) | Free (BSL) | Free (MIT) | Your time |
| Multi-project | Built-in | Built-in | Built-in | Custom |
| Source maps | Built-in | Built-in | Limited | Custom |
| Official SDKs | 7 platforms | 30+ platforms | Sentry-compatible | None |
| API tokens | Scoped bearer tokens | API keys | DSN tokens | Custom |
| Analytics | Spikes, movers, correlations, releases, envs | Built-in (advanced) | Basic | Custom |
| LLM tracing | Built-in (proxy mode, SDK auto-instrumentation, A/B testing, scoring, search) | Via integration | No | Custom |
| Alert channels | Slack, Webhook, Email | Slack, Email, PagerDuty, ... | Slack, Email, Webhook | Custom |
One command. That's it.
docker run -d --name bloop \
-p 5332:5332 \
-v bloop_data:/data \
-e BLOOP__AUTH__HMAC_SECRET=your-secret-here \
ghcr.io/jaikoo/bloop:latest
Then open http://localhost:5332 and register your passkey. The Insights and LLM panels appear automatically when their features are enabled.
The fastest way to trace LLM calls is using the proxy. Just change your base URL:
# Point your app at bloop instead of OpenAI
export OPENAI_BASE_URL=http://localhost:5332/v1/proxy/openai
# That's it! All calls are now automatically traced
# with tokens, cost, and latency captured server-side.
Or install an SDK for error capture and manual LLM tracing:
# Rust (Cargo) — add to Cargo.toml:
# bloop-client = "0.1"
# TypeScript / Node.js
npm install @dthink/bloop-sdk
# React Native
npm install @dthink/bloop-react-native
# Python
pip install bloop-sdk
# Ruby
gem install bloop-sdk
# Swift (SPM) — add to Package.swift dependencies:
# .package(url: "https://github.com/jaikoo/bloop-swift.git", from: "0.3.0")
# Kotlin (Gradle) — add to build.gradle.kts:
# implementation("io.github.jaikoo:bloop-client:0.3.0")