Infrastructure as code

Define your jobs in a YAML manifest and reconcile them with the SteadyCron CLI — no click-ops, no drift.

SteadyCron is infra-as-code first. Instead of clicking through the dashboard, you can declare your jobs in a YAML manifest, commit it to your repo, and have the CLI reconcile your account to match.

Quick example

namespace: production

channels:
  - id: ops-slack
    name: Slack #ops
    kind: slack
    config:
      webhook_url: ${SLACK_WEBHOOK_URL}

jobs:
  - id: weekly-digest
    name: Weekly digest email
    kind: http
    method: POST
    url: https://api.myapp.com/jobs/digest
    schedule: "0 9 * * 1"
    timezone: Europe/Berlin
    timeout: 120
    retries: 3
    rules:
      - channel: ops-slack
        trigger: on_failure

  - id: nightly-backup
    name: Nightly DB backup
    kind: heartbeat
    schedule: "0 2 * * *"
    grace: 1800

Apply it with:

export STEADYCRON_API_KEY=sc_...
steadycron sync production.yaml

Going deeper

  • IaC workflow — all CLI commands (export, validate, plan, sync, apply --prune), namespaces, stable IDs, and the secrets model.
  • Manifest reference — every top-level key and field, with the full job field table and a complete annotated example.
  • CI/CD setup — the GitHub Action that posts a plan diff on every PR and applies on merge.
  • API & authentication — creating API keys and scopes.

Authentication

The CLI authenticates with an API key. Create one in the dashboard and supply it via an environment variable so it never lands in your manifest:

export STEADYCRON_API_KEY=sc_...
steadycron sync jobs.yaml