Create and manage a schedule
Ask the agent in the conversation where you want the result, for example:Every weekday at 9 AM America/New_York, summarize the open issues here.Include the instruction, cadence, and named timezone. The agent uses
create_schedule and confirms only after the schedule is saved. Ask it to list,
edit, pause, resume, cancel, or run the schedule now using list_schedules and
manage_schedule.
Only the original requester can manage a schedule through conversation.
Authorized operators can inspect history and pause, resume, cancel, or request
an immediate run on the agent’s Schedules page (/agents/{slug}/schedules).
The saved destination cannot be changed to a different audience.
Supported times
Every cadence requires an explicit IANA timezone, such as
America/New_York or
UTC. Arbitrary cron expressions and monthly rules are not supported.
For daylight-saving changes, a local time that does not exist is skipped. A time
that occurs twice runs once, at its earlier occurrence. Interval schedules do
not drift based on how long the previous execution took.
This is the tool request for a weekday briefing:
null.
Conflicting cadence fields are rejected. Management actions other than update
can omit request; only run_now needs a request_id UUID for idempotency.
Execution and missed runs
Schedules require PostgreSQL andMESH_RUN_WORKER_ENABLED=true. The worker must
receive CPU between HTTP requests. The scheduler checks every ten seconds;
scheduled times indicate when a run becomes eligible, rather than a guaranteed
delivery instant.
Each occurrence uses the primary model, at most four model iterations, and a
five-minute deadline. Only replayable query tools are offered. Idle scheduler
checks do not call a model. Human conversation work takes priority.
Only one occurrence of a schedule can be active. When a regular firing overlaps
an active occurrence, it is recorded as skipped. After downtime, Mesh coalesces
missed firings into the latest occurrence within a one-hour catch-up window and
records skipped history. A busy conversation can defer pickup within that window.
Run now preserves the regular cadence. Its request is durable, including when
the requesting conversation turn is still active, and its idempotency key survives
retries and restarts. Edits, pause, or cancellation invalidate pending manual
requests. Edits are refused while an occurrence is running.
Pausing or cancelling fences further work but cannot retract a delivery already
in flight. An uncertain delivery appears in occurrence history instead of being
blindly resent. Every execution rechecks the agent, schedule, source audience,
and evidence permissions.
Limits and monitoring
An agent can retain up to 100 active or paused schedules. Across enabled agents, at most 16 occurrences can await completion installation-wide, with at most four per agent and the shared run-worker admission limits. Disabled agents do not occupy another agent’s scheduled-work capacity. The Schedules page shows next and last execution, occurrence outcomes, delivery uncertainty, and attributed control history. Operators can monitorGET /api/schedules/health with a read-only API token or use the repository’s
scripts/check-schedules.sh. Health checks cover stale scheduler heartbeats,
overdue scheduled/manual requests, and queued occurrences that have not settled.
An independent monitor is needed to detect a total Mesh outage.
See the operator API for the control and history
endpoints. Implementation and calendar tests live in internal/schedule;
worker-to-connector integration tests live in
internal/app/schedules_integration_test.go.