Most web apps eventually grow a few "things that need to run on a schedule" — a daily summary email, a cleanup of expired sessions, a weekly invoice generator. Doing this on a managed PaaS shouldn't require setting up a separate worker fleet. Launchverse's project-scoped cron scheduler runs commands directly inside your application's container at any cron schedule you specify.
Where to find it
Two places:
- Project → Overview has a Cron Jobs section that shows everything scheduled for that single project.
- Dashboard → Cron Jobs shows everything across every project on your team — useful for quick audits.
Both views are powered by the same data; edits and deletes propagate across the engine.
Schedule a job
In either view click "Schedule job" and fill in:
- Name — for your own reference; the engine doesn't care.
- Cron expression — standard 5-field cron syntax.
0 0 * * *runs daily at midnight UTC.*/15 * * * *runs every 15 minutes. - Command — runs from the application's working directory inside the container. Anything on
PATHor runnable vianode,php,python, etc. is fair game.
Click Save. The job is scheduled on the engine within a second; the next time the cron expression matches, your command runs.
Cron syntax cheatsheet
* * * * *
| | | | |
| | | | +----- day of week (0 - 6, Sunday = 0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- minute (0 - 59)
Common patterns:
0 0 * * *— every day at midnight0 9 * * 1-5— every weekday at 09:00*/30 * * * *— every 30 minutes0 */6 * * *— every 6 hours0 4 * * 0— every Sunday at 04:00 (good for weekly backups)
Editing a job
You can change the name, cron expression, or command on any existing job — click the pencil icon, edit, save. The change propagates to the engine immediately; the next match of the new schedule is when it takes effect.
You cannot move a job between projects: cron tasks are bound to the application container. If you need to move one, delete it from the old project and create it on the new one.
Pitfalls
- Time zone. The scheduler uses UTC. If you're in Lagos (UTC+1),
0 0 * * *fires at 01:00 your time, not midnight. Compensate in the cron expression. - Long-running commands. Cron tasks share resources with the application container. A 4-hour data export job will compete with your live web traffic. For heavy work, run it on a separate "worker" project.
- Output. Cron tasks log to the application's log stream. If a job is silently failing, check the Logs tab — you'll see the timestamped output there.
- No retries. If a cron task fails, Launchverse does not retry it. Build retry logic into your script if you need it (e.g.
wget --tries=5 ... || sentry-cli send-event).
Doing it from code
You don't need to use cron for everything. Many web frameworks have built-in scheduler libraries (Laravel's task scheduler, Django's django-cron, Node's node-cron) that you can run inside your application process. Use those if you want git-versioned schedules; use Launchverse cron if you want platform-managed schedules that survive deploys.