Auto Mode
Turn Auto Mode on at Settings → Auto Mode, create goals and tasks on the Goals & Tasks page, attach a schedule on the Scheduler page, and read the diary from the Scheduler logs modal.
What Auto Mode is for
Requires Auto Mode enabled
Auto Mode is off by default. Turn it on at Settings → Auto Mode with the Enable Auto Mode toggle before creating goals or schedules. Until it is on, schedules do not fire and the bot does not work on goals in the background.
Auto Mode is for work you want the bot to do on its own, on a schedule. You give it a goal, the bot (or you) break the goal into tasks, you attach a cron schedule, and the bot picks up work every time the schedule fires. You read the diary afterwards to see what it did.
It is the right tool when the work repeats — a daily review, a weekly digest, an hourly health check — and you want it to keep going without having to start each run yourself.
The four pieces
Goal
The thing you want done. Has a title, an optional details/prompt, an optional reflection tier, and the list of tasks below it. A goal is ACTIVE, PAUSED, COMPLETED, or CANCELLED; only ACTIVE goals progress when their schedule fires.
Container
Task
One step toward the goal. Carries the instruction the bot will follow when it picks the task up. Tasks can also stand alone without a parent goal — useful for one-off scheduled jobs.
Unit of work
Diary
What happened on each run, written by the bot itself. Five entry kinds: THOUGHT (reasoning), PROGRESS (step done), OBSERVATION (something noticed), DECISION (a choice with reason), ERROR (a failure).
Audit
Schedule
A cron expression — or a simple frequency + time — attached to a goal or a task. Every time it fires, the bot runs the goal or task. A schedule carries its own enabled flag, repeat limit, and report channel.
Trigger
What each task status means
Each task has a status. The bot moves it from one status to the next as it works through the task; you can also move it by hand from the dashboard.
- PENDING— not started. The next fire of the goal's or task's schedule will pick it up.
- IN_PROGRESS — the bot is working on it right now.
- COMPLETED — the bot finished successfully. On completion the bot writes a
PROGRESSentry to the diary and moves on to the next task. - FAILED — the bot hit an error it could not work around. If reflections are enabled and the failure streak hits the configured threshold, the bot runs a reflection turn to recover.
- SKIPPED — the task no longer makes sense (a parent failed, the situation changed, the task was deliberately skipped).
Re-running a completed task from the dashboard resets it to PENDING; the next fire of its schedule picks it up and moves it to IN_PROGRESS. Diary entries of all five types — THOUGHT, PROGRESS, OBSERVATION, DECISION, ERROR — are written by the bot during task execution; only the PROGRESS on completion is automatic.
Turning Auto Mode on
Open Settings → Auto Mode in the dashboard. The card on this page is the primary place to configure Auto Mode — leave the defaults alone for the first run, then revisit as you learn what you need.
Enable Auto Mode
The master switch. Off by default. When off, schedules do not fire and goals do not progress. Turn this on first.
Required
Task Time Limit
Maximum time a single autonomous task can run before the runtime stops it. Default 10 minutes. Raise it for heavy research tasks, lower it to keep runaway loops cheap.
Default: 10 min
Max Goals
Maximum number of concurrent goals the bot will work on. Default 3. Prevents the queue from ballooning when many schedules fire at once.
Default: 3
Model Tier
Which tier to use for autonomous task runs. “Default routing” lets the model router pick; set an explicit tier to pin all auto-mode runs to one model.
Default: routing
Enable reflections
Run a reflection turn after repeated failures so the bot can analyze what went wrong and adjust. Configure the reflection tier and the failure threshold in the same card. Default: on, threshold 2.
Default: on
Auto-start on startup
Start Auto Mode automatically when the bot process boots. Default on — keep it on for production so schedules resume after a restart without manual intervention.
Default: on
Notify milestones
Send a notification to the goal’s report channel when a goal or task completes. Default on. Turn off if you only want errors surfaced.
Default: on
Environment overrides
The dashboard settings are persisted to preferences/runtime-config.json in the workspace and are the source of truth at runtime. For bootstrap scenarios — a fresh container that must come up with Auto Mode already enabled — you can seed the same file through an init container or a mounted config. There are no dedicated environment variables for these fields; the dashboard is the primary surface.
Creating goals and tasks
Open Goals & Tasks in the dashboard sidebar. The page has two panels: a Create goal or task card on the left and a list of existing goals and standalone tasks on the right.
On the create card, flip the type toggle between Goal and Task. Both share the same fields:
- Title — required. Shows up everywhere.
- Details — optional free-form notes for you, not for the bot.
- Prompt — optional instruction the bot follows when the task runs. Falls back to the title when left blank.
- Reflection tier — optional per-item override for the tier used during reflection turns.
- Reflection priority — when checked, the per-item reflection tier wins even if an active skill declares its own.
Tasks also carry an Attach to goal dropdown. Pick a goal to make the task part of it, or leave it on No goal (standalone task) for one-off jobs.
Click Create goal or Create task. The new item appears in the list on the right with status, progress badge, details, prompt, and three actions on each row:
- Schedule — jumps to the Scheduler page with the goal or task pre-selected.
- Edit — opens a modal to change any field. Save or Cancel.
- Delete — removes the item. Tasks nested under a goal are deleted with the goal.
A goal can be put on hold by editing it and setting its status to PAUSED; the schedule keeps ticking but the runtime skips non-ACTIVE goals. Flipping it back to ACTIVE resumes work on the next fire.
Putting a goal or task on a schedule
Open Scheduler in the sidebar. The left panel is a Create schedule card; the right panel is the Schedules table with one row per schedule.
On the create card, pick a target type (Goal or Task), then choose the specific goal or task from the dropdown. Below that is a mode toggle: Simple or Advanced cron.
- Simple — pick a frequency (Daily, Weekdays, Weekly, or Custom days), toggle the days if needed, and set a time in
HH:mm. Presets for09:00,12:00,18:00,21:00sit next to the input. All times are UTC; the card shows your browser timezone for reference. - Advanced cron — paste a cron expression or pick one of the presets (
* * * * *every minute,*/5 * * * *every five minutes,0 9 * * MON-FRIweekdays 09:00). Five fields (min hour day month weekday) or six fields (sec min hour day month weekday) — the runtime uses Spring's cron parser, not Quartz, and fills in a leading0for seconds when you give five fields. Times are UTC.
The rest of the form applies to both modes:
- Repeat limit — how many times this schedule fires before it stops. Presets for
1,3,5,10, andUnlimited. Required. - Clear context before run — wipe the agent session before each fire, so every run starts with a fresh context. Off by default.
- Report channel — where milestone and error notifications go. Pick a channel type (Telegram, Discord, webhook, email) and fill in the target. Optional; leave blank for silent runs.
- Enabled toggle — shown only on the edit form. Lets you pause a schedule without deleting it.
Click Create schedule (or Save schedule when editing). The row appears in the table on the right with the target, cron, runs count (2 / 5), next fire time, and action buttons — Logs, Edit, Delete.
Reading the diary
The diary lives behind the Logs button on each row of the Schedulertable — not on the Goals & Tasks page. Click Logs and a modal opens with two panes.
- Recent runs (left) — every run recorded for this schedule. Each entry shows its timestamp, run ID, status, message count, and the task it touched. Click a run to select it.
- Transcript (right) — the full conversation for the selected run: user turns, assistant replies, tool calls, and the model tier and skill used for each message. This is where you read what the bot thought, observed, and decided on that run.
The bot also runs a 1-second scheduler tick under the hood; on every tick it collects all schedules whose next fire has arrived and executes each of them in turn. Several schedules can fire back-to-back in the same tick when they line up — one run per schedule, not one run per tick.
Chat commands
Every Auto Mode surface is also reachable from chat. These commands are meant for quick adjustments during a conversation, not for initial setup — for day-to-day configuration, use the dashboard.
/auto— toggle autonomous mode on or off for the current session./goal— create or update a goal inline./goals— list goals and their status./tasks— list tasks for the current goal or across all goals./schedule— attach a schedule to a goal or task from chat./diary— print recent diary entries in the chat.
The bot itself manages goals and tasks through the goal_management tool when it is planning — the same operations the dashboard and chat commands expose, but driven by the model instead of you.
Restart and persistence
Goals, tasks, schedules, and diary entries all survive container restarts — they are persisted to auto/goals.json, auto/schedules.json, and auto/diary/<date>.jsonl in the workspace and reloaded on boot. If Auto-start on startup is on, the scheduler resumes firing as soon as the bot comes back up. A goal paused before the restart stays paused; resume it from the dashboard when you are ready.
What to do next
Related pages
User Guide
Delayed Actions
How to ask the bot to remind you, run something later, or follow up when a background job finishes — and how to cancel.
User Guide
Dashboard
A tour of the dashboard — what each page is for, where to find settings, and how to read what the bot is doing.
Cookbook
Scheduled Code Review
Set up a recurring daily code review using Auto Mode, a custom skill, and a cron schedule. Verify the first run and iterate.