Install cronova¶
cronova is a self-hosted workflow scheduler that ships as one static Go binary — scheduler, web console, REST API, and CLI included, with an embedded SQLite database. In this chapter you install it, start it, and open the console for the first time.
There are three ways to get the cronova binary. For this tutorial, use the plain binary and run it from a working directory — no root, no service, easy to throw away.
Option 1: Prebuilt release (recommended for the tutorial)¶
Grab the latest release (currently v0.2.1) from the Releases page. Binaries are published for Linux and macOS, amd64 and arm64, as cronova_<os>_<arch>.tar.gz:
mkdir cronova-tutorial && cd cronova-tutorial
curl -fsSLO https://github.com/zoyluoblue/cronova/releases/latest/download/cronova_darwin_arm64.tar.gz
tar -xzf cronova_darwin_arm64.tar.gz
chmod +x cronova
Swap the filename for your platform: cronova_linux_amd64.tar.gz, cronova_linux_arm64.tar.gz, or cronova_darwin_amd64.tar.gz. Each release attaches SHA256SUMS; verify the archive before extracting it. The one-line installer and cronova update require this verification and abort if the checksum metadata is missing.
Tip
The tarball is more than the binary: it also unpacks a dags/ folder with runnable example DAGs, a cronova.yaml.example config template, and the standalone cronova-executor. Starting from the tarball means the console won't be empty on first launch.
Option 2: Build from source¶
With Go 1.26.5+ installed:
This builds the scheduler, web console, and CLI into one static binary. It is CGO-free (pure-Go SQLite), so no C toolchain is required.
Note
A plain go build reports its version as dev — that's expected. Release binaries carry the real version tag.
Option 3: One-line installer (native service)¶
For a real deployment on a Linux or macOS box, one command does everything:
curl -fsSL https://raw.githubusercontent.com/zoyluoblue/cronova/main/deploy/bootstrap.sh | sudo bash
It detects your OS and CPU architecture, downloads the matching prebuilt release, verifies its SHA256, installs cronova as a native service (systemd on Linux, launchd on macOS), and runs an interactive setup wizard for the port, bind scope, admin account, and auth.
A service install manages its own lifecycle afterwards: cronova update upgrades in place (with automatic rollback if the new binary doesn't stay up), and cronova uninstall removes it. The full production guide is in Deployment.
For the rest of the tutorial, stick with the plain binary from Option 1 or 2.
Check it: cronova version¶
From the directory with your binary:
You'll see the build version and platform, in the form cronova <version> <os>/<arch>:
If that prints, the install is done.
Start the scheduler and open the console¶
cronova serve runs the scheduling loop and the web console + REST API in one process:
By default it works relative to the current directory: DAG YAML files load from ./dags (created if missing), the SQLite database lives at data/cronova.db, and task logs go to logs/. That's why running it from a dedicated working directory is the cleanest way to follow along.
Now open http://localhost:8090 in your browser. You'll see the cronova console — the DAG list, run history, task states, and one-click manual triggers. If you installed from the release tarball, the bundled example DAGs (like example_etl and ticker) already appear in the list.
You can check the same thing from a second terminal with the CLI:
Each loaded DAG is listed with its schedule — proof the scheduler is up and reading your DAG directory.
Warning
Authentication is off for this plain development serve, but the default listener is 127.0.0.1:8090, so it is reachable only from this machine. Cronova refuses an unauthenticated non-loopback bind unless you explicitly enable the dangerous override. Before network access, enable login — see Enabling login.
Stop the server anytime with Ctrl+C — your DAGs and the database stay on disk, ready for the next ./cronova serve.
What you learned¶
- Three ways to install cronova: a prebuilt release binary,
go buildfrom source, or the one-linecurl | sudo bashinstaller that sets up a native service. ./cronova versionconfirms the binary works and printscronova <version> <os>/<arch>../cronova serveruns the scheduler, web console, and REST API in one process, with everything (DAGs, DB, logs) relative to your working directory — console at http://localhost:8090.
Next up: write and trigger your first DAG — First DAG.