cron-rs-web

v0.1.4 · 17 June 2026 · MIT

The minute,
on one page.

cron-rs-web is the web dashboard for cron-rs. The cron-rs-web-server binary embeds the Next.js UI, listens on port 3000, and shows task state, runs, and hook events live over SSE.

Homebrew
brew tap dickwu/tap
brew install cron-rs-web
One step
brew install dickwu/tap/cron-rs-web

Eight every-minute tasks

Illustration of the cron-rs stagger rule. Every-minute tasks are spread across the minute so they do not fire on the same second. Eight tasks land on seconds 3, 11, 18, 26, 33, 41, 48, and 56. Create, update, or delete a task in the dashboard and the daemon respreads that group. The schedule stored for the task stays as you wrote it. Staggering only changes the generated systemd units.

What the browser shows

Five screens, plus login. Search opens with Command-K or Ctrl-K. Press n, when a text field is not focused, to start a new task. The layout adapts to desktop, tablet, and mobile.

Binary
cron-rs-web-server
Listen
0.0.0.0:3000
API
same host :9746
Unit
cron-rs-web.service
License
MIT
Path What you do there
/ Dashboard. Live task state, run status, and hook events over SSE. The summary shows total tasks, runs in 24 hours, success rate, and active timers. Charts cover run activity and failure rate.
/tasks Create, edit, enable, disable, trigger, and delete tasks, with a schedule preview. Select several tasks and enable, disable, or delete them together.
/tasks?id=… Task detail. Add, edit, and delete hooks for that task. Hook editing stays here.
/hooks Read-only catalog. It lists only tasks that already have configured hooks.
/runs Filterable run history. stdout and stderr open in a terminal-style viewer.
/settings Review runtime state and manage the saved API URL override.
/login JWT login for the cron-rs account created by cron-rs init. The default username is admin. You can point this page at another API URL.

Install, then open port 3000

The product README installs the dashboard with Homebrew on macOS or Linux. cron-rs itself stays a separate Linux daemon. The tap README says it requires systemd and is not in Homebrew.

  1. Install cron-rs on the Linux host

    Download a release from github.com/dickwu/cron-rs. Initialize, import existing schedules, and install the user service.

  2. Install cron-rs-web

    Use the Homebrew commands at the top of this page, or download a release archive below. The formula’s homepage is the source repository. It installs the cron-rs-web-server binary.

  3. Start the dashboard

    Run it in the foreground, or install cron-rs-web.service as a user systemd unit. The binary binds 0.0.0.0 and port 3000 unless you override them.

  4. Sign in

    Open the host on port 3000. The page calls the cron-rs API on that same host at port 9746, then asks for the account cron-rs init created.

On the server
cron-rs init --password 'change-this-password' --host 0.0.0.0
cron-rs import
cron-rs service install --host 0.0.0.0 --start

cron-rs-web-server service install --host 0.0.0.0 --start
Foreground
cron-rs-web-server

Replace the password before you run init. The foreground command is the one in the tap README. It connects to the cron-rs API at localhost:9746. Open http://localhost:3000 on that machine, or http://your-server:3000 after the service install.

Use a different API URL

The server flag and the two environment variables below are the documented overrides. The login page and Settings can also store an API URL.

API URL
cron-rs-web-server service install --host 0.0.0.0 --api-url http://api-host:9746 --start

CRON_RS_WEB_HOST, CRON_RS_WEB_PORT, CRON_RS_API_URL, and CRON_RS_WEB_API_URL configure a non-interactive start.

Service commands
systemctl --user
cron-rs-web-server service status
cron-rs-web-server service restart
cron-rs-web-server service uninstall
Serve the UI from cron-rs on port 9746

Build the static dashboard, then build the sibling cron-rs checkout with embed-web. The daemon serves the UI on the API port. Routes under /api/v1/ stay the API. Other browser routes fall back to the dashboard.

embed-web
cd ../cron-rs-web
npm ci
npm run build

cd ../cron-rs
cargo build --release --features embed-web
Development

Node.js is for development. npm run dev starts Next.js on port 3000 and proxies API calls to the cron-rs daemon at localhost:9746.

Dev server
cron-rs daemon
npm install
npm run dev

Release archives for v0.1.4

System Archive
macOS Apple Silicon cron-rs-web-aarch64-apple-darwin.tar.gz
macOS Intel cron-rs-web-x86_64-apple-darwin.tar.gz
Linux x86_64 cron-rs-web-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 cron-rs-web-aarch64-unknown-linux-gnu.tar.gz
Linux x86_64, static cron-rs-web-x86_64-unknown-linux-musl.tar.gz

The formula in dickwu/homebrew-tap currently records version 0.1.0. It installs the Apple and GNU Linux archives for that recorded version. The musl archive is on GitHub releases and is not listed in the formula. Latest source and release: v0.1.4.

Questions

What is cron-rs-web?

cron-rs-web is the web dashboard for cron-rs. It monitors and manages systemd timers from a browser. Production runs as one binary, cron-rs-web-server, with the Next.js UI embedded. No Node.js runtime is required to serve it.

How do I install it?

On macOS or Linux, tap the Homebrew repository and install the formula: brew tap dickwu/tap, then brew install cron-rs-web. The same formula installs in one step with brew install dickwu/tap/cron-rs-web. Homebrew places cron-rs-web-server on your PATH. Release archives are also on GitHub for macOS Apple Silicon, macOS Intel, Linux x86_64, Linux ARM64, and a static Linux x86_64 musl build.

Does the formula install cron-rs?

No. The dickwu/tap README says cron-rs is Linux-only, requires systemd, and is not available via Homebrew. Install the cron-rs daemon from its GitHub releases, then start this dashboard against it.

Which API does the dashboard use?

By default the page connects to the cron-rs API on the same browser host at port 9746. Opening http://your-server:3000 uses http://your-server:9746. Pass --api-url to cron-rs-web-server, or set CRON_RS_API_URL or CRON_RS_WEB_API_URL. The login page can point at another API URL, and Settings can save that override.

What can I do after I sign in?

The dashboard streams task state, run status, and hook events over SSE. On Tasks you create, edit, enable, disable, trigger, and delete timers, with a schedule preview, and you can enable, disable, or delete several tasks at once. Hooks are added, edited, and deleted on the task page. The Hooks page only lists tasks that already have hooks. Runs is a filterable history with a terminal-style viewer for stdout and stderr. Settings reviews runtime state and stores an API URL override. The dashboard also charts run activity and failure rate, and the layout adapts to desktop, tablet, and mobile.

Can the cron-rs daemon serve this UI itself?

Yes. Build the static dashboard with npm run build in cron-rs-web, then build cron-rs with cargo build --release --features embed-web. That daemon serves the UI on the same host and port as the API. The API stays under /api/v1/, and other browser routes fall back to the dashboard.