Skip to content

Cell - Ta Cron ​

A pi package that comes with Ta (on by default; turn it off in Settings → Extensions of the web client): scheduled tasks. Give Ta a prompt and a time rule; at its time the Ta service runs it in a new conversation, and you get the summary when it ends. For checking CI now and then, summing up commits, writing a daily report, or a reminder at a time.

text
/loop 30m check whether CI on main passes
/loop @daily sum up yesterday's commits
/loop "0 18 * * 1-5" write the daily report from today's commits --name report
/remind in 45m remind me to check the release
/remind at 15:30 look at the alerts of production
/schedule                       # list the tasks
/schedule show <task>           # a task and its last runs
/schedule run <task>            # run it now; its schedule stays
/schedule enable|disable <task>
/schedule set <task> --model openai/gpt-5 --notify always   # a value of - clears
/schedule remove <task>
/schedule clear                 # remove the tasks of this directory
/schedule help

Or just say "sum up yesterday's commits every day at 9": Ta makes the task with the tool schedule_task. The Scheduled page in the navigation of the web client lists every task with its rule, its next run and a switch; opened, its prompt and the summary of each run, and "Open conversation" goes to the conversation of that run. Tasks are made, edited, run and deleted there too; the dialog picks a task's model from a list with a search box (type part of its name, id or provider; arrows and Enter pick; the models with credentials in the settings of its directory, pi packages' such as other agents included) and its thinking level, or leaves the defaults of the settings.

Time rules ​

  • Once: /remind in 45m, /remind at 15:30 (tomorrow when it has passed today), /remind at 2026-12-01 08:15.
  • Interval: 30m, 2h, 1d, 1h30m; at least 1 minute.
  • cron: five fields (minute hour day month weekday) with *, ranges, lists, steps and names such as jan and mon, and @hourly, @daily, @weekly, @monthly, @yearly; when both days are restricted, either one matches (as in cron). Quote an expression with spaces.

Times are local to the machine of the Ta service. A command may end with --name, --notify always|error|never, --model <provider>/<model>, --thinking <level> and --cwd <directory>.

How it runs ​

  • Three parts, none of which changes Ta's core:
    • Server side (pi.host, web-src/host.ts): the scheduler. It runs in the Ta service with one timer, asleep until the next task is due (it looks again within a minute at the latest, to follow a changed clock or a machine that slept). Tasks and runs are kept in the data of the package (extension-data/@celljs/ta-cron.json of the agent directory), the last 20 runs of each task.
    • pi extension (pi.extensions, web-src/extension.ts): /loop, /remind, /schedule and the tool schedule_task. A command answers with a card in the conversation, which the model does not read.
    • Web extension (pi.web, web-src/index.tsx): the Scheduled page, the cards of the commands, and a notice when a run ends.
  • One run, one conversation: each run opens a new session (in the ta-cron group) in the task's directory (by default that of the conversation that made it; an ssh:// directory works too), with the task's model and thinking level if it has them. The system prompt it adds tells Ta that nobody watches, not to ask anything, and to end with a summary; the last answer is the summary of the run. Once the run ends its session closes (after whoever is looking at it leaves), and its file stays.
  • No scheduling from a run: a run has no schedule_task and the commands refuse, so tasks do not breed tasks.
  • No overlap: a task whose last run has not ended when its time comes again lets that time go. At most 3 runs at once; the others wait.
  • Timeout: a run that takes more than 30 minutes is stopped and fails.
  • While the Ta service is not running: the missed times of a repeating task collapse into one run as soon as the service starts; a task that runs once and is more than 5 minutes late is missed and not run (run it by hand if it is still wanted); a run that was going when the service stopped fails on the next start.
  • Notices: when a run ends, open web pages tell of it by the task's notify level (with a notice of the system when the page is in the background and the user allowed them). By default a task that runs once always tells, a repeating one only when it fails.

Limits ​

  • Tasks run only while the Ta service runs (ta serve; Ta Desktop starts it); in ta in a terminal the commands and the tool say they need it.
  • A run's tools cannot be limited: it is a conversation like any other, with your settings and the project's extensions and skills.
  • No outside channels such as email or webhooks, and no export or import.