Scheduling & background agents
Schedule a prompt — or a whole workflow — to run once, on an interval, daily, or weekly. The built-in scheduler runs it through the full agent loop, and a service worker keeps running due tasks even after you close the tab.
Create a task
Open the Scheduler drawer — either from the top bar or the calendar-clock button in the chat bar, which pre-fills your current message as the prompt. Pick one of four modes:
Once
Run at a specific date and time.
Repeat
Run every N seconds / minutes / hours, starting immediately after the first interval.
Daily
Run every day at a chosen time.
Weekly
Run on a chosen weekday at a chosen time.
When a task fires, the prompt goes through the full agent loop: history is built, all built-in tool schemas are offered, and tool calls are executed in the browser before the answer is appended to the session. One-time tasks auto-disable after firing; repeating tasks re-compute their next run.
Delivery
Results land in a new session (created automatically) or into an existing session you pick — so scheduled runs never disturb the conversation you're in.
Manage tasks
From the Scheduler drawer you can run now, enable/disable, and delete tasks. Each task shows a schedule summary, its status, next run, last run, and a preview of the latest result.
| Action | What it does |
|---|---|
| Run now | Fire the task immediately through the agent loop |
| Enable / disable | Pause a task without deleting it |
| Delete | Remove the task and its schedule |
Notifications
Enable optional browser notifications to get an alert when a scheduled run finishes or fails. The scheduler ticks every second while the tab is open, so tasks run while Zod is open in the browser.
Agent (harness) triggers
Each task can optionally pick a harness from the Scheduler drawer. When the cron fires, it executes the harness's agent steps (via the runner) instead of a bare prompt, and the resulting agentRun card lands in the target session — "run this agent at 9am daily".
Background service-worker agents
Scheduled work doesn't have to stop when you close the tab. A classic service worker runs the scheduler in the background, side-by-side with the offline cache:
Mirrors state
The app snapshots its localStorage document into an IndexedDB store (zod-bg) on every save, so the worker always sees the latest provider config, sessions, memory, and crons.
Runs due crons
The worker ticks every 2 seconds (and is woken on demand by a sync message from the page). For each due cron it builds history from the snapshot and runs the full agent loop — tools included — against your provider, or executes the cron's agent harness if one is attached.
Concurrent agents
Up to 3 cron runs execute in parallel, so multiple scheduled agents work simultaneously.
Writes results back
The worker pushes session, message, and cron-status updates to an IndexedDB outbox. When the app is reopened or focused, the page imports those rows into the stores — new sessions, assistant messages, and status/lastResult on crons — with no reload needed.
Survives reload & tab close
A run that completes while you're away shows up as a done task with its reply the next time you open Zod. Reopening the tab re-activates the worker, which re-snapshots state and catches up on any missed due runs.
A note on always-on
A service worker only lives while the browser itself is open — a closed tab suspends it until the browser wakes it or the next visit. For an always-on guarantee, the extension target can be ported to chrome.alarms (a roadmap item), which fires even when the browser is fully closed.