Source Built from main · latest release v0.4.0

Routines

A Bot can start work on its own at a set time, daily or on chosen weekdays: where routines live, how to edit them, and the rules they run by.

Daily and weekly routines

A Bot can start work on its own at a set time, daily or on chosen weekdays. This page covers where routines live, how to edit them, and the rules they run by.

A check-back is not a routine. It is a one-off wake-up a Bot books for itself inside a conversation (the check_back tool), one minute to seven days ahead, to look again at work it handed off or is waiting on. It fires once, in the same conversation and the same job, as a note only the woken Bot reads (the conversation never shows it), never appears on the calendar, and is cancelled by Stop on the turn that booked it, by clearing or deleting the conversation, or by deleting the Bot. The app also books one for a Bot: about 10 seconds after a Bot↔Bot direct it opened goes quiet, it is woken at once in the conversation it opened the direct from, to report how it came out. It is not called back again until the direct has something new, and never for a direct opened from such a report-back that the other Bot left unanswered.

On the desktop, Tools at the bottom of the sidebar, then Routines, opens the routine calendar (it also stays on the desktop View menu; an already-open calendar focuses its existing pane tab). On a phone the same item is in the tools menu beside search, where it is still called Routine calendar and opens that page: daily and weekly routines of Bots that have any, on one week grid, read only. A Bot with no routines is left off the chart. The roster filter is one searchable dropdown — by name or duties — and choosing a row hides or shows that Bot’s blocks. Each agenda row names that Bot, with the same portrait. A block is the rule unfolded, not a record of each run, and the clock on it is the execution Mac’s local time. Changing a time still happens in the Bot’s profile; a phone cannot drag.

Open a Bot’s profile (the Bot avatar/name → profile), then Routines → Add routine. The owner is that Bot. Enter a title and task instruction, choose Daily or Weekly with one or more weekdays, and pick a time. On a wide window, the routine count sits on the Routines tab and the routines are listed straight in the page: each row ends in an on/off switch and a delete button, clicking a row opens its editor right under it, and Add routine at the end of the list opens a new one in the same place. On a phone, the routine count and Add routine sit in the Routines page header, and a routine opens as its own page without focusing a field: the time is the system time picker, the weekdays are a row of taps, and enabled is a switch. Pause and delete are not packed into the list row; delete sits at the bottom of that page, and Back returns to the routine list first. Sidebar search opens the matching routine’s Bot profile and its editor. A later search or dismissal cancels earlier pending navigation. Historical routines belonging to a deleted Bot remain retained but are marked unavailable in search. Confirmation dialogs keep keyboard focus inside, restore the invoking control on cancellation, and block dismissal while saving.

Times are civil times in the local time zone of the computer that runs Deskfolk, not the browser’s zone; there is no per-routine timezone or cron expression. That computer must be awake and its runtime available. Recovery catches up only the latest missed occurrence, never every missed run; after sleep it waits about a minute first, so the few seconds macOS wakes itself with the lid shut do not count as awake; archived Bots do not run routines. While a stop of yours covers the Bot, its direct with you or the routine's own plan, a routine that comes due does not run and does not count as run; once the stop is lifted it runs once, for the latest occurrence, like any other catch-up. Deleting or pausing a routine does not stop already-started work. Lists update live across clients and refresh after reconnecting. If another client edits a draft’s routine, load the latest version before saving; stale saves and deletes are rejected rather than overwriting it. Connection loss does not automatically retry a write—check the list after reconnecting. If a request result is unknown, Retry original request on the Routines tab resends only the original content and request ID, not later draft edits. Pending-payload warnings are not revision conflicts. After the request is no longer pending, the edited draft stays visible but cannot be submitted until you check the list and reopen the routine.

Each time a routine comes due it opens a ticket (NN-<date>) under its standing plan, and that run works in the ticket's folder (unless your direct with the Bot runs an engine with no jobs: then it is a turn with no job, no plan or ticket, its files at the workspace root; see ADR 0103). From engine level 5, what the run hands over is approved once its checks pass, with no card waiting for you to approve it or send it back: a routine runs unattended by design. When a result is wrong, say so in your direct with the Bot: you are still asked whether to send it back to rework. A check added on the flow board binds one day's ticket only, not the ones later runs open.