Unified backend for storage and optionally notifications
OptionaldefaultDefault number of concurrent jobs per job type
OptionaldefaultDefault lock lifetime in milliseconds
OptionaldefaultDefault max locked jobs per job type
OptionalforkedWhether this is a forked worker instance
OptionalforkFork helper configuration for sandboxed workers
OptionallockGlobal max locked jobs
OptionalloggingEnable persistent job event logging (stored in the backend's database).
Disabled by default. When enabled, all job lifecycle events (start, success,
fail, complete, retry, etc.) are persisted and can be queried via
agenda.getLogs() or viewed in agendash.
Options:
true — use the backend's built-in logger, all jobs are loggedfalse / omitted — no logging (default)JobLogger — use a custom logger instance, all jobs are logged{ logger?: JobLogger, default?: boolean } — fine-grained control:
logger: custom JobLogger (omit to use backend's built-in logger)default: whether job definitions are logged by default (true = all logged,
false = only jobs with logging: true in their definition are logged).
Defaults to true.Per-job definitions can override the default via define('job', fn, { logging: false }).
// Enable — log all jobs using backend's logger
const agenda = new Agenda({ backend, logging: true });
// Enable — opt-in per job (logger configured, but off by default)
const agenda = new Agenda({ backend, logging: { default: false } });
agenda.define('important', handler, { logging: true }); // logged
agenda.define('noisy', handler); // NOT logged
// Enable — custom logger (e.g., log to Postgres while using Mongo for storage)
const agenda = new Agenda({ backend, logging: myPostgresJobLogger });
// Enable — custom logger + opt-in per job
const agenda = new Agenda({
backend,
logging: { logger: myPostgresJobLogger, default: false }
});
// Query logs
const { entries } = await agenda.getLogs({ jobName: 'myJob', limit: 100 });
OptionalmaxMaximum number of concurrent jobs globally
OptionalnameName to identify this agenda instance
OptionalnotificationOverride notification channel from backend. Use this to mix storage from one system with notifications from another. e.g., MongoDB storage + Redis notifications
OptionalprocessHow often to poll for new jobs (string like '5 seconds' or milliseconds)
OptionalremoveAutomatically remove one-time jobs from database after successful completion
Agenda configuration options