Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ChronosUI

Bring observability to native schedulers.

English | 繁體中文

CI License GitHub release Platform

A desktop control center for the schedulers you already use — crontab (macOS/Linux) and Windows Task Scheduler. No daemon. No lock-in. No migration. ChronosUI doesn't replace cron, launchd, or Task Scheduler; it makes them observable — run history, captured output, durations, and on-demand runs.

You already have a scheduler. What you're missing is visibility.

ChronosUI — discover, adopt, run, and review run history for your native schedulers
▶ Watch in higher quality (MP4)

Download

👉 Download the latest release: https://github.com/AugustusW/chronos-ui/releases/latest

  • macOS.dmg (signed + notarized; Apple Silicon)
  • Windows.exe installer (NSIS). Currently unsigned, so on first run click More info → Run anyway past SmartScreen.

Or build from source.

Why?

Every developer eventually accumulates automation: daily backups, AI agents, scrapers, device sync, data collectors, log cleanup. It all ends up in cron. Months later you SSH into a machine, open crontab -e, and wonder "which job is this, and is it even still working?"

ChronosUI exists because managing automation through SSH, logs, and crontab is a bad workflow — not because the schedulers are bad. They work fine. They just have no UI.

Without ChronosUI                 With ChronosUI
─────────────────                 ──────────────
ssh into the box                  open the app
crontab -e                        see every job, its last run + output
grep, tail -f, guess              run any job on demand
vim, repeat                       read the run history
"…which job is this?"             done

Features

  • ✓ Dashboard home: today's stats, failures, and upcoming runs at a glance
  • ✓ Discover the cron / Task Scheduler jobs you already have
  • ✓ Adopt them without migration (no new daemon, fully reversible)
  • ✓ Run any job on demand
  • ✓ Run history with captured stdout/stderr and durations
  • ✓ Telegram notifications when a scheduled job fails or times out (immediate, or batched into a digest)
  • ✓ SQLite by default, PostgreSQL optional — switch anytime from Settings, with existing data migrated for you
  • ✓ Cross-platform (macOS, Windows; Linux via cron)

Screenshot

ChronosUI Schedules view — managed and unmanaged cron jobs grouped by category, with run, enable, and adopt actions

How it works

ChronosUI reads your native scheduler and shows it in a clean GUI. To record the output of scheduled runs, it can "adopt" a job by wrapping its command with a small bundled binary (schedmgr) — fully transparent (same working directory, environment, and exit code) and one-click reversible. The exact crontab rewrite is documented in docs/crontab.md.

Using PostgreSQL

No schema setup is needed — ChronosUI creates and upgrades its own tables via bundled, versioned migrations. Prepare three things, then fill in the connection form under Settings → Database:

  1. An empty database (the switch refuses a database that already contains data, so nothing gets overwritten by accident).
  2. A role that can create tables in that database (e.g. the database owner).
  3. The connection details (host / port / database / user / password).

The connection string is stored in the OS keychain (macOS) or a file readable only by your user account, and never appears in cron lines or config files. Ticking "Copy existing SQLite data" migrates your jobs, run history and notification settings in one transaction; the original chronos.db is left untouched as a backup, and you can switch back from the same panel at any time.

macOS permissions

Why does macOS ask for admin-like permission?

The first time you adopt or edit a cron job, macOS shows "ChronosUI wants to administer this computer…". This is not dangerous — it's macOS's generic prompt for any app that touches crontab (cron files live in the protected /var/at/tabs/ location). ChronosUI only runs crontab -l / crontab -; it never modifies passwords, network, or system settings. Click Allow once.

Batched Telegram notifications don't trigger it (they use a per-user LaunchAgent in your home directory). If you clicked Don't Allow by mistake, reset it from a terminal and relaunch:

tccutil reset All com.augustusw.chronos-ui

Develop

git clone https://github.com/AugustusW/chronos-ui.git
cd chronos-ui
npm install
npm run dev      # launch the app
npm test         # unit tests
npm run lint     # lint
npm run build    # production build

Requires Node 20+. Releasing is documented in RELEASING.md.

Status

Early but usable. Core scheduling discovery, adoption, run history, and packaging are working. The UI and integrations are still evolving. Issues and PRs welcome.

License

Apache-2.0. See LICENSE and NOTICE. Contributions require a DCO sign-off (git commit -s); see CONTRIBUTING.


You don't need another scheduler. You need to understand the one you already have.

Releases

Packages

Contributors

Languages