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 (it asks for a password of at least 12 characters without echoing it), then start the frontend:
make cli ARGS='users create --email you@example.com'
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.