Cron Jobs
The Cron page (/cron) lets you create and manage scheduled tasks that run the AI agent automatically.
Job List
Jobs are displayed as cards showing:
- Name and an Enabled/Disabled badge.
- Workspace badge -- the associated project name, or "Global" if no workspace is assigned.
- Schedule -- displayed in monospace as a cron expression, interval, or one-time datetime.
- Delivery channel -- if configured, shown as an arrow notation (e.g., "telegram:12345").
- Prompt -- the first two lines of the prompt text.
- Next run / Last run -- timestamps for the upcoming and most recent execution.
- Error indicator -- a destructive badge showing the consecutive error count when the last run failed, plus the error message.
Actions
Each job card has buttons to:
- Run -- trigger the job immediately.
- Enable/Disable -- toggle the job's active state.
- Delete -- remove the job after confirmation.
Filtering
A dropdown at the top filters jobs by workspace. Select "All Projects" to see every job.
Creating a Job
Click "+ New Job" to expand the create form. Fields:
Name
A descriptive label for the job (e.g., "Daily summary").
Project
Select a workspace to scope the job, or choose "None (Global)" for a workspace-independent job.
Prompt
The instruction text sent to the agent when the job triggers. Supports multi-line input.
Schedule
Enter a natural language description (e.g., "Every monday at 10am", "in 10 minutes", "daily at 9") and click Convert. The system uses an LLM to translate the description into either:
- Cron expression -- for recurring schedules. Shown with a green checkmark and the expression in monospace.
- One-time datetime -- for single-execution jobs. Shown as an ISO 8601 timestamp.
Cron expressions support an optional timezone. The schedule types recognized internally are:
| Type | Description | Example |
|---|---|---|
cron | Standard 5-field cron expression | 0 10 * * 1 (Mondays at 10:00) |
every | Fixed interval in milliseconds | Every 30 minutes |
at | One-time execution at a specific datetime | 2026-03-25T15:00:00Z |
Delivery Channel
Optionally route the job output to an external channel instead of the WebSocket session:
- None -- results stay in the web UI session.
- Telegram -- deliver to a Telegram chat ID.
- Discord -- deliver to a Discord channel/user ID.
- WhatsApp -- deliver to a WhatsApp contact.
When a channel is selected, a "Chat ID / Target" input appears.
Monitoring
The job list auto-refreshes every 15 seconds. Each card displays:
- The next scheduled run time.
- The last execution time.
- The last error message (if any), truncated with a tooltip for the full text.
- A consecutive error count badge when the job is in an error state.