tiny tidy todos = tody
Path-aware terminal task manager for global and project-local todos.
curl -fsSL https://tlo3.com/tody-install.sh | sh
tody --versionIf tody is not found, add this and restart your shell:
export PATH="$HOME/.local/bin:$PATH"Start using it:
tody add Buy groceries # global task (when not in a project, quotes optional!)
cd ~/projects/my-app
tody add Fix login bug # auto-detected as local (you're in a git repo)
tody add Read docs --global # explicitly global, even inside a project
tody # fast list of pending tasks for current project
tody done # interactive picker to mark tasks complete
tody done 1 2 # batch complete tasks #1 and #2
tody list --all # grouped view across all projects
tody projects # summary of all projects and task counts| If you want to... | Run | Aliases | Result |
|---|---|---|---|
| see pending tasks | tody or tody list |
ls, l, show |
local tasks for current project (or global outside repo) |
| add a task | tody add Fix the bug |
a, new, create, + |
quotes optional; auto-scoped to current project |
| add global/local task | tody add Task -g / -l |
explicitly global or local | |
| complete a task from picker | tody done or tody pick |
i, interactive |
interactive prompt to select task |
| complete task(s) by ID | tody done 1 2 |
d, complete, check, x |
marks one or more tasks as completed |
| edit a task's title | tody edit 1 New title here |
rename, mv, modify |
updates task title (quotes optional) |
| undo / reopen a task | tody undo or tody undo 4 |
reopen, uncheck |
restores last completed or specific task ID |
| delete task(s) | tody rm 1 2 [-f] |
delete, remove, del |
deletes task(s) (-f to skip confirmation) |
| clear completed tasks | tody clear [-a] |
sweep, clean |
removes completed tasks for project (or all with -a) |
| see project overview | tody projects |
proj, p |
table of all projects, pending/done counts |
| filter by project | tody list -p my-app |
view tasks for a specific project from anywhere | |
| scriptable plain list | tody list --plain |
tab-separated output for piping (fzf, grep) |
|
| get pending count | tody count |
stats, n |
numeric count (perfect for Starship/tmux prompts) |
| generate shell completions | tody completions zsh |
completion |
autocompletion scripts for bash, zsh, fish, etc. |
| view recent activity | tody log [--all] |
history, activity |
completed task timeline with relative timestamps |
| prune orphaned projects | tody prune |
cleans up tasks from deleted project directories | |
| update tody | tody self-update |
upgrade, update |
self-update from GitHub releases |
| view / edit config | tody config [set/get] |
view all settings or get/set specific keys |
- Smart auto-detection: In a git repo, tasks are local to that project. Outside, they are global.
- Fast CLI flow: Bare
todyinstantly shows what's next.tody doneopens the interactive picker. - Batch operations: Complete or delete multiple tasks at once (
tody done 1 2 3). - Quote-free input: Just type
tody add Review PR and deploy to staging. - Project discovery:
tody projectsgives a birds-eye view of all your repos and tasks. - Shell prompt friendly: Embed
tody countin your Starship or tmux status line. - Zero config: Runs on a local SQLite database, single binary, lightning fast.
Config file (macOS/Linux): ~/.config/tody/config.toml
default_command = "list" # list | picker
default_view = "auto" # auto | merged | local | global
color_local = "bright_magenta" # ANSI color name
color_global = "bright_cyan" # ANSI color nametody config # view all active configuration settings
tody config set default_command picker
tody config set default_view local
tody config get color_local| Item | Path (macOS) |
|---|---|
| Database | ~/Library/Application Support/tody/tody.db |
| Config | ~/.config/tody/config.toml |
Paths are resolved via dirs, so Linux and Windows use their platform conventions too.
Install a specific release:
curl -fsSL https://tlo3.com/tody-install.sh | TODY_VERSION=2026.8.1 shInstall to a custom location:
curl -fsSL https://tlo3.com/tody-install.sh | BINDIR=/usr/local/bin shInstall directly from source (Rust 1.85+):
cargo install --git https://github.com/treyorr/tody.gitOr build from a clone:
git clone https://github.com/treyorr/tody.git
cd tody
cargo install --path .Requires mise or Rust 1.85+.
git clone https://github.com/treyorr/tody.git
cd tody
mise install
mise run cimise run fmt
mise run lint
mise run test
cargo run -- add "test"tody uses CalVer: YYYY.MM.COUNTER.
See CONTRIBUTING.md.
