Control when your deployments run. ops0 supports three timing modes — run a deployment immediately, queue it for a specific date and time, or configure a recurring cron schedule for automated applies.
| Mode | Description | Use Case |
|---|---|---|
| Immediate | Runs plan + apply right now | Urgent fixes, dev environments |
| Scheduled | Runs once at a specific date and time | Maintenance windows, coordinated releases |
| Recurring | Runs on a cron schedule | Automated nightly applies, periodic drift remediation |
Navigate to the IaC project you want to deploy from the ops0 dashboard.
Click the Deploy button in the project toolbar to open the deployment dialog.
Select Immediate, Scheduled, or Recurring from the timing selector at the top of the dialog.
Review the timing summary shown in the dialog, then click Confirm Deployment to queue the deployment.
Immediate deployments run plan and apply as soon as you confirm. Use this mode for:
No additional configuration is required. The deployment enters the queue immediately and begins running within seconds.
A scheduled deployment runs plan and apply exactly once at the date and time you specify.
Use the date/time picker in the deployment dialog to set:
| Field | Description |
|---|---|
| Date | Calendar date the deployment will run |
| Time | Hour and minute (24-hour format) |
| Timezone | IANA timezone (e.g. America/New_York, UTC, Europe/London) |
The dialog previews the scheduled time converted to your browser's local timezone so you can confirm the window is correct before saving.
If the plan stage produces an error at the scheduled time:
You can change the date/time or cancel a scheduled deployment any time before it starts running. See Cancelling a Scheduled Deployment below.
Recurring deployments run on a cron schedule. ops0 evaluates the cron expression in the configured timezone and triggers plan + apply at each matching interval.
| Expression | Schedule | Example Use Case |
|---|---|---|
0 2 * * * | Daily at 2:00 AM | Nightly applies to keep infrastructure in sync |
0 0 * * 1 | Monday at midnight | Weekly releases after weekend maintenance |
0 */6 * * * | Every 6 hours | Frequent drift remediation |
0 0 1 * * | 1st of month at midnight | Monthly configuration updates |
30 4 * * 1-5 | Weekdays at 4:30 AM | Business-day-only automation |
0 8,18 * * * | 8 AM and 6 PM daily | Twice-daily environment syncs |
┌─────────── minute (0–59)
│ ┌───────── hour (0–23)
│ │ ┌─────── day of month (1–31)
│ │ │ ┌───── month (1–12)
│ │ │ │ ┌─── day of week (0–6, Sunday = 0)
│ │ │ │ │
* * * * *
Always specify a timezone for recurring schedules. Leaving the schedule in UTC is fine for infrastructure that has no time-sensitive users, but for maintenance windows aligned to business hours, select the appropriate regional timezone.
Recurring deployments always run plan, policy checks, and cost estimation before apply. If the plan shows a destroy of a critical resource, or if a policy check returns a critical violation, the apply is blocked automatically and an incident is created for manual review. The next scheduled run will proceed independently — blocked runs do not retry.
If your project has an approval policy attached, scheduling interacts with the approval workflow as follows:
| Stage | Timing |
|---|---|
| Plan | Runs at the scheduled time |
| Apply | Waits for an approver to review and approve |
| Approval window | Must be completed before the next scheduled run |
Approvers receive a notification when a scheduled deployment is waiting for review. Configure notification channels in Settings → Notifications to ensure approvers are alerted promptly for time-sensitive maintenance windows.
To cancel a scheduled deployment before it runs:
Navigate to the IaC project from the dashboard.
Click the Deployments tab to view the deployment queue and history.
Scheduled deployments show a Scheduled badge with the run time displayed.
Click the three-dot menu on the scheduled deployment row and select Cancel Deployment. Confirm in the dialog that appears.
Cancelling a deployment removes it from the queue entirely. For recurring schedules, cancelling a single pending run does not affect future runs — to stop a recurring schedule permanently, open the project settings and remove or disable the recurring schedule.
If a scheduled deployment has already started running, use the Cancel button on the live deployment view to interrupt it. Canceling mid-apply may leave resources in a partial state — run another plan to assess current status.
All scheduled and recurring deployments appear in the Deployments tab alongside manual deployments. Each entry shows:
| Field | Description |
|---|---|
| Trigger | scheduled or recurring (with the cron expression) |
| Scheduled Time | The time the deployment was configured to run |
| Started At | Actual start time (may differ slightly due to queue depth) |
| Status | success, failed, blocked, cancelled, expired |
| Duration | Total time for plan + apply |