Denly

Schedule coding agent tasks: daily, weekly or monthly, on your own machine

Updated 2026-09-02

A schedule creates an ordinary task on a cadence, and that task then follows the same plan, approval, build and review path as one you typed by hand. The cadence grammar is three fixed shapes rather than cron: daily@09:00, weekly@mon.09:30, monthly@1.06:00, each with an optional timezone.

Denly is a control plane for coding agents (Claude Code, Codex, Cursor, Grok Build, Antigravity) that run on your own machines and your own subscription: you describe a task, the agent plans it, you approve, it builds locally and opens a pull request. A schedule is that same flow on a timer.

The cadence grammar

Three shapes, no cron expressions:

ShapeExampleFires
daily@HH:MMdaily@09:00Every day at 09:00
weekly@DOW.HH:MMweekly@mon.09:30Every Monday at 09:30. DOW is one of mon, tue, wed, thu, fri, sat, sun
monthly@D.HH:MMmonthly@1.06:00The 1st of each month at 06:00. D is 1 to 28, so every month has the day

Each shape takes an optional IANA timezone after a ~: weekly@mon.09:00~Asia/Jerusalem means 09:00 on the wall clock there, across daylight-saving changes. Without the suffix the time is UTC. The next run is stored and compared in UTC either way, and the dashboard shows you the next firing instant while you are still typing the cadence.

What a schedule creates

An ordinary task, inserted at one of two starting stages:

  • Plan first – the agent plans, and the task waits at the approval gate for a person. Use this for anything that touches product code.
  • Straight to build – no plan, no gate. Use this for gate-less chores where the instruction is already exact.

The server copies the title and body verbatim when it fires, so a ciphertext envelope survives the firing path unread. The write that stores them does not yet encrypt on every path: as of 2026-09-02 a schedule's title and body can still reach the server as plaintext, and that is an open repair on our side. Until it lands, keep a scheduled brief free of anything you would not put in an unencrypted field.

The two skip rules

  1. The previous task is still open. Denly skips the occurrence rather than stacking a second task on top of one nobody has reviewed. The cadence still advances, so a skipped week is a skipped week and never a backlog of retries.
  2. The project is frozen by its plan. The schedule stays scheduled and resumes the moment the project unlocks.

A Run now action on each schedule fires one task immediately without touching the cadence, which is how you test a schedule without waiting a week for it. It reports back if the previous task is still open, rather than firing anyway.

Create one

  1. Open the project's schedules panel. Creating and editing schedules is an owner or admin action.
  2. Write the title and body exactly as you would write a task. This text is what the agent receives on every firing.
  3. Enter the cadence. The panel shows the next firing instant as you type, so a wrong timezone is visible before you save.
  4. Choose the starting stage, the assignee, and the runtime and model.
  5. Save, then use Run now once to see the task it produces.

The trade-off

Firing happens on Denly's side, so a schedule fires whether or not your machine is awake. The work does not: the task waits in the queue until an eligible runner is online to claim it. A 06:00 schedule on a laptop that opens at 09:00 is a task that starts at 09:00.

Read next

Flows, reviews, gates & schedules · Tasks & backlog · The coding agent pull request workflow: plan, approve, build, review, merge · One dashboard for coding agents across many projects and machines

Start free – no card