Mach
A terminal-first task manager for people who live in the shell and work with agents.
Categories, reusable labels, due dates, subtasks, inline images, and a CLI that scripts or agents can drive.


Install
# 1. checksum-verified release binary → ~/.local/bin
|
# 2. crates.io → ~/.cargo/bin (Rust 1.90+)
# 3. local clone
&& &&
Crate name mach-tui, binary mach.
CLI
mach with no args opens the TUI. Subcommands cover add / list / edit / done /
delete / categories / labels / subtasks and more, with flags for due dates,
importance, categories, labels, description markup, and --json for scripts.
Agents work well against the same CLI — stable flags, unique ID prefixes, and JSON output when you need it.
Use mach list --query TEXT to search task titles and descriptions alongside
the existing category, label, and open/done filters. Automation can establish
shared names idempotently with mach categories ensure NAME and
mach labels ensure NAME; explicitly supplied descriptions or colors must
match an existing record or the command reports a conflict.
Export the task store to a portable archive and restore it into another data directory:
The TUI provides /export and /import <FILE> for the same workflow. Release
binary installations can update with /update or mach update --install;
Cargo installations update with cargo install --locked mach-tui.
Data
Lives in ~/.mach: tasks, categories, labels and settings in SQLite
(mach.db), with managed images under images/. The CLI and TUI safely share
the same store, and changes appear in the running app.
Portable .mach archives contain versioned JSON data plus the exact managed
image bytes referenced by those tasks. Back up the whole data directory while
Mach is closed when you need a complete local backup.
Another folder: --dir PATH or MACH_DIR.