OSS TanbouSign in with GitHub

Run Ruby/Rack applications in production with thread pools and clustered workers

About these scores

OSS scale score is an unbounded metric that log-compresses and weights Stars, Watchers, Forks, and Contributors. Discovery score is the current OSS scale score minus the score at discovery. Update pace is commits in the last 30 days, growth momentum is the OSS scale score difference within the recent observation window, and OSS health is a 0–100 rating based on available recency, Community Health, and release data.

Stars
7,915
Primary language
Ruby
License
BSD-3-Clause
Repository last updated
Oct 3, 2026
On this page

Overview

Puma is a multithreaded web server for Ruby/Rack applications. It combines a single-process thread pool with optional clustered workers and production features such as preloading, SSL, and rolling restarts. Main currently declares version 8.0.2.

Features and best fit

Based on official documentation; not hands-on tested · Content checked:

Key features

Combine a thread pool with clustered workers to serve Rack applications concurrently

Each request is handled by a thread, while cluster mode forks multiple worker processes and gives each worker its own thread pool. Production features include preload copy-on-write, SSL, rolling restarts, and UNIX or TCP socket bindings.

Sources: [2]

Puma 8 can absorb explicitly IO-bound requests beyond the normal thread-pool ceiling

Version 8.0 added env["puma.mark_as_io_bound"] and max_io_threads so mixed workloads can let IO-waiting requests exceed the normal thread-pool maximum. It also added APIs for changing thread-pool bounds at runtime.

Sources: [4]

Best fit

Fits Rails and Sinatra deployments from a single development process to multi-worker production

Puma suits Ruby backends that want the same Rack server across development and production while tuning worker count, thread count, preloading, and restart behavior. It is also the default server for Rails.

Sources: [2]

Before adoption

Size MRI threads with the GVL, database pools, fork lifecycle, and PROX-protocol security in mind

On MRI, the GVL prevents CPU-bound Ruby code from scaling linearly with additional threads. Database pools must match the worker/thread topology, and preload/fork deployments need hooks to reconnect sockets and background threads. Main declares 8.0.2 and the gemspec requires Ruby 3.0 or newer; 8.0.2 also hardens PROXY protocol v1 parsing against injection and spoofing.

Sources: [2][3][4]

Official sources

  1. [1]puma/puma — GitHub repository(2026-10-06)
  2. [2]Puma — README(2026-10-06)
  3. [3]Puma — puma.gemspec(2026-10-06)
  4. [4]Puma — History(2026-10-06)
  5. [5]Puma — BSD-3-Clause License(2026-10-06)
Supplemental curator note

Puma gives Ruby/Rack applications explicit control over thread and worker topology from development through production. On MRI, the GVL means CPU-bound code does not scale simply by adding threads, so capacity planning should also account for database connection pools and fork-time socket/background-thread reinitialization.

Try it in 3 steps

  1. 1

    Get the source

    git clone --depth 1 https://github.com/puma/puma.git
  2. 2

    Enter the repository

    cd puma
  3. 3

    Check the official steps

    Continue with the commands in the README Installation, Quick Start, or Getting Started section.

    find . -maxdepth 1 -iname 'README*' -exec sed -n '1,220p' {} \; -quit
Check the official README

Growth

Growth trends · Last 30 days

7,915 Stars

Trend data is still being collected.

Development activity

Last 90 days · weekly

Commits (last 30 days)
22
Open PRs
25

Development activity is still being collected.

Built with

Categories and tags

GitHub data

GitHub dataView detailed GitHub data

GitHub Topics

  • ruby
  • server
  • multithreading
  • rack
Stars
7,915
Forks
1,502
Watchers
172
Open issues
62
Contributors
403
Owner type
Organization
Primary language
Ruby
Repository last updated
Oct 3, 2026
Write a related article

Share a guide or use case for this OSS in Markdown. Articles are published after administrator approval.

Report incorrect information

Tell us if any listing information is incorrect or outdated.

After reading this page, do you know what to do next?