Modern scheduling
for teams that ship_
The scheduling API you'd build if you had the time.
The scheduling API you'd build if you had the time.
the problem
When you scale horizontally, your scheduled jobs multiply.
node-cron on three pods means your daily report runs three times. Your billing job charges customers three
times.
The fix usually takes weeks: distributed locks with Redis, retry logic, dead-letter queues, monitoring dashboards. Infrastructure work before you write a single line of business logic.
// This runs on every instance
cron.schedule('0 9 * * *', () => {
sendDailyReport(); // 3 instances = 3 emails
}); the solution
We guarantee exactly-once job creation and at-least-once delivery. We deliver to one instance. Retries are automatic.
import { Chronos } from '@chronos/sdk';
const chronos = new Chronos({
apiKey: process.env.CHRONOS_API_KEY
});
chronos.handle('daily-report', async (ctx) => {
await sendDailyReport();
return { sent: true };
});
chronos.start(); how it works
A recurring pattern that spawns jobs. Cron expressions, intervals, or one-off delays.
A unit of work to be delivered. Created by schedules or triggered via API.
A single delivery attempt. Retries create new executions for full visibility.
what you get
Your cron fires once, regardless of how many instances you run. No distributed locks. No race conditions.
We'll deliver your job. Automatic retries with exponential backoff.
HTTP webhooks for serverless. SDK polling for workers.
Every execution logged. Know what ran and when.
Schedule jobs in any timezone. No UTC math.
Email, Slack, or webhook when jobs fail. Get notified instantly so you can respond before users notice.
pricing
Start free. Pay as you grow.
early access
Get early access and help shape the product. Limited spots available.
> success: You're on the list. We'll be in touch.
> error: Something went wrong. Please try again.
// no spam. unsubscribe anytime.