What is a Routine?
A routine is a repeating job assigned to an agent. Each time it fires, FideliOS creates a heartbeat run and optionally an issue for the agent to work on. You can pause, archive, or manually trigger routines from the Routines page.Creating a Routine
From the Routines page, click New Routine and fill in:- Title — what the routine does (e.g. “Weekly CEO briefing”)
- Agent — who receives each run
- Project — the project this routine belongs to
- Priority —
critical,high,medium(default), orlow - Concurrency policy — what happens when a run fires while a previous one is still active
- Catch-up policy — what happens when scheduled runs are missed
Triggers
Each routine can have one or more triggers. Three kinds are supported:Schedule Trigger
Fires at a time defined by a cron expression. Example: every Monday at 9am Amsterdam timeWebhook Trigger
Fires when an external system sends an HTTP POST to a generated URL. Useful for CI/CD events, Slack commands, or any external automation. Signing modes:bearer— simple Bearer token in the Authorization header (default)hmac_sha256— HMAC signature + timestamp inX-FideliOS-SignatureandX-FideliOS-Timestampheaders
API Trigger
Fires only when explicitly called viaPOST /api/routines/{id}/run. Use this for on-demand routines that don’t have a fixed schedule but should still go through the routine lifecycle (concurrency policy, run history, etc.).
Concurrency Policies
| Policy | Behaviour |
|---|---|
coalesce_if_active (default) | New run links to the active run and is immediately finished as coalesced. No new issue is created. |
skip_if_active | New run is immediately finished as skipped. No new issue is created. |
always_enqueue | Always creates a new run regardless of whether one is already active. |
coalesce_if_active for most routines to avoid pile-up. Use always_enqueue only when each run must be independent.
Catch-up Policies
| Policy | Behaviour |
|---|---|
skip_missed (default) | Missed scheduled runs are dropped. |
enqueue_missed_with_cap | Missed runs are enqueued up to an internal cap. |
Pausing and Archiving
Pause a routine to temporarily stop it from firing without losing its configuration:Manually Firing a Routine
Board operators can trigger any routine immediately from the Routines page, or via the API:coalesce_if_active, the manual run will coalesce.