Skip to content

Schedule

Suggest Edits

Cron for normal humans. Visible, debuggable, paused with a click. Each scheduled job spawns a real task, hands it to an agent, optionally walks them through a workflow. Set it up and get on with your day. History shows you what fired, what worked, and what didn’t.

The schedule view in list mode, with today/week/month calendar toggles in the header.

As close to telling the future as it gets. Four view modes from the header: List, Today, Week, Month. List is the dense table; the calendar grids lay out every job your team is about to fire. Filter by agent, search by name. Click a row to open the detail drawer (sidecar fields, run history, last failure).

The job form with cron expression, agent picker, task title and prompt, and optional workflow.

+ New Job opens a side drawer. Type the cadence in plain English (“every day at 9am”, “weekdays at noon”, “first of the month”) and Bakin translates it into cron. Or drop in a raw cron expression if you’ve got one. Pick the agent who runs it, give the task a title and a prompt, optionally attach a workflow.

Each row’s menu has the day-to-day controls:

  • Pause to stop a job without losing its config. Resume from the same menu when you’re ready.
  • Run now to fire the job immediately, ignoring schedule. Good for testing or backfilling.
  • Skip next to drop just the next firing without pausing the rest.
  • Duplicate to clone a job with all its settings, then tweak the copy.
  • Delete when you don’t need it anymore.

Same menu lives in the detail drawer for jobs you’ve already opened.

The detail drawer’s History tab lists past fires with timestamps, success/failure, and the task that resulted. Useful when scheduled work looks stale or duplicated.

Runtime-native cron jobs may also show a Cron tools field. That comes from the runtime adapter’s cron allowlist, such as OpenClaw’s --tools / payload.toolsAllow policy for isolated agent-turn cron jobs.

If a runtime-native or legacy cron job has no allowlist, Schedule flags it as missing cron tools. Treat that as an audit prompt, not an automatic fix: choose the smallest tool set the native job needs before changing the runtime cron.

Bakin-owned schedules are different. They use runtime cron as a timer, then create Bakin tasks. The eventual agent task’s MCP permissions are not controlled by cron toolsAllow; that belongs to Bakin MCP tool scoping.

Schedule splits ownership: the runtime owns the cron, Bakin owns everything around it.

  • The runtime owns the cron itself. The actual cron daemon, expressions, and run logs live in the runtime home directory. Bakin asks the runtime adapter to add, edit, remove, or fire them.
  • Bakin owns sidecar metadata. Display name, owner, agent assignment, task title and prompt, workflow link, and pause/failure state live in ~/.bakin/schedule/sidecar.json.

When a cron fires, the runtime POSTs the bridge endpoint (/api/plugins/schedule/bridge) with an HMAC-signed payload. Bakin verifies the signature, creates a real task, optionally starts a workflow, and dispatches the work to the assigned agent. The bridge secret auto-generates on first use.

Each job tracks consecutive failures. Past maxFailures, the job auto-pauses with a cooldown so a broken job doesn’t fire indefinitely. Resume from the row menu once you’ve fixed the underlying issue.

~/.bakin/schedule/
sidecar.json # per-job display + ownership metadata

Cron expressions and run logs live in the runtime home. Bakin reads them; the runtime writes them.

SettingTypeDefaultWhat it does
Max concurrent jobsnumber3Maximum jobs that can run at the same time
Failure cooldown (ms)number300000Wait time after failure before retrying
Max consecutive failuresnumber3Pause job after this many consecutive failures
Bridge enabledbooleantrueAllow cron jobs to create tasks via the bridge
Startup reconciliation windownumber24Create missed scheduled tasks only for successful runtime cron runs newer than this many hours. Set to 0 to disable startup backfill.

Same surface from the terminal:

CommandPurpose
bakin schedule [list|add|pause|resume|remove|run|runs] ...Manage scheduled jobs.

Full surface in the CLI reference.

HTTP API surface for this plugin: see the API reference.

Agents can list, create, pause, run, and parse cron through MCP exec tools.

  • bakin_exec_schedule_briefing: Today’s schedule summary — which jobs fire, assigned agents, alerts. Designed for orchestrator daily briefing.
  • bakin_exec_schedule_create: Create a new scheduled job that creates tasks on the board
  • bakin_exec_schedule_delete: Delete a scheduled job
  • bakin_exec_schedule_get: Get details for a single scheduled job
  • bakin_exec_schedule_list: List all scheduled jobs (merged runtime cron + Bakin view)
  • bakin_exec_schedule_parse: Parse a natural language or raw cron schedule expression
  • bakin_exec_schedule_pause: Pause, resume, or skip runs for a scheduled job
  • bakin_exec_schedule_run_now: Trigger an immediate run of a scheduled job
  • bakin_exec_schedule_runs: Get run history for a scheduled job
  • bakin_exec_schedule_update: Update an existing scheduled job

Full schemas in the Exec tools reference.

  • Tasks: every fired job creates a task here
  • Workflows: optional workflow attached to a job
  • Team: the agent picker pulls from here