PACKAGE · QUEUE

agenda

Light weight job scheduler for Node.js

WEEKLY DOWNLOADS 84.5K
STARS 9.7K
FORKS 841
OPEN ISSUES 11
GZIP SIZE 78.6 kB
UNPACKED SIZE 297.2 kB
LAST UPDATED 3mo ago
DOWNLOAD TRENDS

agenda downloads — last 12 months

Download trends for agenda1 download series from Jun 2025 to May 2026. Use left and right arrow keys to inspect monthly values.0201.8K403.7K605.5K807.4KJun 2025SepDecMarMay 2026
agenda
ABOUT AGENDA

Agenda is a lightweight job scheduler for Node.js built to run on top of MongoDB. It addresses the common need for scheduling recurring tasks, one-off jobs, and complex job queues within an application. By leveraging MongoDB as its backend, Agenda provides persistence for job definitions and execution status, ensuring that tasks are not lost even if the Node.js application restarts.

Its primary design goal is to offer a robust yet simple scheduling solution that integrates seamlessly into existing Node.js applications, particularly those already using MongoDB. Agenda is ideal for developers who need a reliable mechanism for background processing, automated notifications, or time-based operations without adding significant complexity to their stack. The library focuses on core scheduling features, making it accessible and understandable for a broad range of Node.js developers.

The library exposes a clear API for defining jobs, specifying schedules, and managing job execution. Key patterns include defining jobs by name, using cron syntax or human-readable intervals for recurrence, and setting specific job priorities. Agenda also offers mechanisms like `once()` for one-time jobs and `repeatEvery()` for recurring tasks, alongside event emitters for monitoring job lifecycles and handling errors. The use of MongoDB’s atomic operations is central to its reliable job processing.

Agenda integrates well into typical Node.js architectures, especially those employing the MEAN or MERN stacks due to its reliance on MongoDB. It can be used with frameworks like Express.js or NestJS to power background tasks initiated by web requests or scheduled independently. Its job processing capabilities also make it suitable for scenarios where tasks need to be queued and executed asynchronously, fitting into workflows that might otherwise require a dedicated message queue system.

With a relatively modest unpacked size of 297.2 kB and a gzipped bundle size of 78.6 kB, Agenda introduces minimal overhead into your application. Its maturity is reflected in its 9.7K GitHub stars and 837 forks, indicating a well-established and actively used library. The low number of open issues (3) suggests a stable and well-maintained project, making it a dependable choice for production environments.

While powerful, Agenda's reliance on MongoDB means it is not suitable for applications that do not use or cannot integrate with MongoDB. For extremely high-throughput queuing needs where MongoDB might become a bottleneck, alternative solutions designed specifically for massive scale and throughput might be more appropriate. Developers should also be aware that managing MongoDB itself adds operational overhead compared to in-memory schedulers.

WHEN TO USE
  • When you need to schedule recurring tasks like daily reports or hourly data aggregation using cron syntax or intervals.
  • When orchestrating one-off jobs that must execute at a specific future datetime, such as sending a delayed email.
  • When your application already uses MongoDB and you want to leverage it for persistent job scheduling.
  • When building background job processing systems that require reliable execution and status tracking.
  • When integrating automated tasks into web applications built with frameworks like Express.js or NestJS.
  • When needing to manage job concurrency and ensure specific jobs are processed sequentially or in parallel.
WHEN NOT TO USE
  • If you require a scheduler that does not depend on MongoDB, consider lighter in-memory scheduling libraries or external cron services.
  • If your task scheduling needs are extremely simple and transient, and do not require persistence, a basic `setTimeout` or `setInterval` might suffice with less setup.
  • When dealing with massive job throughput that could potentially overwhelm your MongoDB instance, investigate purpose-built distributed queuing systems.
  • If you are building a serverless function that needs to trigger on a schedule, look into cloud provider specific scheduled events (e.g., AWS EventBridge).
  • When you need to schedule jobs that depend heavily on other services and require complex inter-service communication, a dedicated workflow orchestration tool might be more suitable.

CORRECTIONS

Spot wrong data here?

A short note helps us fix it.

Anonymous · No account · No email back

COMPARISONS 2
agenda vs bullmq ★ 9.0K · 3.2M/wk agenda vs bee-queue ★ 4.0K · 22.2K/wk