Overmind: A better foreman

I’ve used Foreman for years to run Rails applications from a Procfile, but recently switched to Overmind. It’s largely compatible, so most existing Procfile setups work without modification:

brew install tmux overmind
overmind start

Rather than piping every process’s output into a single combined stream, Overmind runs on top of tmux: it starts a single tmux session and gives each Procfile process its own window. You can attach to the session in any terminal with:

overmind connect

Given this Procfile:

web: bin/rails server -b 0.0.0.0 -p 3001
css: bin/rails tailwindcss:watch

You get web and css windows, switchable with the usual tmux bindings. To detach without killing anything, hit your tmux prefix and then D (Ctrl+B, D).

You can also attach to a single process whenever you need to:

overmind connect web

This is particularly useful when a Rails process hits a debugger breakpoint—you get a real interactive prompt instead of a garbled shared log.

Overmind also has single-letter aliases, and I added an om shell alias to make the commands even quicker:

om s       # start
om r       # restart
om c       # connect to the session
om c web   # connect to one process
om q       # quit