Skip to content
Navigate Open escClose

Scheduled Tasks

A scheduled task runs a prompt for you on a schedule — for example, a daily “summarize yesterday’s changes” or a weekly cleanup. When it runs, OpenChamber starts a new session and sends the prompt on its own. Open the scheduler from the button at the top of the session sidebar.

Create a task

  1. Open the scheduled tasks dialog from the session sidebar.
  2. Add a task and give it a name.
  3. Choose when it runs:
    • daily — at one or more times each day
    • weekly — on chosen weekdays and times
    • once — a single date and time
    • cron — an arbitrary cron expression
  4. Set what it does: the prompt to send, and the provider, model, and agent to use. The prompt can be a slash command, like /review.
  5. Save, and make sure the task is enabled.

You can run any task immediately with run now to check it does what you expect.

Check Run as goal to make the run pursue its prompt to completion instead of stopping after one reply — see Session Goals.

Loops: scheduled tasks as markdown files

A loop is a scheduled task defined as a portable markdown file you can commit to your repo. Drop a file into .agents/loops/ and open the Scheduled Tasks list to sync it — no server restart needed:

---
name: daily-digest
schedule: "0 9 * * *"
enabled: true
model: anthropic/claude-sonnet-4-5
agent: plan
timezone: Europe/Kyiv
---
Summarize repository changes since yesterday and post the digest.

Where files live

  • Project scope.agents/loops/*.md in the project directory or any ancestor directory up to the git worktree root.
  • User scope~/.agents/loops/*.md applies to every project you open.

If a project loop and a user loop share a name, the project loop wins.

Fields

FieldMeaning
nameTask name (required, max 80 characters).
scheduleCron expression (required) — loop files are cron-only.
enabledSet true to run. Loops are off by default, so committing a file never starts running a task on its own.
modelprovider/model (required), e.g. anthropic/claude-sonnet-4-5.
agentAgent to use (optional).
timezoneIANA timezone (optional, defaults to the server zone).
bodyThe execution prompt (required). Can be a slash command, like /review src/.

How loops behave

  • The file is authoritative while it exists. Edit opens it in the built-in file editor, the enabled toggle updates its frontmatter, and deleting the task deletes the markdown file after confirmation. Run now remains available.
  • Runtime state (last run, next run, status) lives in the project config and is never written back into the markdown file.
  • Renaming the name field renames the task in place. If a loop file temporarily fails to parse (mid-edit, merge conflict), its task is kept with the last good definition until the file is fixed.
  • daily/weekly/once schedules and goal settings remain UI-only; loop files are always cron.

What success looks like

After a run, the task shows when it last ran, whether it succeeded, and a link to the session it created. If a run fails, the error is shown there too.

Keep in mind

Tasks only fire while the OpenChamber server is running. If you close it, scheduled runs are paused until it’s back up.