selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
rote logo

Self-host rote

v1.0.1

CLI job scheduler with persistent history and live TUI

ReleaseOpen SourceMIT
apk add --allow-untrusted rote_*.apk # Alpine
Updatedlast month
LanguageGo
Setup difficultyEasy
Stars
275

What is rote?

rote is a command-line job scheduler written in Go that replaces traditional cron by remembering every job execution. It runs shell commands on a schedule (cron syntax or plain-language like 'every 5m' or 'daily at 03:00'), captures stdout and stderr, records exit codes, duration, and timeout status, and stores everything in a local SQLite database. A live terminal dashboard (TUI) shows job health, next run times, and recent failures with their output. It can run headless as a daemon via 'rote start' and includes a systemd user unit example for persistent background operation. Configuration is a TOML file with per-job settings including timeout, failure hooks, and optional history retention limits. Available as prebuilt binaries for Linux and macOS, via Homebrew, Go install, or an install script. No web UI, no authentication, no external dependencies beyond SQLite (embedded).

Should you self-host rote?

rote scores 47/100 on selfhost.directory (how scoring works) and ranks #17 of 34 in Task Management. It has 275 GitHub stars.

It shipped 4 stable releases in the past year. The latest, v1.0.1, came out on 25 September 2026. New versions land roughly every 5 days.

Setup is easy: most people get it running in one sitting. It is MIT-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is Dagu (68/100, 4 468 stars). It scores higher overall, so compare the two before you pick. See rote vs Dagu side by side.

Features

  • Failure hooks
  • Headless daemon mode
  • History retention limits
  • Job Scheduling
  • Job timeout
  • Live terminal dashboard (TUI)
  • Manual job execution
  • Persistent run history
  • Read-only dashboard
  • Systemd service support

rote README

How to install rote

Install rote with Go

go install github.com/zhh2001/rote/cmd/rote@latest

Requires Go toolchain

How to configure rote

  • commandShell command, run via sh -c

    Shell command, run via sh -c

  • history_limitNon-negative integer: keep the newest N runs for this job. Omit or use 0 to keep all history

    Non-negative integer: keep the newest N runs for this job. Omit or use 0 to keep all history

  • nameUnique label for the job

    Unique label for the job

  • on_failureCommand run once when the job fails

    Command run once when the job fails

  • scheduleWhen to run (cron syntax or plain-language forms like 'every 5m', 'daily at 03:00')

    When to run (cron syntax or plain-language forms like 'every 5m', 'daily at 03:00')

  • timeoutNon-negative max run time, e.g. '30m', '90s'. Omit or use '0s' for no limit

    Non-negative max run time, e.g. '30m', '90s'. Omit or use '0s' for no limit

rote releases & version history

More in CLI Tools

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…