Self-hosted error tracking, performance monitoring, uptime monitoring and cron monitoring.
Tindra runs as one Go binary with one Postgres database and uses Sentry SDKs with a Tindra DSN.
- Dashboard with KPI strip, transaction density heatmap, hottest issues, release health, and recent alerts
- Error tracking with grouping, stack traces, breadcrumbs, tags, assignees, merge and resolve
- Log search with severity, environment, text, and user filters, plus volume alerts created directly from a query
- Performance monitoring with transaction list, span waterfall, and p50/p75/p95/p99 percentiles
- Profiling with flame graphs on the transaction detail page, from both transaction-based and continuous Sentry SDK profiling
- User-scoped debugging to follow an end user across errors, logs, transactions, web vitals, and performance spans
- Shared investigation filters that preserve project, environment, user, and time range across views, with shareable URLs and custom windows up to 90 days
- Cron monitors with check-in history, missed/error alerts, and Sentry, Oh Dear, and Spatie SDK compatibility
- Uptime monitors with HTTP/HTTPS probing, configurable intervals and timeouts, expected status codes and body assertions, 24h/7d/30d uptime stats, and down/recovery alerts
- Releases linked to issues and regressions
- Alerts via email, Slack, Discord, Microsoft Teams, and webhooks, with filters, log-volume thresholds, and cooldowns
- Source maps resolved server-side, no client exposure
- Guided project setup with test-event confirmation, ingestion diagnostics, and source map verification against real stack frames
- Ingestion monitoring with authenticated Prometheus metrics for queue depth, retries, rejected data, and ingestion health
- SSO and MFA with Google, GitHub, Microsoft, Auth0, Zitadel, and OIDC providers, plus authenticator-based two-factor authentication. Microsoft requires a tenant ID and explicit account linking
- Automatic refresh with pause and manual refresh controls
- MCP server built in to inspect full event payloads, source-mapped stack traces, breadcrumbs, and older event occurrences from Claude or any MCP client via
POST /mcpusing an API token - Keyboard-first UI with command palette, full dark mode, and virtualized lists
bash -c "$(curl -sSL https://install.tindra.sh)"The installer creates a docker-compose.yml with a random database password, pulls the images, and sets up your first account. No manual SQL, no config files.
Full setup guide, environment variable reference, and backup docs at tindra.sh/docs.
Requires Go 1.27+, Bun, and Docker Compose. From the repository root:
cp .env.example .envSet PUBLIC_URL=http://localhost:5173 in .env, then install dependencies and start the backend:
(cd web && bun install --frozen-lockfile)
make web
make db
make runThe frontend build supplies the assets embedded by Go. The development database listens on 127.0.0.1:5432, uses the credentials in .env.example, and stores data in a separate tindra-dev volume. The backend applies migrations on startup and listens on port 8080.
Once the backend is running, create an account in another terminal, replacing the example password with your own (at least 12 characters), then start the frontend:
make cli ARGS='users create --email you@example.com --password "your-local-password"'
cd web
bun run devOpen http://localhost:5173. Two-factor enrollment is required by default. Use make db-stop to stop the development database.
Blendbyte builds cloud infrastructure, web apps, and developer tools.
We've been shipping software to production for 20+ years.
This package runs in our own stack, which is why we keep it maintained.
Issues and PRs get read. Good ones get merged.