cowork-deck

Scheduled Claude Code runs on your own machine

A prompt under a name, launched in one press — or hourly, daily, weekly, unattended.

Five Claude Code sessions as tiles in one window — one working, one waiting for a decision, one finished, one stopped on an error, one idle.

A scenario is a prompt with a name

Save the prompt you keep retyping, give it a name, and it becomes one press. A scenario can be pinned to a single workspace or offered in all of them.

Each distinct {{name}} in the prompt becomes a field in a small form at launch; a prompt with no placeholders asks nothing and starts immediately. Placeholder names are matched by letter rather than by ASCII, so a prompt written in any script names its fields in that script — a small decision with an obvious reason: a prompt is written in whatever language its author thinks in, and the interface's language does not get a vote.

Schedules run on your machine, through your Claude Code

Attach a schedule — hourly, daily at HH:MM, or weekly — and the scenario fires unattended into a fresh session using its stored defaults.

There is no cloud agent involved and no extra bill. The run happens locally, through the claude you already pay for, with your full local context, your files, and your permissions. That is a different proposition from a hosted agent: cheaper, private by construction, and able to touch things that only exist on your disk.

A scenario whose previous run is still working or still waiting is skipped rather than stacked. Two of the same job running at once is never what was wanted.

What happens to a missed run

Sessions are children of the app, so the scheduler only fires while the window is open — an honest limit rather than a hidden one. Missed runs are not silently lost: each scheduled scenario catches up once on the next launch. Once, not five times, because a machine that was closed for a week does not want seven backfilled jobs at breakfast.

The journal

Every run is recorded: how it started, how long it took, and its final message. The journal lists them newest first, filterable by scenario and by trigger. A row that produced nothing says which nothing it was.

Records are immutable. Erasing exists at exactly one granularity — one scenario's history, wholesale — because per-row deletion turns a log into a thing you edit until it says what you would prefer. Recording can be turned off entirely, and when it is off the screen says so rather than looking empty.

Broadcast

Related, and much simpler: broadcast types one thing into several live sessions at once. Useful for the instruction you find yourself giving five agents in a row.