Qoc

Automation

Run workspaces on a cron cadence so the agent picks up open issues unattended and writes results back as files and inbox items.


Scheduled workspaces let Qoc run the agent on a cron cadence — every morning, every hour, or after market close — without you having to invoke qoc run manually.

How scheduled runs work

A schedule is a TOML file in schedules/ (or a [schedule] block in desk.toml) that tells qoc when to start a run and which task or issue set to work on.

At the scheduled time the qoc daemon wakes the workspace, injects context, launches the agent, and waits for it to finish. Results — research notes, draft orders, inbox items — are written back to the workspace directory as plain files, exactly as they would be after a manual run.

If the agent produces nothing actionable it writes a brief run-summary to snapshots/. Silence is never silent: you can always inspect what the agent looked at.

Declaring a schedule in desk.toml

desk.toml — schedule block
toml
[schedule]
# Run the agent at 07:30 local time on weekdays.
cron     = "30 7 * * 1-5"
task     = "morning-review"   # matches issues/morning-review.md
timezone = "America/Chicago"

# Optional: cap how long a single run may take.
timeout_minutes = 20

Declaring a schedule as a standalone file

schedules/eod-snapshot.toml
toml
name        = "End-of-day snapshot"
cron        = "55 15 * * 1-5"
timezone    = "America/Chicago"
task        = "eod-snapshot"
enabled     = true

# Run only when the workspace has unresolved issues.
skip_if_no_open_issues = false

Inspecting run logs

Each scheduled run appends a structured entry to the workspace run log. You can tail it with qoc logs or open the file directly.

Run summaries are also written to snapshots/YYYYMMDD-HHMM-<task>.md so you have a point-in-time record of what the agent found and proposed.

Sample run log output

qoc logs --tail 30
text
2026-07-05 07:30:01  INFO  workspace=equity-desk  run=morning-review  status=started
2026-07-05 07:30:03  INFO  context injected: 4 entities, 2 house-rule files, risk config loaded
2026-07-05 07:30:03  INFO  open issues: 3  (morning-review, trim-tech, review-macro)
2026-07-05 07:31:44  INFO  research note written: research/2026-07-05-macro-update.md
2026-07-05 07:33:12  INFO  draft order written: orders/pending/20260705-msft-add.yaml
2026-07-05 07:33:15  INFO  inbox item created: inbox/20260705-trim-tech-followup.md
2026-07-05 07:33:16  INFO  snapshot written: snapshots/20260705-0733-morning-review.md
2026-07-05 07:33:16  INFO  run=morning-review  status=completed  duration=135s  outputs=3

Scheduled runs do not execute orders

Draft orders land in orders/pending/ and require your explicit approval before Qoc routes them to a venue. Automation speeds up research and proposal — it does not bypass the approval step.

Use skip_if_no_open_issues to reduce noise

Set skip_if_no_open_issues = true on housekeeping schedules that only make sense when there is something to review. The run is skipped cleanly and logged, so you know it was evaluated.