# Cron

Daemon-level cron — run skills on a schedule, even when no client is connected.

The daemon has a built-in cron scheduler. Skills fire into sessions on a schedule — whether or not a client is connected. Your agent checks feeds at 2am, runs maintenance every hour, or sends a daily summary. You close your laptop, the cron keeps running.

## Creating a cron

From the REPL or any client, create a cron entry:

```
schedule: "0 */2 * * *"    # standard cron expression
skill: "check-feeds"       # fired as /check-feeds
session: 12345              # target session (determines the agent)
```

The daemon validates the cron expression on create. Invalid schedules are rejected.

## Quiet hours

Crons support quiet hours — a time window where fires are silently skipped:

```
quiet_start: "23:00"
quiet_end: "07:00"
```

Both must be set. Times are in the daemon's local timezone. If a cron would fire inside the window, it's skipped — no queuing, no catch-up.

## How it works

Crons are daemon-level, not session-level. They survive config reloads and runtime swaps. On daemon restart, they're recovered from `crons.toml`.

When a cron fires:

1. The daemon sends `/<skill>` as a message into the target session
2. The agent in that session processes it like any slash command
3. Output goes to session history — no client needs to be listening
4. The reply channel is dropped (fire-and-forget)

## One-shot crons

Set `once: true` to fire a cron exactly once, then auto-delete. Useful for reminders or deferred tasks.

## Protocol

Three operations on the daemon protocol:

| Operation | Message            | Response                  |
| --------- | ------------------ | ------------------------- |
| Create    | `CreateCronMsg`    | `CronInfo`               |
| Delete    | `DeleteCronMsg`    | Success or not found      |
| List      | `ListCronsMsg`     | `CronList`               |

See [Protocol](/content/docs/crabtalk/protocol/index.html) for the full wire format.

## What's next

- [Agents](/content/docs/crabtalk/agents/index.html) — the agents that crons trigger
- [Skills](/content/docs/crabtalk/skills/index.html) — the skills that crons fire
- [Protocol](/content/docs/crabtalk/protocol/index.html) — cron protocol messages
