cronit sits on top of your regular crontab and gives you a friendly TUI to create, edit, pause and inspect cron jobs — including the stdout/stderr, exit code and duration of every past run.

Features
- Interactive TUI — job list with live details panel, all keyboard-driven
- Run history — every run is recorded: exit code, duration, full stdout/stderr
- Schedule picker — common presets plus your own saved templates
- Schedule builder — compose a schedule step by step, no cron syntax required
- Pause / resume — disable a job without deleting it or losing its history
- Crontab import — adopt your existing cron entries with one keypress
- Human-readable schedules — descriptions and upcoming run times for every job
- Named jobs — give jobs names, or get a generated one like
brave-otter
- Single static binary — pure Go, no cgo, no runtime dependencies
Installation
From release binaries
Grab an archive for your platform from the releases page, then:
tar -xzf cronit_*.tar.gz
sudo mv cronit /usr/local/bin/
With go install
go install github.com/MakarMolochaev/cronit@latest
The binary lands in $GOBIN (defaults to ~/go/bin — make sure it is in your PATH).
From source
git clone https://github.com/MakarMolochaev/cronit.git
cd cronit
./install.sh
install.sh builds the binary and installs it to ~/.local/bin (override with BINDIR=/some/path ./install.sh).
Usage
Launch the TUI:
cronit
Or use the CLI directly:
cronit add "*/5 * * * *" "curl -s https://example.com/ping"
cronit add "@daily" "backup.sh"
cronit rm <id>
cronit version
cronit help
Schedules accept standard five-field cron expressions as well as the @yearly, @monthly, @weekly, @daily, @hourly and @reboot shortcuts. Don't feel like writing cron syntax? Pick a preset or a saved template with ctrl+t, or build the schedule step by step with ctrl+b:

Keys
| Key |
Action |
↑/↓ |
select job |
a |
add job |
e |
edit job |
space |
pause / resume job |
enter |
view run history & output |
d |
delete job |
i |
import existing crontab entries |
q |
quit |
In the add/edit form:
| Key |
Action |
tab |
next field |
ctrl+t |
schedule picker (presets & saved templates) |
ctrl+b |
schedule builder |
enter |
save |
esc |
cancel |
How it works
cronit does not run its own daemon — your system's cron does the scheduling. Each job is written to your crontab as a marked entry:
# cronit:id=abc12
*/5 * * * * /usr/local/bin/cronit start abc12 "curl -s https://example.com/ping"
When cron fires, cronit start executes the command through sh -c, passes stdout/stderr through untouched, and records the exit code, duration and captured output.
Jobs, templates and run history live in a SQLite database at ~/.local/share/cronit/cronit.db (respects $XDG_DATA_HOME). Pausing a job removes its crontab line but keeps the job and its history.
Already have cron jobs? Press i to import them: the entries you select are rewritten as cronit-managed jobs, so they gain run history, pause/resume and everything else. Before touching anything, cronit saves a timestamped backup of your crontab to ~/.local/share/cronit/. Entries it can't fully understand — and MAILTO=/PATH= lines — are left exactly as they were.
Requires Linux or macOS with a cron daemon (cronie, vixie-cron, etc.).
License
MIT