Wurk
Wurk, wurk. 🪓 Ready to work. Zug zug.
A 100% drop-in replacement for Sidekiq + Sidekiq Pro + Sidekiq Enterprise. Free forever. Faster.
# Gemfile gem "wurk"
100% drop-in
Same Redis schema, job JSON, and DSL. Third-party Sidekiq gems work unchanged.
Free
Pro + Enterprise parity in the same gem. No tiers, no license check, no flag gates.
Faster
Fork-based real parallelism. Every release benchmarked vs Sidekiq.
Everything, in one free gem
The runtime, the Pro batches, the Enterprise limiters, periodic jobs, and encryption —
the features Sidekiq splits across three paid tiers all ship in a single MIT-licensed gem.
No license keys, no per-seat math, no feature flags. Just bundle install.
Real parallelism, not just threads
Fork-based workers use every core — no GIL bottleneck. Reliable BLMOVE fetch, PID supervision, zero-downtime rolling restarts, and graceful drain are built in.
Sidekiq OSS + ProBatches that fan out & call back
Track thousands of jobs as one unit. Fire success / complete / death callbacks, nest batches arbitrarily deep, and watch live progress roll in.
Rate limiting that holds the line
Concurrent, bucket, window, leaky, and points limiters protect fragile downstreams — throttle a third-party API or a hot database without ever dropping work.
Cron that fires exactly once
Leader-elected periodic jobs mean every schedule tick runs once across your whole fleet — no duplicate sends, no missed ticks, no extra moving parts.
Encrypted arguments, rotated keys
AES-256-GCM encryption for sensitive job arguments with zero-downtime key rotation. PII and secrets never sit in Redis as plaintext.
A dashboard you'll keep open
A precompiled React SPA ships inside the gem — consumers never touch Node. Live queues, retries, busy workers, batches, limiters, cron, and metrics, with click-through job detail.
Sidekiq OSS + Pro/EntA dashboard you'll actually want open
Dark, fast, and mobile-first — a precompiled React SPA that ships inside the gem (consumers never run Node). Live queues, retries, scheduled, dead, busy workers, batches, limiters, cron, and throughput/failure metrics. Click any job for its full args, error, and backtrace.
Install
Add the gem
# Gemfile gem "wurk" # then bundle install
Mount the dashboard
# config/routes.rb mount Wurk::Engine => "/wurk"
Migrating from Sidekiq
Wurk reads and writes the same Redis schema, so a rolling deploy can run Sidekiq and Wurk against the same Redis during cutover. Delete the paid gems, add one line:
- gem "sidekiq" - gem "sidekiq-pro", source: "https://gems.contribsys.com/" - gem "sidekiq-ent", source: "https://enterprise.contribsys.com/" + gem "wurk"
bundle install && restart. That's it — see the
migration guide.