Ruby on Rails gem · Open Source & MIT Licensed

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.

Stay up to date
Rails Pulse Dashboard showing performance metrics

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.

Minimal Performance Overhead

Smart caching and efficient instrumentation ensure Rails Pulse doesn't slow down your application while collecting metrics.

Flexible Authentication

Secure your monitoring dashboard with built-in authentication support. Works seamlessly with Devise or any authentication system.

Beautiful Interface

Modern, responsive design built with CSS Zero, Stimulus, and Turbo. Dark/light mode support and CSP-compliant by default.

Quick Installation

Add Rails Pulse to your application in minutes. Simply add the gem, run the installer, and you're ready to start monitoring.

Rails Pulse interface showing request details

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:

  1. Single Database (default): Stores data in your main application database. Simple setup with zero additional configuration.
  2. 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.

Start monitoring your Rails app today