Skip to content
cronpad
CLI / CLI

CLI

The cronpad binary is both the server and a command-line client. Server commands (serve, migrate, user, secrets) work on the local database and config. Client commands (jobs) talk to any cronpad server over the API. schedule commands work entirely offline. Schedule and jobs commands accept --json for machine-readable output; user create-key also supports it.

Install

Download a release binary for Linux or macOS (amd64, arm64) from the GitHub releases page, or use the Docker image (docker run --rm cronpad:<version> <command>).

Client configuration

VariableFlagDescription
CRONPAD_URL--urlServer base URL, e.g. https://app.cronpad.com
CRONPAD_API_KEY--api-keyAPI key (cp_…)

Commands

cronpad serve

Starts the server: HTTP, dispatcher, workers and background tasks. Reads cronpad.toml from the working directory, or --config <path>. Environment variables override the file. See Configuration.

cronpad migrate

Applies database migrations and exits. serve does this automatically unless database.run_migrations = false.

cronpad schedule validate <expr>

$ cronpad schedule validate "0 0 9 ? * 3#2"
valid   quartz   At 09:00 on the second Tuesday of the month

cronpad schedule next <expr>

$ cronpad schedule next "every weekday at 6:30pm" --tz America/New_York -n 3
2026-11-02 18:30 EST   (2026-11-02T23:30:00Z)
2026-11-03 18:30 EST   (2026-11-03T23:30:00Z)
2026-11-04 18:30 EST   (2026-11-04T23:30:00Z)

Flags: --tz (default UTC), -n / --count (default 10, range 1–100), --after <RFC3339>, --kind (default auto), and --json. validate also accepts --tz, --kind, and --json. Invalid schedules exit nonzero; JSON validation output includes the structured parser errors. These commands do not load configuration or open databases. An explicit --after also anchors relative expressions and recurrence phases. Offline validation checks syntax; the server additionally applies its configured minimum interval.

cronpad jobs …

CommandDescription
cronpad jobs list [--state active] [--tag t]List jobs
cronpad jobs get <id>Show a job and its next runs
cronpad jobs create --name n --schedule s [--tz z] (--url u | --command c [--arg a]…)Create a simple job
cronpad jobs create -f job.jsonCreate from a full JSON body (same as the API)
cronpad jobs pause <id> / resume <id> / enable <id>Change state
cronpad jobs trigger <id>Run now
cronpad jobs runs <id> [--status failed]Recent runs

Jobs flags override environment variables. For create, --url is the webhook URL; put a server override before the subcommand:

cronpad jobs --url https://cronpad.example.com create --name report \
  --schedule 'every weekday at 9am' --tz Asia/Kolkata \
  --url https://example.com/hook --retries 5 --tag reports --json
cronpad jobs create --name backup --schedule 'every day at 2am' \
  --command /usr/local/bin/backup.sh --arg daily --json
cronpad jobs list --query report --limit 20 --json

--retries sets maximum attempts including the first attempt. --tag accepts repeated flags or comma-separated tags. -f - reads a JSON body from stdin; file mode cannot be combined with simple creation flags. List and runs accept --limit; list also accepts --cursor. Table output reports next_cursor when another page is available. API errors print their code and message to stderr and exit nonzero.

cronpad mcp

Bridges the server’s MCP endpoint to stdio for AI clients that launch local processes. Uses CRONPAD_URL and CRONPAD_API_KEY, overridden by --url and --api-key. Use --path for a custom mcp.path. See MCP server.

cronpad user create-key --email <email> --name <name>

Creates an API key for that user’s personal workspace directly in the local database and prints it once. Useful for bootstrapping automation on a fresh self-hosted server. The user must have signed in at least once.

cronpad secrets rekey --new-key <base64>

Re-encrypts all stored secrets with a new encryption key. Stop the server first, run this, then start it with the new secrets.encryption_key.

cronpad healthcheck

Calls the local /readyz and exits 0 or 1. Used as the Docker healthcheck, since the image has no curl.

cronpad version

Prints version, commit and edition (oss or cloud).