Open source · MIT licensed · self-hosted
Track every event.
Own all your data.
A self-hostable event tracking and metrics dashboard. SQLite-backed, ingest with a single HTTP call, host it anywhere.
curl -X POST https://your-app/api/event \
-H "X-API-Key: $BEAVER_KEY" \
-d '{"name":"user.signed_up","title":"Alice registered","channel":"signups"}'User
@admin
Project
Navigation
Channels
Feed
106 eventsSelf-hosted
Your data lives in your own SQLite file. No third party, no data leaving your server, no per-event pricing.
Deploys in minutes
One-click to Render, Railway, or Fly.io — or docker run anywhere. Coolify supported too.
Simple API
One POST /api/event. Send single events or batches of up to 100 in a single call.
// features
Everything you need to watch your product
A focused toolkit for capturing, grouping, and measuring what happens in your app.
Live event feed
A real-time SSE stream of everything happening, grouped into channels and updating as it arrives.
Metrics
Gauges, counters, and timeseries with filterable dashboards. Push a value with one call.
Devops
Channels
Group events into channels with per-channel unread counts and notification settings.
Tags & filtering
Typed key/value metadata — string, number, or boolean — inferred automatically and filterable.
alert · triggered
Disk usage above 90%
Email notifications
Opt-in alerts on important events, delivered through Resend or your own SMTP server.
Per-project API keys
Run many projects from one instance, each with its own scoped ingestion key.
// how it works
From zero to streaming in three steps
- 01
Deploy Beaver
Click a one-click deploy button or run docker run. A SQLite volume and JWT secret are set up for you.
- 02
Create a project & channel
Spin up a project, add a channel, and copy its scoped API key from the settings page.
- 03
Send events
POST to /api/event with one HTTP call. Events stream straight into your dashboard in real time.
curl -X POST https://your-app/api/event \
-H "Content-Type: application/json" \
-H "X-API-Key: $BEAVER_KEY" \
-d '{
"name": "user.signed_up",
"title": "Alice registered",
"channel": "signups",
"icon": "👤",
"tags": { "method": "google" }
}'Single events or batches up to 100. Types are inferred from the JSON.
// get it
Run your own Beaver in minutes
One click to a managed host, or self-host with Docker. No external services required.
or run locally
bun install && bun run devSQLite volume and JWT secret are handled for you — no Postgres, no Redis, no third-party analytics.