---
name: "puma"
section: "1"
platform: "linux"
package: "puma"
version: "6.6.0-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/puma"
---

# puma(1)

fast, concurrent web server for ruby and rack

## NAME

puma - fast, concurrent web server for ruby and rack

## USAGE

**puma \[options...\]** *\[rackup file\]*

**puma \[-h \| --help \| -V \| --version\]**

## OPTIONS

The following options are available:

- **-b, --bind** *URI*

  URI to bind to (tcp://, unix://, ssl://).

- **-C, --config** *PATH*

  Load given path as a config file.

- **--control** *URL*

  DEPRECATED alias for **--control-url**.

- **--control-token** *TOKEN*

  The *TOKEN* to use as authentication for the control server.

- **--control-url** *URL*

  The bind *URL* to use for the control server and app. Use *auto* to use a temp unix server. This requires to use a **--control-token**, which needs to be given with every request to the control server (*token=foo*).

- **-d, --daemon**

  Demonize the server into the background.

- **--debug**

  Show low level debugging information.

- **--dir** *DIR*

  Change to given directory before starting.

- **-e, --environment** *ENVIRONMENT*

  The environment to run the Rack app on. Default *development*.

- **-I, --include** *PATH*

  Specify **$LOAD\_PATH** directories.

- **-p, --port** *PORT*

  Define the TCP port to bind to. Use **-b** for more advanced options.

- **--pidfile** *PATH*

  Use the given path as PID file.

- **--preload**

  Preload the application. This loads all the application code prior to forking. Preloading reduces total memory usage of an application and is only available in cluster mode.

- **--prune-bundler**

  Prune out the bundler env if possible.

- **-q, --quiet**

  Do not log requests internally. Default: *true*.

- **-v, --log-requests**

  Log requests as they occur.

- **-R, --restart-cmd** *CMD*

  The **puma** command to run during a hot restart. Default: *inferred*.

- **-S, --state** *PATH*

  Where to store the state details.

- **-t, --threads** *INT*

  Min:max threads to use. Puma will automatically scale the number of threads, from the minimum until it caps out at the maximum, based on how much traffic is present. Default: *0:16*.

- **--tcp-mode**

  Run the app in raw TCP mode instead of HTTP mode.

- **--early-hints**

  Enable early hints support.

- **-w, --workers** *COUNT*

  Activate cluster mode and define number of worker processes to create. In this mode workers are forked from a master process. Each child process still has its own thread pool and the **-t** setting is per worker.

- **--tag** *NAME*

  Additional text to display in process listing.

- **--redirect-stdout** *FILE*

  Redirect **STDOUT** to a specific file.

- **--redirect-stderr** *FILE*

  Redirect **STDERR** to a specific file.

- **--\[no-\]redirect-append**

  Append to redirected files.

- **-h, --help**

  Show help.

- **-V, --version**

  Print the version information.

## EXAMPLES

The following examples show how to bind TCP or sockets:

Bind Puma to a socket with the -b (or --bind) flag:

**puma -b tcp://127.0.0.1:9292**

To use a UNIX Socket instead of TCP:

**puma -b unix:///var/run/puma.sock**

To change the permissions of the UNIX socket, add a umask parameter:

**puma -b 'unix:///var/run/puma.sock?umask=0111'**

In need of a bit of security use SSL sockets:

**puma -b 'ssl://127.0.0.1:9292?key=path\_to\_key&cert=path\_to\_cert'**

The following example show how to Create a control server and use [**pumactl**(1)](/pumactl/1.md) to interact with the control server to restart **puma**.

**puma --control-url tcp://127.0.0.1:9293 --control-token foo**\
 **pumactl --control-url 'tcp://127.0.0.1:9293' --control-token foo restart**

## CONFIGURATION FILE

**puma** will look for a configuration file at *config/puma.rb*. If an environment is specified, either via the **-e** and **--environment** flags, or through the *RACK\_ENV* or the *RAILS\_ENV* environment variables, it looks for configuration at *config/puma/\<environment\_name\>.rb*.

The **-C** flag allows one to pass on a custom configuration location. If the value specified is a dash (*-*) **puma** won't look for any configuration file:

**puma -C "-"**

## SEE ALSO

There is extensive documentation at \<https://puma.io/puma/\> and \<https://github.com/puma/puma\>.

## AUTHOR

This manual page was written by **Daniel Leidert** \<dleidert@debian.org\>, for the Debian GNU/Linux system (but may be used by others).
