A CLI-first, encrypted monthly todo manager for nerdy engineers and architects.
todoctl is designed for people who prefer:
- terminal-first workflows
- structured but lightweight task tracking
- full control over their data
- encryption by default
It is not a replacement for a team collaboration tool. It is a personal productivity tool.
- π Password-based encryption (scrypt + ChaCha20-Poly1305)
- π Monthly task separation
- π§ Status-driven workflow (OPEN, DOING, SIDE, DONE)
- π§Ύ Stable task IDs
- π§Ή Automatic sorting
- βοΈ Native
vim/$EDITORediting - π§© Shell integration (auto-installed)
- β‘ Shell completion (auto-installed)
- π Session-based password caching
- πΎ Backup support
- π§Ό Clean uninstall (
todo purge --uninstall)
The recommended way to install todoctl is via pipx.
This works on both macOS and Linux and installs the tool user-wide.
macOS:
brew install pipx
pipx ensurepathUbuntu / Debian:
sudo apt update
sudo apt install pipx
pipx ensurepathReload your shell:
exec $SHELLFrom PyPI (recommended):
pipx install todoctlOr directly from GitHub:
pipx install git+https://github.com/epik0r/todoctl.gittodo --help
-
The
todocommand is installed into:~/.local/bin
-
If the command is not found:
pipx ensurepath exec $SHELL
-
pipx uses isolated environments internally, but for you the tool behaves like a normal global CLI.
python3 -m venv .venv
source .venv/bin/activate
pip install -e .On the first real todo command (e.g. todo init), the tool automatically installs:
- shell session integration
- shell completion (bash or zsh)
- vim integration (if
vimorviis available)
- opening a new terminal, or
- reloading your shell config:
source ~/.bashrc
# or
source ~/.zshrctodo inittodo list
todo list 03
todo list 2026-03todo edittodo add "Implement API integration"todo doing 1
todo done 1
todo open 1
todo side 1todo remove 3todo rollover 03 04todo backuptodo doctortodo purge --yes
todo purge --yes --uninstall- Automatically detects
.todofiles - Sets
filetype=todoctl
- Highlights:
- Header
- Task IDs
- Comments
- Status colors:
- OPEN (green)
- DOING (yellow)
- SIDE (blue)
- DONE (gray)
- Displays symbols instead of text:
- OPEN β β
- DOING β βΆ
- SIDE β β
- DONE β β
- Press
tto cycle status: OPEN β DOING β SIDE β DONE β OPEN
- Tasks grouped automatically by status
zβ toggle current blockgZβ close allOβ open all
nowrapnospellcommentstring=# %s
- scrypt + ChaCha20-Poly1305
- no plaintext storage
- session-scoped cache
- valid per shell
- expires after TTL (default 8h)
- no cross-terminal sharing
cat ~/.local/share/todoctl/bootstrap.logGPLv3
