Skip to main content

Encrypted monthly CLI todo manager with shell-session passphrase cache

Project description

todoctl

A CLI-first, encrypted monthly todo manager for nerdy engineers and architects.


Overview

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.

Demo

todoctl demo


Features

  • 🔐 Password-based encryption (scrypt + ChaCha20-Poly1305)
  • 📅 Monthly task separation
  • 🧠 Status-driven workflow (OPEN, DOING, SIDE, DONE)
  • 🧾 Stable task IDs
  • 🧹 Automatic sorting
  • ✍️ Native vim / $EDITOR editing
  • 🧩 Shell integration (auto-installed)
  • ⚡ Shell completion (auto-installed)
  • 🔄 Session-based password caching
  • 💾 Backup support
  • 🧼 Clean uninstall (todo purge --uninstall)

Installation (macOS & Linux – user-wide)

The recommended way to install todoctl is via pipx. This works on both macOS and Linux and installs the tool user-wide.


1. Install pipx

macOS:

brew install pipx
pipx ensurepath

Ubuntu / Debian:

sudo apt update
sudo apt install pipx
pipx ensurepath

Reload your shell:

exec $SHELL

2. Install todoctl

From PyPI (recommended):

pipx install todoctl

Or directly from GitHub:

pipx install git+https://github.com/epik0r/todoctl.git

3. Verify installation

todo --help


Notes

  • The todo command 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.


Installation dev

python3 -m venv .venv
source .venv/bin/activate
pip install -e .

First Run Behavior

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 vim or vi is available)

⚠️ Important: Shell completion will only be active after:

  • opening a new terminal, or
  • reloading your shell config:
source ~/.bashrc
# or
source ~/.zshrc

Usage

Initialize

todo init

List tasks

todo list
todo list 03
todo list 2026-03

Edit tasks (recommended workflow)

todo edit

Add a task

todo add "Implement API integration"

Change status

todo doing 1
todo done 1
todo open 1
todo side 1

Remove a task

todo remove 3

Rollover tasks

todo rollover 03 04

Backup

todo backup

Doctor

todo doctor

Purge

todo purge --yes
todo purge --yes --uninstall

todoctl – Vim Integration

Filetype Detection

  • Automatically detects .todo files
  • Sets filetype=todoctl

Syntax Highlighting

  • Highlights:
    • Header
    • Task IDs
    • Comments
  • Status colors:
    • OPEN (green)
    • DOING (yellow)
    • SIDE (blue)
    • DONE (gray)

Status Visualization (Conceal)

  • Displays symbols instead of text:
    • OPEN → ○
    • DOING → ▶
    • SIDE → ◆
    • DONE → ✔

Status Editing

  • Press t to cycle status: OPEN → DOING → SIDE → DONE → OPEN

Folding by Status

  • Tasks grouped automatically by status

Controls

  • z → toggle current block
  • gZ → close all
  • O → open all

Editor Settings

  • nowrap
  • nospell
  • commentstring=# %s

Security Model

  • scrypt + ChaCha20-Poly1305
  • no plaintext storage
  • session-scoped cache

Session Cache

  • valid per shell
  • expires after TTL (default 8h)
  • no cross-terminal sharing

Troubleshooting

cat ~/.local/share/todoctl/bootstrap.log

License

GPLv3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

todoctl-1.0.7.tar.gz (483.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

todoctl-1.0.7-py3-none-any.whl (40.3 kB view details)

Uploaded Python 3

File details

Details for the file todoctl-1.0.7.tar.gz.

File metadata

  • Download URL: todoctl-1.0.7.tar.gz
  • Upload date:
  • Size: 483.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for todoctl-1.0.7.tar.gz
Algorithm Hash digest
SHA256 4300f80cf4ca227efa0c87416bfbb537f1a6da525e2cb9a2c9de8d01faa024a0
MD5 7dd58449e70df9bf98dd278c28dcda72
BLAKE2b-256 28a3fde09ba755de35a4e5241f8d1179fc40da8faea9906b45502d9da137b0a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for todoctl-1.0.7.tar.gz:

Publisher: python-publish.yml on epik0r/todoctl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file todoctl-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: todoctl-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 40.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for todoctl-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 dc8ef46cd8061fe60ee13f57e28039a9c341527c0be96fc8ea981c3a7c2a52b1
MD5 4dcc0d26fb3bc24f29c00d34a7f80ea9
BLAKE2b-256 4d883da0e477c4d6d3efd4ec5957b98c64dca0f84d22a8b3f1f04c2c4630c9b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for todoctl-1.0.7-py3-none-any.whl:

Publisher: python-publish.yml on epik0r/todoctl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page