Scheduler
Rostyman includes a built-in local job scheduler that runs API requests and collections on a timed schedule — entirely offline, no cloud required. Schedules run locally in the Electron main process and continue to execute even when the app is minimized to the system tray.
Opening the Scheduler
- Click the Clock icon in the left sidebar
- Or use + New Tab → Scheduler
This opens the singleton Scheduler tab.
Job List Table
Each scheduled job appears as a row in the table. Columns:
| Column | Description |
|---|---|
| (expand) | Chevron to expand/collapse the job's run history inline |
| On/Off | Toggle switch — enable or disable the job without deleting it |
| Name | The job's display name |
| Target | Type badge (REQUEST / COLLECTION / FOLDER) + target name and method |
| Schedule | Cron expression in a code badge, with a human-readable description below |
| Last Run | Relative time since last execution (e.g. "5m ago", "Never") |
| Status | Colored status pill for the most recent run |
| Actions | Run Now, Edit (pencil), Delete (trash) buttons |
Status Pills
| Status | Color | Meaning |
|---|---|---|
| Success | Green | Last run completed without errors |
| Failed | Red | Last run returned an error |
| Running | Blue (spinning) | Currently executing |
| Timeout | Amber | Last run exceeded the timeout threshold |
| Never Run | Gray | Job created but not yet executed |
Creating a Job
Click New Job (or the + button) to open the job dialog. All fields are required unless noted.
Job Name
A descriptive label shown in the table and in desktop notifications. Max 100 characters.
Target Type
Select what to run when the job fires:
| Type | Description |
|---|---|
| Request | Runs a single saved HTTP request |
| Collection | Runs all requests in a collection (top-level and all folders) |
| Folder | Runs all requests inside a specific folder |
After selecting the type, a tree picker lets you browse and select the target from your workspace.
Environment
Optional. If the target belongs to a collection that has environments, a dropdown appears letting you select which environment's variables to use during execution. Leave blank to use the collection's currently active environment.
Schedule
Choose from a preset or enter a custom cron expression.
Presets:
| Preset | Cron Expression | Runs |
|---|---|---|
| Every 1 minute | * * * * * | Every 60 seconds |
| Every 5 minutes | */5 * * * * | :00, :05, :10, … |
| Every 15 minutes | */15 * * * * | :00, :15, :30, :45 |
| Every 30 minutes | */30 * * * * | :00, :30 |
| Every 1 hour | 0 * * * * | Top of each hour |
| Every 6 hours | 0 */6 * * * | 00:00, 06:00, 12:00, 18:00 |
| Every 12 hours | 0 */12 * * * | 00:00, 12:00 |
| Every 24 hours / Daily midnight | 0 0 * * * | 00:00 daily |
| Weekly on Sunday | 0 0 * * 0 | Sunday 00:00 |
| Custom | — | Enter any valid 5-field expression |
When Custom is selected, a text field appears. A human-readable preview of the expression is shown below the input for verification.
Cron syntax reference:
┌───────── minute (0–59)
│ ┌─────── hour (0–23)
│ │ ┌───── day of month (1–31)
│ │ │ ┌─── month (1–12)
│ │ │ │ ┌─ day of week (0–7, 0 and 7 = Sunday)
* * * * *
Common examples:
*/5 * * * * → Every 5 minutes
0 9 * * 1-5 → Weekdays at 9 AM
0 0 1 * * → First day of each month at midnight
30 18 * * 5 → Fridays at 6:30 PM
Timezone
Enter a timezone name (e.g. UTC, America/New_York, Asia/Kolkata). An autocomplete datalist suggests common timezones. All schedules default to UTC if left blank.
Advanced Options
| Field | Default | Description |
|---|---|---|
| Max Retries | 0 | Number of automatic retries after failure (0–5) |
| Timeout | 30000 ms | Maximum execution time in milliseconds before marking as timed out |
Enable Immediately
A toggle at the bottom of the dialog. When on, the job is enabled as soon as you save it. Turn it off to save the job in a disabled state and enable it later.
Run History
Click any row (or the expand chevron) to reveal the inline run history table for that job. Up to 20 recent runs are shown.
Run History Columns
| Column | Description |
|---|---|
| Started | Full timestamp of when the run began |
| Duration | Execution time (e.g. "245ms", "2.1s") |
| Status | Success / Failed / Timeout / Running pill |
| Error | Error message if the run failed, otherwise "—" |
| (delete) | Remove this individual run from the log |
A Refresh button reloads the run list. A Clear All button removes all run history for the job (the job itself is preserved).
Actions
Run Now
Click the Run button (play icon) in the Actions column to execute the job immediately, regardless of its schedule. The row status updates in real time.
Edit
Click the pencil icon to open the job dialog pre-filled with the current settings. All fields are editable.
Delete
Click the trash icon to soft-delete the job to the Trash. Deleted jobs can be recovered from the Trash tab. The job stops executing immediately.
Desktop Notifications
When a scheduled job completes, Rostyman sends a system desktop notification showing:
- Job name
- Result status (Success / Failed)
- Environment used (if any)
Notifications appear even when Rostyman is minimized to the tray. They can be disabled in Settings → General → Notifications.
How It Works
The scheduler uses node-cron in the Electron main process. Jobs run locally on your machine — no server or internet connection is needed. The app must be running (even minimized to tray) for scheduled jobs to execute.
If the app is closed when a job was scheduled to fire, that execution is skipped. The job resumes on the next scheduled time after the app restarts.
Tips
- Use Every 5 minutes with a health-check request to monitor API uptime
- Schedule full collection runs nightly with the Daily midnight preset to catch regressions
- Set Max Retries to 2 or 3 for flaky endpoints that occasionally time out
- Use the Folder target type to schedule a specific subset of requests from a large collection
- Expand the run history inline to spot patterns in intermittent failures without leaving the scheduler