Blog

Last Run Goes Open Source

Published: 6/14/2026

For a while now I've been running a little Rust command-line tool called LastRun to keep track of when I last ran the routine maintenance on my machine — upgrading Homebrew, updating Rust with rustup update, bumping Node and npm, refreshing my Java install, and so on. None of these are automated jobs; they're operations I run by hand every so often, and it's surprisingly easy to lose track of when I last got around to each one. LastRun answers that question, and it has become useful enough that I've decided to clean it up and open source it for anyone to use.

Public Repository: https://github.com/eveenendaal/last-run

What it does

LastRun records the start, completion, and failure times of any operation you point it at, and stores that history in a local SQLite database. You can then list and filter past runs, view a quick status summary, or render everything in a TUI. It's ideal for the periodic upkeep you do manually — updating language toolchains, package managers, and system tooling — where you just want to know when you last did it and whether it actually finished.

# Start tracking an operation
lastrun start --id brew-upgrade

# Mark it complete (or failed)
lastrun complete --id brew-upgrade

# See what you've run and when
lastrun status

Output comes as a pretty table or as JSON, and there's a quiet mode that makes it easy to drop into scripts.

Installing it

Now that the project is public, you can install it straight from the repository. Each release ships prebuilt macOS binaries for both Apple Silicon (aarch64-apple-darwin) and Intel (x86_64-apple-darwin), so you can grab the one for your machine from the releases page, make it executable, and drop it on your PATH:

curl -L -o lastrun \
  https://github.com/eveenendaal/last-run/releases/latest/download/lastrun-aarch64-apple-darwin
chmod +x lastrun
mv lastrun /usr/local/bin/

Or build it yourself from source with Cargo:

git clone https://github.com/eveenendaal/last-run.git
cd last-run
cargo build --release
cp target/release/lastrun /usr/local/bin/

The binary is self-contained — SQLite is statically bundled, so there are no runtime dependencies to install.

Why open source it

The code was already small, self-contained, and free of anything personal, so there was very little standing between "private utility" and "something other people could use." Making it public also pushed me to tidy up the things that matter for a real distribution: self-contained binaries (SQLite is now statically bundled, so there are no runtime dependencies) and reproducible multi-architecture builds for every release.

If you find yourself wanting a lightweight way to answer "when did this last run?", give it a try and let me know what you think.