Quickstart
Ten minutes, start to finish. You will schedule one command, prove it works,
and leave a scheduler running.
Before you start, make sure the command you want to schedule already works
when you type it by hand. Scheduling a broken command just gives you a
scheduled failure. If the CLI is not yet configured, do that first:
Getting Started.
1. Take the command you already run
Say this is your weekly Axonius pull:
regscale axonius sync_assets --plan_id 12
Drop the leading regscale and write what is left as a list of separate
arguments:
command: ["axonius", "sync_assets", "--plan_id", "12"]
Each flag and each value is its own list item. This is the single most common
thing to get wrong — command: "axonius sync_assets" as one string is rejected
at load time, on purpose. There is no shell involved, so quoting, &&, pipes
and $VAR have no meaning here.
2. Write jobs.yaml
Create ~/.regscale/jobs.yaml:
version: 1
jobs:
- name: axonius-weekly
description: Weekly Axonius asset ingestion
command: ["axonius", "sync_assets", "--plan_id", "12"]
schedule: "0 2 * * 1" # Mondays at 02:00
timezone: America/New_York
timeout_minutes: 480
notify:
on_failure: [[email protected]]
name is a slug you will use to run and inspect the job: lower-case letters,
digits and hyphens. schedule is a standard five-field cron expression —
Schedules and cron has a cookbook if 0 2 * * 1 is not
obvious.
No credentials go in this file. Authentication comes from your existing
init.yaml and environment, unchanged.
3. Check it
regscale jobs validate
OK: 1 job(s)
Anything else is a message naming the field that is wrong, and exit code 1.
Fix it and run again — this is worth doing every time you edit the file, and
worth putting in CI if the file lives in a repository.
4. See what the schedule means
regscale jobs list
NAME SCHEDULE TZ ENABLED NEXT RUN LAST RESULT
axonius-weekly 0 2 * * 1 America/New_York True 2026-09-21 06:00:00Z -
NEXT RUN is shown in UTC — here, 02:00 New York time is 06:00 UTC. Confirm
that lines up with what you meant before going further. LAST RESULT is -
because it has never run.
5. Run it once by hand
Do not wait until Monday to find out whether it works:
regscale jobs run axonius-weekly
axonius-weekly: SUCCESS (exit=0) log=/home/you/.regscale/job_logs/axonius-weekly-3f9a1c2b0d4e.log
jobs run ignores the schedule and the enabled flag entirely — it is the
"test it now" button. The exit code is 0 only when the job succeeded, so this
works in a script.
Everything the command printed is in that log file. Read it:
tail -50 /home/you/.regscale/job_logs/axonius-weekly-3f9a1c2b0d4e.log
If the run failed, this log is where the reason is — the job's own stdout and
stderr, exactly as if you had run the command yourself.
6. Leave a scheduler running
Nothing runs on schedule until something is polling the schedule. In the
foreground, for a first look:
regscale jobs daemon
Job axonius-weekly scheduled (0 2 * * 1, tz=America/New_York); next fire ~2026-09-21 02:00:00 EDT
It reloads jobs.yaml on every pass, runs whatever is due, and sleeps. Stop it
with Ctrl+C — it finishes the job in flight first, rather than killing it.
That command in the foreground of your terminal is fine for a demo and wrong
for production. For a real deployment — container, Kubernetes, systemd, host
cron, Windows — go to Deployment and pick the one that matches
where you run the CLI today.
7. Check on it later
regscale jobs history axonius-weekly
2026-09-21 06:00:03Z SUCCESS exit=0 1243.7s trigger=daemon
2026-09-14 06:00:01Z FAILED exit=1 8.2s trigger=daemon
trigger tells you what started each run: daemon, run-due (an external
scheduler), manual (jobs run), or tui.
What to do next
- Add the rest of your jobs to the same file — Configuration
is the full field reference. - Get email on failure: Email alerting.
Yournotify.on_failurelist above does nothing until an SMTP relay is
configured. - Prefer clicking to editing YAML? Scheduling from the TUI builds the
same file from any command form. - Something did not run when you expected: FAQ.
Updated about 8 hours ago
