Job reference
Every Cronable job is a YAML file in your jobs directory (~/cronable-jobs by default) — the source
of truth. Jobs run on a schedule or chain off another job’s outcome, and you edit them either
in the visual DAG editor or by hand.
Job types
Cronable ships 28 built-in types, grouped as:
- Actions —
claude,claude-api,openai,codex,terminal,ssh,http,email,code,git,database,slack,telegram,sms,file,sheets,calendar,hostaway - Operators —
wait,switch,filter - Triggers —
webhook,folder-watch,inbox,calendar-watch,telegram-watch,sheet-watch,hostaway-watch(see the Triggers guide)
Each runs on your own machine, using your own AI accounts and MCP connections.
Running a command on a remote host — ssh
The ssh action runs a command on a remote machine over SSH — a first-class version of a
terminal job that runs elsewhere (deploy, restart a service, tail a remote log):
id: restart-web
name: Restart web
type: ssh
host: web-01.example.com
user: deploy
command: systemctl restart myapp
schedule:
- { kind: daily, time: '04:00' }| Field | Required | Notes |
|---|---|---|
host, user | yes | Remote host + login user (both support {{ expressions }}). |
command | yes | Runs on the remote host’s shell; supports {{ expressions }}. |
port | no | Defaults to 22. |
identityFile | no | Path to a private key; omit to use your SSH agent / default keys. |
hostKeyPolicy | no | accept-new (default) · strict (known hosts only) · off (insecure). |
Non-interactive by design. ssh runs with BatchMode — it never prompts, so authentication must be
an SSH agent or a key file (a host that needs a password fails fast rather than hanging the
run). No secret lives in the YAML: identityFile is a path, so your key never leaves the box. The
command runs on the remote shell with the same operator trust as a terminal job.
Anatomy of a job
A job has an id, a type, type-specific fields, and its schedule points — a
daily/hourly/weekly/monthly time point, or afterParent to chain off another job. A job can have
several, one, or none: a trigger, an error handler, or a
manual-only job runs without any schedule. Optional: env, secrets references ({{ $secrets.X }}),
retry, and an onFailure handler.
More fields and worked examples are documented per job type — this reference expands as we go.
Expressions & data flow
Fields can use {{ }} expressions with $vars, $secrets, $credentials (reusable encrypted
credentials, by name), $parent (the parent run’s output), $now, and $env — so a job can
transform and pass data to the next. See the Expressions & data flow guide.