Reference
Core Automation
Synced from github.com/CoWork-OS/CoWork-OS/docs
CoWork separates Workflow Intelligence from user-created automations. Background services run only inside a process that has started them. “Always-on” describes behavior while that runtime is available; it is not a hosted-uptime guarantee and does not keep a desktop computer awake.
Core Boundary
The core runtime is Workflow Intelligence:
Memoryis the source of truth.Heartbeatowns scheduling and signal readiness.Reflectionevaluates evidence internally.Dreamingcurates memory evidence into reviewable candidates.Suggestionsare the default user-facing output.
Everything else is a surrounding surface:
- main-sidebar
Automation Studiois the visual structured-flow product, but not part of the always-on cognitive core Routinesare the saved automation shell and prompt-based compatibility product, but not part of the always-on cognitive coreMission Controlis the cockpit for observing and configuring the coreTriggersare ingress and signal normalization onlyDevicesare execution routing only
Structured Studio flows and prompt-based Routines sit above several lower-level engines:
- schedule triggers compile into
Scheduled Tasks - API triggers compile into
Webhooks - event triggers compile into
Event Triggers
That makes main-sidebar Automation Studio the primary visual multi-step workflow surface while preserving Routines as the shared saved-automation shell. Neither redefines the actual core runtime boundary. See Automation Studio.
Scheduler Availability Contract
Scheduled Tasks use process-local timers. A desktop app or a CoWork daemon can host the scheduler when that process is started and the host remains available. Definitions are stored in the active CoWork profile. Selecting a workspace, worktree, device, or managed environment chooses where work executes; it does not move the scheduler or bind the saved definition to that host.
The settings view reports the current process and its status at the time of the response. That snapshot does not promise future availability and does not detect another desktop or daemon using the same profile. Until exclusive ownership is observed, do not treat the reported process as the only scheduler for that profile. A daemon also depends on its machine, service, network, and credentials remaining available.
When a scheduler resumes, an enabled saved Cron job whose next occurrence is overdue may run once. Intermediate missed slots are not replayed individually. Recurring schedules advance using their saved recurrence rule. Current interval schedule creators persist an anchor; legacy intervals without one use the time at which the next occurrence is calculated and can shift after recovery. A persisted overdue one-shot can be eligible after restart; creating or re-enabling a one-shot for a time already in the past does not calculate a next run. “Scheduled for” describes the nominal time, not a promise that the host, credentials, concurrency, or approvals will allow work to start then.
Disabling a job prevents future triggers but does not cancel a task already in flight. The scheduler continues tracking a persisted in-flight task so its outcome and delivery can be recorded. Provider credentials and permissions are not comprehensively preflighted when a schedule is saved; review the latest run error for connection problems. Pending approvals remain in the native task or workflow record and must be handled there.
Calendar schedules use their saved IANA timezone. Older schedules without a timezone retain the
scheduler process timezone; the daemon can set that with COWORK_TZ. A device execution target does
not change this clock. New or changed calendar schedules reject an invalid IANA timezone. Structured
workflow approvals stay attached to their native review record; a Cron polling timeout does not
necessarily cancel the underlying task or an external side effect. Inspect the task and run record
before retrying uncertain work. The current Cron expression calculator searches at most two years
ahead, so very sparse calendar rules outside that horizon may have no projected next run.
Task view can also create a task-sourced routine with ... > Add automation.... That flow is not a new core cognition loop; it is a task-prefilled routine authoring shortcut that can continue the existing thread by default or create new tasks on each run. Schedule triggers still compile to Scheduled Tasks, API triggers compile to Webhooks, and event triggers compile to Event Triggers, with the source task title, task ID, and cowork://tasks/<taskId> reference preserved. See Task Automations.
Use main-sidebar Automations → Library to find task-sourced and prompt-based routines alongside structured flows and standalone automation owners. Activity shows source-labelled owner history; open the linked native record when exact workflow-step detail is needed. Settings > Automations remains the advanced editor and lower-level operations surface. When a routine compiles to a cron job, Settings > Automations > Scheduled Tasks also shows aggregate run health, the latest result, delivery status, recent run history, and links to generated sessions or continued threads so lower-level scheduled work can be audited without digging through the general task list.
Ownership Model
Core automation is owned by AutomationProfile, not by raw role editing.
An automation profile is attached to a generic operator agent role and stores:
- enabled state
- cadence
- stagger offset
- dispatch cooldown
- dispatch budget
- active hours
- heartbeat profile
Cognition Path
The intended flow is:
signal or evidence -> Heartbeat -> Reflection -> Dreaming when memory drift exists -> Suggestion or memory candidate -> user response -> Memory
Downstream surfaces can create visible work, but they do not become cognition owners themselves. User response to suggestions is part of the loop: acting reinforces a workflow pattern, editing captures a correction, and snooze/dismiss/ignore lowers similar future suggestions.
Dreaming is the memory-maintenance branch of this path. About once a day (offered by idle Heartbeat pulses) or on Dream now, it tidies the memory folder: safe edits are one undoable commit, and edits to your own notes wait in Settings > Memory > Review. See Dreaming.
Core Targets
Direct reflection target ownership is intentionally narrow:
globalworkspaceagent_rolecode_workspacepull_request
Non-core concepts such as triggers, schedules, briefings, mailbox threads, and devices can still contribute evidence or execute outcomes, but they are not direct cognition targets.
Task-sourced automations follow the same rule: they can execute recurring work, continue a task thread, or produce new task evidence, but the original task, deeplink, schedule, webhook, event trigger, or worktree is not a Workflow Intelligence ownership target.
Mission Control
Mission Control is the main control surface for the core runtime. It should be read as:
- automation profile state
- heartbeat runs
- workflow-intelligence/reflection runs
- core traces
- failure clusters
- eval cases
- experiments
- learnings
It is not the owner of runtime state; it is the operating cockpit around that state. Mission Control also exposes a global runtime queue summary so operators can see executor pressure, but that queue is separate from Heartbeat state and from workspace-scoped Mission Board work.
Core Harness
Core automation now includes a learning loop built around:
- core traces
- memory extraction and distillation
- failure mining
- recurring failure clustering
- living eval cases
- gated experiments
- promoted learnings
This gives the always-on runtime a narrow improvement loop centered on operator quality, rather than a broad feature sprawl.
Approval Model
Core-created automated tasks now inherit a real autonomy policy instead of only allowUserInput: false. Workflow Intelligence is review-first by default: it creates suggestions unless explicit policy, low risk, clear scope, and trusted or repeatedly accepted patterns justify auto-create.
The default posture is:
- reviewable suggestions for new or uncertain patterns
- autonomous execution only for trusted routine operator work
- auto-approval only for common automation-safe actions such as profile-permitted command tools and trusted network/external-service operations
- hard guardrails, workspace capability denials, and explicit dangerous actions still remain enforced
Every core-created task also receives an explicit access profile. The profile is the ceiling for command tools, filesystem access, network/domain scope, sandboxing, and approvals; the core automation allowlist can reduce prompts only inside that ceiling. It cannot turn on command tools, restore a denied path, or bypass export/location consent. See Access Profiles.
See Workflow Intelligence, Heartbeat v3, Mission Control, and Permission System.