Your Rails app's performance data belongs in your database. Not theirs.
Rails Pulse is an open source Ruby on Rails gem that gives you a full performance monitoring dashboard for response times, SQL queries, and background jobs, stored in your own database with no data leaving your server.
Who is Rails Pulse for?
Rails Pulse is built for developers who want real visibility into their application's performance without the overhead of enterprise monitoring tooling.
Solo Developers & Indie Hackers
You're running a production app and want to know when something's slow, without paying hundreds a month for an APM service. Rails Pulse gives you real monitoring without the recurring cost.
Small Product Teams
You need performance visibility across your team but don't have a dedicated DevOps function. Rails Pulse installs like any other gem and runs alongside your existing app with no extra infrastructure to manage.
Developers Who Value Data Ownership
You don't want your application's performance data (request timings, query patterns, job failures) sitting on someone else's servers. With Rails Pulse, it stays in your database, subject to your retention policies.
Let's be honest.
Something in your Rails app is slow. You just don't know exactly what, why, or for how long it's been happening. And when you go looking for a monitoring solution, the options aren't great.
New Relic or Datadog
Genuinely powerful tools, but $300–$500/month for a typical Rails app. Usage-based pricing that scales with your traffic. Your performance data lives on their infrastructure, subject to their retention policies and their terms of service.
Tailing Logs
Free, but you'll spend more time writing grep commands than writing features. No trend analysis. No SQL query breakdown. No way to correlate a slow request with the queries that caused it.
Rolling Your Own
A few days of instrumentation work, a charting library, a data model, a cleanup job... it's a project in itself. And you rebuild it from scratch every time you start a new app.
There's a better option. One that runs entirely inside your own application and gives you your data back.
Four things that make Rails Pulse different.
Open Source
Rails Pulse is MIT licensed. Add it to your Gemfile and it works with no account required, no API keys, and no external services to configure.
Your Data Stays on Your Server
Every request, every SQL query, every job run, stored in your own database. Nothing is sent to an external service. No API keys. No outbound connections. Your performance data is as private as the rest of your application.
Direct Access to Your Data
Because Rails Pulse stores data in your database, you can query it directly with SQL. Write custom reports, join against your own tables, export to your BI tool, or build alerts on top. No API rate limits. No data export fees.
Built to Be Extended
Tag routes, requests, queries, and jobs with custom labels. Write rake tasks against the Rails Pulse models. It's a Rails Engine built on standard Ruby and ActiveRecord all the way down. Extend it like any other part of your app.
Everything you need to understand your app's performance.
From slow endpoints to N+1 queries, background job failures to route-level trends. Rails Pulse gives you the full picture in one dashboard.
SQL Query Performance
Track SQL query performance with slow query identification, P95/P99 percentiles, and configurable SLO thresholds. Quickly identify database bottlenecks and optimize your most expensive queries.
Route-Specific Metrics
Get granular insights with route-specific metrics and configurable performance thresholds. See exactly which endpoints need optimization.
Background Job Monitoring
Track job execution time, failure rates, and retry counts across all ActiveJob adapters including Sidekiq, Solid Queue, Good Job, and more.
Zero Configuration
Start collecting performance data immediately after installation with sensible defaults. No complex setup required.
Smart Data Cleanup
Automatic data archiving prevents database bloat while preserving essential insights. Configure time-based and count-based retention policies.
What you can see.
A full dashboard for every layer of your Rails stack: requests, queries, routes, and background jobs, all in one place.
Dashboard
Response time trends, request volume, week-over-week comparisons, and top slow endpoints at a glance.
SQL Query Performance
Every SQL query tracked and ranked by execution time, with P95/P99 percentiles and SLO threshold indicators.
Route Metrics
Per-endpoint performance data with configurable slow/critical thresholds. See exactly which routes need attention.
Background Jobs
Job execution times, failure rates, retry counts, and queue breakdowns across all your ActiveJob adapters.
Request Detail
Drill into any request to see every SQL query it triggered, execution time, route, response code, and a full operation timeline. Instantly understand what a slow request was actually doing.
Query Detail
See the full history of any SQL query — execution frequency, average and P95/P99 times, which requests triggered it, and a zoomable performance chart over time.
Works with your stack.
Rails Pulse integrates with the tools and databases you're already using.
Databases
SQLite, PostgreSQL, and MySQL. Store Rails Pulse data in your main application database or a dedicated separate database.
Job Adapters
Sidekiq, Solid Queue, Good Job, Delayed Job, Resque, and any other ActiveJob adapter, all supported out of the box.
Rails & Ruby
Rails 7.2+ and Ruby 3.0+. Tested across Rails 7.2, 8.0, and 8.1 on each release.
Built for Developers
Rails Pulse is designed with developer experience in mind. Everything you need to monitor, debug, and optimize your Rails application.
Quick Installation
Add Rails Pulse to your application in minutes. Simply add the gem, run the installer, and you're ready to start monitoring.
Get Started in Minutes
Add Rails Pulse to your Gemfile, run the installer, and mount the engine. That's it. Start monitoring your application's performance immediately with zero configuration.
# Gemfile
gem 'rails_pulse'
# Install
$ bundle install
$ rails generate rails_pulse:install
$ rails db:migrate
# config/routes.rb
Rails.application.routes.draw do
mount RailsPulse::Engine => "/rails_pulse"
end Frequently Asked Questions
Everything you need to know about Rails Pulse
How much does Rails Pulse cost?
Rails Pulse is open source and MIT licensed. Add it to your Gemfile and start using it with no account, no API keys, and no subscription required.
Where does my performance data get stored?
All data is stored in your own database, the same one your app uses, or a separate dedicated database if you prefer. Nothing is sent to any external service. Rails Pulse makes no outbound network connections. Your data is as private as the rest of your application.
Can I query the Rails Pulse data directly?
Yes. Because Rails Pulse stores data in your own database using standard ActiveRecord models, you can query it with SQL, join it against your own tables, export it to a BI tool, or build custom reports and alerts on top. You're not locked into the dashboard UI. The data is just tables in your database.
What Rails and Ruby versions are supported?
Rails Pulse supports Rails 7.2+ and Ruby 3.0+. It's built as a Rails Engine and follows Rails best practices, ensuring compatibility with the latest Rails versions.
Does Rails Pulse impact my application's performance?
Rails Pulse adds approximately 5–6ms of overhead per request, primarily from persisting tracking data to the database. For typical requests in the 100–500ms range, that's 1–5% overhead. For high-traffic applications you can reduce this further by filtering low-value routes (health checks, assets) or using a separate database.
Can I use a separate database for Rails Pulse?
Yes. Rails Pulse supports two database configurations:
- Single Database (default): Stores data in your main application database. Simple setup with zero additional configuration.
- Separate Database: Use a dedicated database for complete isolation. Supports SQLite, PostgreSQL, and MySQL.
Install with the --database=separate flag to use a separate database.
How does data cleanup work?
Rails Pulse offers automatic data archiving with two strategies: time-based cleanup (delete records older than a configured period) and count-based cleanup (enforce maximum record limits per table). Schedule RailsPulse::CleanupJob to run daily, or trigger it manually with rails rails_pulse:cleanup.
How do I secure the Rails Pulse dashboard?
Configure authentication in the Rails Pulse initializer. Define your own authentication logic. It works with Devise, custom authentication, or any other approach. Unauthorised requests are redirected wherever you specify.
From the blog
Practical writing on Rails performance, monitoring, and building in public.