Skip to content
Simple, efficient job processing for Crystal
Crystal CSS HTML JavaScript Other
Branch: master
Clone or download


Type Name Latest commit message Commit time
Failed to load latest commit information.
bench fix deprecations Dec 31, 2019
examples Update to 0.25.0 compatibility Jun 17, 2018
spec convert key to string before passing it to sadd Dec 31, 2019
src cast key to string to be handled correctly by the namespaced method Dec 31, 2019
.gitignore Extract version Apr 21, 2017
.travis.yml update to build Jun 17, 2018 bump May 9, 2017
LICENSE Initial commit May 16, 2016
Makefile issue fixed upstream May 9, 2017 Update benchmark results Jul 5, 2019
shard.yml fix deprecations Dec 31, 2019

Build Status Dependency Status devDependency Status

Sidekiq is a well-regarded background job framework for Ruby. Now we're bringing the awesomeness to Crystal, a Ruby-like language. Why? To give you options. Ruby is friendly and flexible but not terribly fast. Crystal is statically-typed, compiled and very fast but retains a similar syntax to Ruby.

Rough, initial benchmarks on macOS 10.14.5:

Runtime RSS Time Throughput
MRI 2.6.3 55MB 11.1 9,000 jobs/sec
MRI/hiredis 62MB 8.3 12,000 jobs/sec
Crystal 0.29.0 15MB 1.4 69,200 jobs/sec

If you have jobs which are CPU-intensive or require very high throughput, Crystal is an excellent alternative to native Ruby extensions. It compiles to a single executable so deployment is much easier than Ruby.

Getting Started

Please see the wiki for in-depth documentation and how to get started using in your own app.


If you use and like this project, please let me know. If demand warrants, I may port Sidekiq Pro and Enterprise functionality to Crystal for sale.

Help wanted

See the issues for chores and other ideas to help.

Things that do not exist and probably won't ever:

  • Support for daemonization, pidfiles, log rotation - use Upstart/Systemd
  • Delayed extensions - too dynamic for Crystal

The Ruby and Crystal versions of Sidekiq must remain data compatible in Redis. Both versions should be able to create and process jobs from each other. Their APIs are not and should not be identical but rather idiomatic to their respective languages.


Mike Perham,, @mperham / @sidekiq

You can’t perform that action at this time.