Skip to main content

Welcome to Chronos

Chronos Logo

Chronos is a light-weight job scheduling library for Node.js that provides robust, MongoDB-backed job persistence with a modern Promise-based API.

Getting started

Let's discover Chronos in less than 5 minutes.

What is Chronos?

Chronos is a lightweight job scheduling library for Node.js, originally forked from Agenda but with a crucial difference: it's actively maintained and production-ready.

Built on MongoDB, Chronos provides reliable job scheduling with modern Promise-based APIs, making it perfect for production applications that need dependable background task processing.

Why Choose Chronos?

Feature Comparison

Since there are a few job queue solutions, here's a table comparing them to help you choose the best one for your needs:

FeatureBullBeeChronos
BackendRedisRedisMongoDB
Priorities
Concurrency
Delayed jobs
Global events
Rate Limiter
Pause/Resume
Sandboxed worker
Repeatable jobs
Atomic ops~
Persistence
UI
REST API
Central (Scalable) Queue
Supports long running jobs
Optimized forJobs / MessagesMessagesJobs
Active Maintenance⚠️⚠️

Kudos for making the comparison chart goes to Bull maintainers.

The MongoDB Advantage: If you're already using MongoDB, why add Redis complexity? Chronos gives you enterprise-grade job scheduling using your existing database infrastructure.

Key Features

  • MongoDB Backed: Reliable persistence layer using MongoDB
  • Promise Based: Modern async/await API with full TypeScript support
  • Flexible Scheduling: Cron syntax, human-readable intervals, or exact dates
  • Production Ready: Used in 100+ production projects by Runelab
  • Active Maintenance: Regular updates and community support
  • Event System: Hook into job lifecycle with events
  • Priority & Concurrency: Configure job priorities and concurrent execution

Why Choose Chronos?

🔄 Improved from Agenda

  • Updated MongoDB drivers for latest MongoDB versions
  • Enhanced performance optimizations
  • Active maintenance and ongoing development
  • Modern TypeScript support

🚀 Production Proven

  • Used in 100+ production projects
  • Reliable job persistence and recovery
  • Scalable across multiple instances
  • Comprehensive error handling

🛠 Developer Friendly

  • Clean, intuitive API
  • Extensive documentation
  • Rich event system for monitoring
  • Easy integration with existing applications

Quick Example

const mongoConnectionString = 'mongodb://127.0.0.1/scheduler';
const scheduler = new Chronos({ db: { address: mongoConnectionString } });

// Define a job
scheduler.define('send welcome email', async job => {
const { userId } = job.attrs.data;
await sendWelcomeEmail(userId);
});

// Start the scheduler
await scheduler.start();

// Schedule a job
await scheduler.now('send welcome email', { userId: '12345' });

What's Next?

Community & Support


Ready to get started? Check out our installation guide or jump straight into the quick start tutorial!