Open source Rails error dashboard. Self-hosted, privacy-focused, zero recurring costs. Built for solo developers who don't want to pay for expensive monitoring tools.
undefined method 'email' for nil
Couldn't find User with 'id'=123
wrong number of arguments
Sentry costs $26/month. Rollbar costs $25/month. Honeybadger costs $39/month.
Rails Error Dashboard costs $0/month.
Self-host it on your own server. Own your data. No vendor lock-in. No surprise bills.
30+ powerful features, all included for free
Automatically catches errors via middleware and Rails.error subscriber. Never miss a bug.
Error trends, platform comparison, correlation analysis, MTTR statistics, and more.
Automatically groups duplicate errors. See occurrence counts instead of spam.
Slack, Email, Discord, PagerDuty, and custom webhooks. Get alerted instantly.
Assign errors, set priorities, snooze notifications, add comments. Full team collaboration.
REST API for iOS, Android, React Native, Flutter. Track mobile errors too.
Catppuccin-themed interface. Dark and light modes. Responsive on all devices.
Your data stays on your server. Passwords and tokens auto-filtered. No third-party tracking.
Jira integration, Prometheus metrics, audit logs. Easy to extend with custom plugins.
Track errors from multiple Rails apps in one dashboard. Auto-registration, data isolation, easy app switching. See it in the demo!
See inside your exceptions. Capture local variables, instance variables, swallowed exceptions, and system diagnostic dumps. Every feature opt-in and production-safe.
See every local variable in scope at the exact moment an exception is raised. Powered by TracePoint(:raise) — no Binding objects stored.
Capture instance variables from the object that raised the exception. See @user, @order, and the receiver's class name.
Find exceptions your code raises but silently rescues — the bugs that never reach your error tracker. Uses dual TracePoint(:raise) + TracePoint(:rescue).
Capture on-demand system state snapshots: environment, GC stats, threads, connection pool, memory, and job queue. Stored for historical comparison.
Track Rack::Attack throttle, blocklist, and safelist events as breadcrumbs. Correlate rate limiting with errors on a dedicated summary page.
Catch unhandled exceptions that crash the Ruby process via at_exit hook. The last line of defense before your app goes down.
Aggregate analysis pages, deprecation tracking, N+1 detection, cache health monitoring, system health snapshots, job & database health, and flexible authentication. No competitor has all of these.
App-wide deprecation warnings grouped by message and source. See occurrence counts, affected errors, and filter by time range — all in one view.
Cross-error N+1 analysis grouped by SQL fingerprint. Find the most impactful query patterns with cumulative time and eager loading suggestions.
Per-error cache performance sorted worst-first. Hit rates, read/write counts, slowest operations, and advisory alerts when hit rate drops below 80%.
Each error's detail page shows a red summary card with every deprecation warning captured during that request, including source file and line number.
Each error shows repeated SQL patterns with eager loading tips. Smart normalization of literals and IN clauses — no gems like bullet needed.
Know your app's runtime state at the moment of failure. GC stats, process memory, thread count, connection pool, and Puma stats captured automatically.
Use your existing Devise, Warden, or session-based auth instead of HTTP Basic Auth. One lambda, full controller context access, fail-closed security.
Aggregate view of background job queue stats across errors. See which errors correlate with Sidekiq, SolidQueue, or GoodJob failures — sorted by failed count.
PgHero-style database health panel. Live connection pool stats, PostgreSQL table sizes, dead tuples, unused indexes, and per-error connection pool stress scores.
Generate request specs for all dashboard endpoints with one command. Copy-to-clipboard button on the settings page for quick access.
Smarter error tracking out of the box. Most features work automatically — no configuration needed.
See the full root cause chain: SocketError caused RuntimeError. No more guessing.
Every error captures HTTP method, hostname, content type, and request duration automatically.
Resolved errors automatically reopen when they recur. Never miss a regression with the "Reopened" badge.
Passwords, tokens, secrets, and API keys are automatically scrubbed from error context before storage.
Ruby version, Rails version, gem versions, server, and database adapter captured at error time.
Severity filters, per-error cooldown, and milestone threshold alerts prevent alert fatigue.
Override error grouping with a lambda. Group RecordNotFound by controller, or any custom logic.
Zero-config capture of Current.user, Current.account, and any other attributes.
Core gem now requires only rails + pagy. Four dependencies made optional.
PostgreSQL BRIN index on occurred_at — 72KB vs 676MB B-tree. 70x faster time-range queries.
Uses backtrace_locations for richer data with proper path, line number, and method labels.
Three simple steps to start tracking errors
gem "rails_error_dashboard", "~> 0.4.1"
$ bundle install
rails generate rails_error_dashboard:install rails db:migrate
rails server # Visit: http://localhost:3000/error_dashboard
Default credentials: gandalf / youshallnotpass
Compared to: Sentry ($26/mo), Rollbar ($25/mo), Honeybadger ($39/mo), Bugsnag ($59/mo)
Try the live demo now. See all 30+ features in action. No signup required.