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, versioned blob format)
  • 📅 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 (per shell, secure fallback IDs)
  • 💾 Backup support (sanitized metadata, in-memory manifest)
  • 🧼 Clean uninstall (todo purge --uninstall)
  • 🛡 Hardened editing mode (RAM-backed temp files)
  • 🍎 macOS RAM disk helper (todo ramdisk-create)

Security Highlights

  • Modern authenticated encryption (ChaCha20-Poly1305)
  • Memory-hard key derivation (scrypt, versioned parameters)
  • No plaintext passphrase via environment variables
  • Sanitized subprocess environments (editor isolation)
  • Atomic file writes to prevent corruption
  • Strict path validation for storage operations
  • Secure session handling with random identifiers
  • Hardened editor mode with reduced persistence

⚠️ Important Recommendation

For maximum security, it is strongly recommended to enable hardened editing mode using a RAM-backed temporary directory.

On macOS:

todo ramdisk-create

On Linux, /dev/shm is typically suitable.

This ensures that decrypted todo content:

  • never touches disk
  • is not recoverable after editing
  • avoids editor swap/backup leakage

Installation (macOS & Linux – user-wide)

The recommended way to install todoctl is via pipx.

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

pipx install todoctl

or:

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

3. Verify

todo --help

First Run Behavior

On first todo init, the tool installs:

  • shell session integration
  • shell completion
  • vim integration

Then reload your shell:

source ~/.bashrc
# or
source ~/.zshrc

Usage

todo init
todo list
todo edit
todo add "Task"
todo doing 1
todo done 1
todo remove 3
todo rollover 03 04
todo backup
todo doctor
todo purge --yes

Security Model

  • encrypted at rest
  • no plaintext persistence (with hardened mode)
  • session-scoped secrets
  • configurable security level

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.9.tar.gz (492.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.9-py3-none-any.whl (48.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: todoctl-1.0.9.tar.gz
  • Upload date:
  • Size: 492.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.9.tar.gz
Algorithm Hash digest
SHA256 650d12fa4a62a11599763b4fd31619bac3e1b15d1c4df8c056a96a2dff098b7a
MD5 1662c0bf92328daf4c0750f889e3b7fb
BLAKE2b-256 f18e77784718ab021eaefa92656a6642f4984dfe1d6831c975bfdf3535c82aac

See more details on using hashes here.

Provenance

The following attestation bundles were made for todoctl-1.0.9.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.9-py3-none-any.whl.

File metadata

  • Download URL: todoctl-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 48.8 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.9-py3-none-any.whl
Algorithm Hash digest
SHA256 9348118292ccc2f9dbf18daaf763a3fea5ec2ae3a52f5f531b831e8c8b91a72c
MD5 37b0f71d534751872aa258a65d3f15a2
BLAKE2b-256 b58b4597caa98daa5f4fdb1582f6e5c0f4bd8392029d971aa8d3643e92784c85

See more details on using hashes here.

Provenance

The following attestation bundles were made for todoctl-1.0.9-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