Skip to main content

Task Scheduler

What the Task Scheduler does​

The Task Scheduler lets you define recurring tasks using cron expressions. At the scheduled time, AI Partner automatically runs the task as either a chat message (quick query) or a goal (full ReAct execution loop).

This is different from the Heartbeat/Proactive Engine:

  • Heartbeat — LLM-driven, uses HEARTBEAT.md, decides what to do each tick
  • Task Scheduler — deterministic, explicit schedule, you define exactly what runs

Use Task Scheduler when you want a specific, repeatable task on a fixed schedule. Use Heartbeat when you want the agent to use judgment about what's worth doing.


Creating a scheduled task​

Go to sidebar → Task Scheduler → + Add Task:

  1. 1
    Name the task

    Give it a clear name you'll recognize in the run history:

    Daily GitHub Issues Digest
  2. 2
    Set the cron expression

    Standard 5-field cron syntax:

    ┌───── minute (0-59)
    │ ┌─── hour (0-23)
    │ │ ┌─ day of month (1-31)
    │ │ │ ┌ month (1-12)
    │ │ │ │ ┌ day of week (0-6, Sun=0)
    │ │ │ │ │
    * * * * *

    Common patterns:

    ExpressionMeaning
    0 7 * * 1-57:00 AM every weekday
    0 9,15 * * 1-59 AM and 3 PM weekdays
    */30 * * * *Every 30 minutes
    0 8 * * MONEvery Monday at 8 AM
    0 17 * * FRIEvery Friday at 5 PM
    0 0 1 * *First day of every month at midnight

    The scheduler shows a human-readable preview as you type (e.g., "Every weekday at 7:00 AM").

  3. 3
    Write the task message

    What you want AI Partner to do — exactly as you'd type it in the chat:

    Chat mode example:

    What are the top 3 AI news stories from the last 24 hours?

    Goal mode example:

    Check all open GitHub issues in our repo labeled "bug".
    For any issue older than 7 days with no comments, add a comment asking for an update.
    Create a summary report and send it to my Telegram.
  4. 4
    Set the mode
    • Chat — fast, single-turn response; best for lookups and queries
    • Goal — full ReAct execution loop; best for tasks that involve tools, files, or messaging
    • Workflow — runs a saved workflow template on a schedule (set this via the Schedule button on the template card in the Workflows panel — see Run it on a schedule)
  5. 5
    Enable and save

    Toggle Enabled on and click Save. The task will run at the next matching cron tick.


Run History​

Every task run is logged. Click a task → History tab to see:

FieldDescription
Start timeWhen the task fired
End timeWhen it completed
Statuscompleted / failed / skipped / running
ResultThe agent's output (truncated; click to expand)
ErrorError message if failed

Live updates: while a task is running, its status in the History tab updates by itself.


Resume prompts​

If a goal-mode task times out mid-execution, the scheduler saves a resume prompt:

Task "Weekly Competitor Report" stopped at iteration 23/40
✅ 2 of 3 criteria passed
📁 2 artifacts created so far
⏱ Timed out after 10 minutes

[Resume from iteration 23] [Skip this run] [Disable task]

Click Resume from iteration 23 to pick up where it left off — the agent loads the prior context and continues from the last successful step.


Skipped runs​

A run is marked skipped (not failed) when:

  • The server was offline when the task was scheduled to fire
  • The heartbeat cooldown blocked it (if configured)
  • A prior run of the same task was still in progress

Skipped runs appear in History with a ⏭ Skipped status and a reason.


Managing tasks​

ActionHow
Enable / DisableToggle switch next to the task name — takes effect immediately
EditClick the pencil icon — modify name, cron, message, or mode
Run nowClick the ▶ play button — fires the task immediately, outside the schedule
DeleteClick the trash icon — removes the task and its run history

Examples​

Daily standup summary
Name: Daily Standup Summary
Cron: 0 9 * * 1-5 (9 AM weekdays)
Mode: Goal
Message: Search our Slack #engineering channel for messages from yesterday.
Summarize what the team worked on, any blockers mentioned, and
decisions made. Send the summary to my Telegram.
Weekly invoice check
Name: Weekly Invoice Check
Cron: 0 10 * * MON (Monday 10 AM)
Mode: Goal
Message: Check Stripe for any invoices that are overdue (past due date).
For each, draft a follow-up email to the customer and send
to me via Telegram for approval.
Hourly stock alert
Name: Portfolio Alert
Cron: 0 9-15 * * 1-5 (every hour during market hours, weekdays)
Mode: Chat
Message: Check if RELIANCE.NS or INFY.NS has moved more than 2% from
yesterday's close. If yes, tell me. If no, say "All quiet."
Monthly report
Name: Monthly Performance Report
Cron: 0 9 1 * * (1st of every month at 9 AM)
Mode: Goal
Message: Pull last month's data from HubSpot (deals closed, pipeline value)
and Stripe (revenue, new customers, churn). Create an Excel report
with charts and send it to my Telegram.

Scheduling a workflow template​

The easiest way to schedule a workflow is from the Workflows panel — hover a template card and click the calendar icon. This opens a schedule modal where you pick a frequency (daily, weekdays, weekly, hourly, or custom cron) and fill in the template's parameters. It registers a Task Scheduler task with mode: workflow automatically.

You can also create it manually here with mode: Workflow and a task message formatted as:

{
"templateId": "competitive-analysis",
"parameters": {
"niche": "SaaS project management tools",
"output_format": "docx"
}
}

Scheduled workflow runs appear in the History tab of the Workflows panel alongside manually triggered runs.


Task Scheduler vs. HEARTBEAT.md​

Task SchedulerHEARTBEAT.md
ControlExplicit cron scheduleLLM-driven judgment each tick
What runsExactly what you wroteWhat the agent decides is useful
Best forPredictable, repeatable tasksOpportunistic, context-aware tasks
Edited viaTask Scheduler UISettings → Workspace → HEARTBEAT.md
Run historyFull per-run log with resumeheartbeat_logs table

Use both together: Task Scheduler for deterministic recurring jobs, Heartbeat for intelligent gap-filling.