Skip to main content

odot

CI PyPI Python License: MIT

A minimalist, interactive command-line task manager built with Python.

odot demo


Features

  • Interactive prompts — arrow-key navigable menus when you omit an argument
  • Rich output — clean, formatted tables via the rich library
  • Filtering & sorting — slice your task list by status, category, priority, or date
  • Import / export — move tasks between machines with JSON
  • Reports — generate Markdown or HTML reports with one command
  • Local first — SQLite-backed, zero-configuration, works offline

Installation

# uv (recommended)
uv tool install odot

# pipx
pipx install odot

# pip
pip install odot

Quick Start

odot add "Buy groceries" -p 2 -c home # add a task (database created automatically)
odot list                             # view all tasks
odot list --todo --sort priority      # open tasks, sorted by priority

The database defaults to ~/.odot/db.sqlite. Override with the ODOT_DB_PATH environment variable.

Usage

Managing Tasks

odot add "Submit quarterly report" -p 3 -c work   # add
odot show                                          # interactive detail view
odot done 1                                        # mark task 1 as done
odot undo 1                                        # re-open task 1
odot update                                        # interactive update
odot update 1 --content "Revised name" --done      # explicit update
odot rm                                            # interactive delete
odot rm 1 --force                                  # skip confirmation

Searching & Filtering

odot search "groceries"
odot list --done                       # completed tasks only
odot list -c work --todo               # open work tasks
odot list --sort priority --reverse    # descending priority

Import, Export & Reports

odot export backup.json --todo         # export open tasks
odot import backup.json                # append from file
odot import backup.json --clear        # replace all tasks
odot report tasks.md --sort priority   # Markdown report
odot report work.html --todo -c work   # filtered HTML report

Bulk Operations

odot clean          # remove completed tasks (prompts for confirmation)
odot clean --force  # skip confirmation
odot purge          # remove all tasks (prompts for confirmation)
odot purge --force  # skip confirmation

Development

Prerequisites: uv, just, gh

git clone https://github.com/jkomalley/odot.git && cd odot
uv sync
just test          # run pytest
just test-cov      # enforce 100% coverage
just check         # ruff + ty + tests

Contributing

Contributions are welcome. See CONTRIBUTING.md for development setup, project layout, and the conventions this repo follows.

License

Released under the MIT License.

Download files

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

Source Distribution

odot-0.4.0.tar.gz (19.6 kB view details)

Uploaded Source

Built Distribution

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

odot-0.4.0-py3-none-any.whl (21.3 kB view details)

Uploaded Python 3

File details

Details for the file odot-0.4.0.tar.gz.

File metadata

  • Download URL: odot-0.4.0.tar.gz
  • Upload date:
  • Size: 19.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for odot-0.4.0.tar.gz
Algorithm Hash digest
SHA256 2ffaf620f96306ffdc3b28a93ec9ca78230517939af8761b10111a2ad6e2c290
MD5 6fcb96c8db7d4198c6d558cfa4765c43
BLAKE2b-256 6927f4a1e34e137e4316f30096bd772389298ab15fb1c6d12bd203c1077d7b8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for odot-0.4.0.tar.gz:

Publisher: cd.yml on jkomalley/odot

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

File details

Details for the file odot-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: odot-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 21.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for odot-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6787f9d117950266ef7f225fed5383395fa1f4548afb7ea9a49c5c34bed27a79
MD5 46e17fea8ec89b528ee2a44a3ec24138
BLAKE2b-256 25fd3e1aa68483936ff9e7b91ebe3872da118f98f51a7558dbd29d3e922da127

See more details on using hashes here.

Provenance

The following attestation bundles were made for odot-0.4.0-py3-none-any.whl:

Publisher: cd.yml on jkomalley/odot

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