Skip to content
Run Sidekiq/Resque workers for multiple apps only when there is work to be done.
Rust Makefile
Branch: master
Clone or download

Latest commit

Latest commit d7be8d4 Jun 1, 2019


Type Name Latest commit message Commit time
Failed to load latest commit information.
src Check for scheduled jobs in sidekiq too May 31, 2019
.gitignore Initial commit Apr 16, 2017 Release 1.4.0 Jun 1, 2019
Cargo.lock Release 1.4.0 Jun 1, 2019
Cargo.toml Release 1.4.0 Jun 1, 2019
Makefile Add some makefile tasks Jun 13, 2018 Release 1.0.0 May 19, 2017


Run Sidekiq/Resque workers for multiple apps only when there is work to be done.

You can use it in place of Foreman if you need to manage several instances of Sidekiq and/or Resque and don't necessarily need them all to run at once.


We have a dozen apps all running Sidekiq (and some running Resque). In development, I don't need/want all of them running at once, so I built this.

This might be super useful if you are using Vagrant or VM for development and want to limit its RAM usage.

This is probably not useful in a production environment. But, let me know if you think it is!


  • Watches Redis and only starts Sidekiq/Resque processes when there is work to be done
  • Spins down inactive Sidekiq/Resque processes
  • Sends TERM signal to child processes so they shut down properly
  • Saves memory


If you're on Mac, you can download the binary here.

For other platforms, you'll need to build with Rust:

curl -sSf | sh
cargo build --release

Configure and Run

Froman is configured with a froman.yml file like this:

command_template: 'bash -lc "%s"'
    path: ../check-ins
      namespace: check-ins-sidekiq-development
      command: bundle exec sidekiq
    path: ../services
      namespace: planning_center_development
      command: bundle exec resque-pool --environment development
      namespace: services-development.sidekiq
      command: bundle exec sidekiq

namespace is the Redis namespace to monitor for jobs.

Run Froman:



Copyright Tim Morgan, Licensed MIT.

You can’t perform that action at this time.