Deploy scheduled jobs.
Turn a script into reliable recurring work. Set the schedule in plain language, and we keep the result of every run.
AI agent? Start with llms.txt.
What you can automate
Scheduled jobs fit work that starts on a timer, finishes, and exits.
Backups and reports.
Run database backups and generate daily, weekly, or monthly reports.
Email and data syncs.
Send newsletters and digests or refresh data from another system.
Cleanup and expiration.
Remove old records, expire sessions, and prune logs on a reliable schedule.
From script to recurring job
Use a normal script. We handle when it runs and preserve what happened.
Step 01
Keep the script that already works.
A normal Node.js, Python, Go, or other supported script is enough. The code does not need its own scheduling library.
Step 02
Describe when it should run.
Enter a schedule in ordinary language, choose the timezone, and check the upcoming run times before saving it.
Step 03
Test it without waiting.
Run Now starts the deployed job immediately and streams its output without changing the schedule.
Step 04
Update code without resetting the schedule.
A new deployment keeps the existing timing, and the next run uses the new version.
Just write your script.
Focus on your business logic. We handle the scheduling.
Node.js scheduled job
async function run() {
console.log('nightly job started');
// Fetch data, send email, upload a backup, etc.
console.log('nightly job complete');
}
run().catch((err) => {
console.error(err);
process.exit(1);
});
Python digest job
import os
def run():
recipient = os.getenv('REPORT_EMAIL', 'team@example.com')
print(f'sending weekly digest to {recipient}')
# Query your app, send email, write a report, etc.
if __name__ == '__main__':
run()
Go cleanup task
package main
import (
"log"
"time"
)
func main() {
cutoff := time.Now().AddDate(0, 0, -30)
log.Printf("cleaning up records before %s", cutoff.Format("2006-01-02"))
// Delete old sessions, prune logs, expire trials, etc.
}
What Tokay handles
Timing you can verify.
The Service page shows the timezone and upcoming run times, so you can confirm when the job will start.
A record of every run.
Each scheduled or manual run keeps its start time, duration, result, and output.
Alerts without repeated noise.
We email you when a working job starts failing and again when it recovers, not after every failure in the same incident.
Read the scheduled jobs doc for schedules, run history, and alerts
Not sure it's a scheduled job? Check which service type fits
Stop babysitting cron.
Set the schedule. We run the jobs. The logs are there when something breaks.