Resource Schedules
Resource Schedules stop platform resources at a set time and start them again later, to reduce costs during off-hours. A schedule controls apps, add-ons, workspaces, and self-hosted models, and is scoped to the entire platform, the resources of one user, or a resource group. Platform administrators manage schedules under Admin > FinOps > Schedules, and through STAN and the REST API.
Schedule Structure
Each schedule consists of the following components:
Scope
Schedules are scoped to one of three levels:
| Scope Level | Resources it stops and starts |
|---|---|
| Platform (Global) | Every app, add-on, workspace, and self-hosted model on the platform |
| User | Every app, add-on, workspace, and self-hosted model the selected user owns |
| Resource Group | The group's apps, add-ons, workspaces, and self-hosted models. Its other members (workflows, projects, volumes, fine-tuning jobs, ML models, and AutoML jobs) are not stopped or started |
A schedule reads its scope each time it runs, so resources added to the group, or created by the user, are included from the next run.
Schedule Configuration
| Setting | Description |
|---|---|
| Timezone | Eastern Time, Central Time, Mountain Time, Pacific Time, or UTC. Stop and start times are in this timezone |
| Stop Time | When resources stop (default 18:00) |
| Start Time | When resources start (default 08:00) |
| Days of Week | The days the schedule acts on, Mon to Sun (default Monday to Friday). The stop and the start both happen on each selected day |
In the REST API, days are numbered 1 = Monday to 7 = Sunday.
Because only the selected days count, a schedule set to Monday to Friday stops resources at the stop time on Friday and does not start them again until the start time on Monday.
Schedule Status
| Status | Description |
|---|---|
| Active | The schedule stops and starts resources at its times |
| Paused | The schedule does nothing at its times until it is resumed. Its settings are kept |
What happens at the stop and start times
Schedules are checked every minute.
- Stop: apps, add-ons, and self-hosted models in scope are scaled to zero, and workspaces are stopped the same way their owner would stop them.
- Start: every resource in scope is started again, whether or not the schedule stopped it. Apps, add-ons, and self-hosted models come back with one replica, and workspaces restart with their current settings. A workspace start goes through the same checks as its owner starting it, so it can be refused, for example by a budget that is pausing the owner's workloads.
A resource that was never deployed has nothing to stop or start, so it counts as a failure in that run.
Creating a Schedule
- Open Admin > FinOps > Schedules
- Click Create Schedule
- Configure the schedule:
Basic Information:
- Name -- Descriptive name (e.g., "Dev Environment Weeknight Shutdown")
- Description -- Optional description of the schedule's purpose
Scope Level:
- Platform (Global) -- Applies to every app, add-on, workspace, and self-hosted model
- User -- Select a specific user from the dropdown
- Resource Group -- Select an active resource group from the dropdown
Schedule:
- Timezone -- Select the timezone for stop/start times
- Stop Time -- When to stop resources (e.g., 7:00 PM)
- Start Time -- When to start resources (e.g., 8:00 AM)
- Days of Week -- Select which days the schedule applies to
Enable schedule immediately -- On (the default), the schedule is saved Active. Off, it is saved Paused.
- Click Create schedule. The schedule's page opens.
Managing Schedules
The Schedules page
The cards at the top show Total Schedules, Active, Paused, and Next Action (the soonest upcoming stop or start across active schedules).
Filter the list by searching on schedule name or description, by scope (All, Platform, User, Resource Group), and by status.
The table shows each schedule's Name, Scope, Schedule (stop and start times and days), Next Stop, Next Start, and Status, with these actions:
| Action | What it does |
|---|---|
| Details | Opens the schedule's page |
| Execute Stop Now | Stops the schedule's resources now |
| Execute Start Now | Starts the schedule's resources now |
| Pause / Resume | Pauses an active schedule, or resumes a paused one |
| View History | Shows the schedule's execution history |
| Delete | Deletes the schedule after you confirm |
Editing a schedule
Click a schedule's name (or Details) to open its page. Change any setting and click Save changes. The page also has Stop now, Start now, Pause or Resume, and Delete buttons.
Pausing and Resuming
Pause a schedule to stop it acting at its times without deleting it. Pausing does not start or stop any resources. Resume it to make it Active again.
Running a Stop or Start Now
Execute Stop Now and Execute Start Now (Stop now and Start now on the schedule's page) stop or start the schedule's resources right away, outside its times, whether the schedule is active or paused. The run is recorded in the execution history.
Execution History
View History lists the schedule's runs, newest first, both the scheduled ones and the ones run now. The last 50 runs are kept.
| Column | Description |
|---|---|
| Time | When the run happened |
| Action | stop or start |
| Resources | How many resources were stopped or started |
| Status | Success, or Failed when any resource in the run could not be stopped or started |
Keeping a Resource Running
A schedule acts on every resource in its scope; there are no per-resource exemptions. To keep a resource running, leave it out of the scope: give the schedule the Resource Group scope with a group that holds only the resources that should stop. A Platform (Global) scope covers every app, add-on, workspace, and self-hosted model on the platform, and a User scope every one the user owns.
A schedule reads its group's members each time it runs, so to keep one resource running for a while, remove it from the group and add it back later. To skip a whole schedule, pause it.
Schedule Examples
Development Environment -- Weeknight Shutdown
Stop development resources after business hours and restart them in the morning:
- Scope: Resource Group ("Development Environment")
- Timezone: Eastern Time
- Stop Time: 7:00 PM
- Start Time: 8:00 AM
- Days of Week: Monday through Friday
With this schedule, development resources run 11 hours per day on weekdays and stay stopped from Friday 7:00 PM until Monday 8:00 AM.
Staging Environment -- Extended Hours
Keep staging resources running during extended business hours but stop overnight:
- Scope: Resource Group ("Staging Environment")
- Timezone: UTC
- Stop Time: 10:00 PM
- Start Time: 6:00 AM
- Days of Week: Monday through Saturday
Staging resources run 16 hours per day from Monday to Saturday and stay stopped from Saturday 10:00 PM until Monday 6:00 AM.
User-Level Off-Hours Shutdown
Automatically stop resources for a specific developer during off-hours:
- Scope: User (specific developer)
- Timezone: Pacific Time
- Stop Time: 6:00 PM
- Start Time: 9:00 AM
- Days of Week: Monday through Friday
Platform-Wide Overnight and Weekend Shutdown
Stop every app, add-on, workspace, and self-hosted model overnight and over the weekend:
- Scope: Platform (Global)
- Stop Time: 8:00 PM
- Start Time: 7:00 AM
- Days of Week: Monday through Friday
Resources stop at 8:00 PM each weekday and start at 7:00 AM, so they stay stopped from Friday 8:00 PM until Monday 7:00 AM. A schedule uses the same stop and start times on every selected day, so it cannot stop resources at weekends only.
A Platform scope includes production resources. Use Resource Group schedules instead when some resources must keep running.
Combining Schedules with Budgets
For maximum cost control, combine resource schedules with budgets:
- Set schedules to automatically reduce costs during off-hours
- Set budgets to catch unexpected spending that exceeds schedule savings
- Configure budget thresholds based on expected post-schedule spending levels
For example, if a development environment costs $100/day at full utilization, and a schedule reduces runtime to 11 hours/day on weekdays only, expected monthly cost drops from ~$3,000 to ~$1,000. Set the budget at $1,200/month with an alert at 80% ($960) to catch any anomalies.
Best Practices
Start with Development Environments
Development resources typically have the most flexibility for scheduling. Start here for immediate savings before applying schedules to staging or shared environments.
Keep Critical Resources Out of Scope
Put only resources that may stop into a scheduled resource group. Leave out resources that must remain available:
- Long-running batch jobs that span off-hours
- Resources needed for overnight deployments or testing
- Shared services used by teams in different time zones
Set Appropriate Timezones
Choose timezones that match the working hours of the team using the resources. For globally distributed teams, consider using UTC and setting stop/start times that accommodate all time zones.
Monitor Execution History
Review execution history regularly to ensure schedules are working correctly:
- Check for failed runs that may indicate resource issues
- Verify that the correct number of resources are being affected
Coordinate with Team Schedules
Communicate schedule changes to affected teams. Unexpected resource shutdowns can disrupt work if team members are unaware of the schedule.
Resource schedules will stop running resources at the configured stop time. Ensure that no critical workloads are running during scheduled stop windows, or keep resources that must remain available out of the schedule's scope. A schedule's start brings back every resource in its scope, including ones that were stopped before its stop time.