A single Rust binary with SQLite storage. Multi-project support, trend charts, source maps, DuckDB-powered analytics, 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.
First-party SDKs for 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 (MIT) | 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 | 6 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 |
| 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 tab appears automatically when analytics is enabled.
Install an SDK to start capturing errors automatically:
# TypeScript / Node.js
npm install @bloop/sdk
# React Native
npm install @bloop/react-native
# Python
pip install bloop-sdk
# Ruby
gem install bloop
# 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("com.jaikoo.bloop:bloop-client:0.3.0")