Skip to main content

Local, git-friendly task manager for AI agents and humans

Project description

todoing

Tasks that live in your repo. No servers. No databases. Just git.

PyPI Python License Tests


todoing is a local, file-based task manager built for the AI era. It stores every task as a markdown file with YAML frontmatter — fully git-trackable, editor-friendly, and agent-native. No API keys, no cloud, no lock-in.

If your ideas, plans, and to-dos should live next to your code, todoing is for you.

Why todoing?

todoing GitHub Issues Linear Notion Todoist
Stored in-repo
Git-trackable
Offline-first
AI-agent-friendly CLI
Zero setup
Markdown native

Install

uv tool install todoing     # recommended: isolated environment
pipx install todoing        # or via pipx
pip install todoing         # or classic pip

Requires Python 3.11+.

Quickstart

todoing add "Ship the MVP"
todoing add "Write integration tests" -l testing -s in_progress
todoing ls

# (#2) [testing] {🏃} Write integration tests
# (#1) [] {⏳} Ship the MVP

That's it. A .todoing/ directory is created in your repo root. Add it to git. You're done.

How it works

Each task is a markdown file in .todoing/tasks/. A JSON index makes listing and searching instantaneous. Everything is plain text — your editor, grep, and git diff all work natively.

.todoing/
  tasks/
    1.md    # markdown with YAML frontmatter
    2.md
    ...
  index.json    # auto-rebuilt, never committed alone
---
id: 1
title: Ship the MVP
added_at: 2026-05-01T10:00:00
status: in_progress
labels: [p0, feature]
---

Long-form description here. Supports
multi-paragraph markdown body.

Commands

add — Create a task

todoing add "Refactor auth module" -l p1 -l backend -s todo -b "Current approach is brittle."
# (#4) Refactor auth module

ls — List tasks

todoing ls                  # all tasks, newest first
todoing ls -n 5             # latest 5
todoing ls -s in_progress   # filter by status
todoing ls -l p0 -l backend # filter by labels (AND)

see — View a task

todoing see 4               # raw markdown to stdout
todoing see "#4"            # # prefix is optional

status — Change status

todoing status 4 in_progress
todoing status 4 done

Statuses: todo ⏳ , in_progress 🏃 , done ✅ , cancelled

label — Add or remove labels

todoing label 4 +p0               # add p0
todoing label 4 -- -backend       # remove backend (-- separator needed)
todoing label 4 +bug --clear      # clear all, then add bug

body / append — Edit descriptions

todoing body 4 "Full rewrite of the auth flow."     # replace body
todoing append 4 "Also update token refresh logic."  # append to body

search — Full-text search

todoing search "auth"
# (#4) [p0] {🏃} Refactor auth module

delete — Remove a task

todoing delete 4 --force       # skip confirmation

edit — Open in $EDITOR

todoing edit 4                 # humans only; AI agents use body/append

reindex — Rebuild the index

todoing reindex                # recovery command; rarely needed

Built for AI agents

todoing is designed for AI coding agents to drive via CLI. Commands are single-shot, output is parseable, and the $EDITOR-based edit command has scriptable alternatives (body, append, status, label).

todoing ls -n 5                     # agent checks current work
todoing status 3 in_progress        # agent starts a task
todoing append 3 "Fixed in a1b2c3d" # agent records progress
todoing status 3 done               # agent completes task

No prompts, no TUI, no friction.

Self-dogfooding

todoing tracks its own development. Every feature, fix, and idea for todoing itself is a task inside .todoing/tasks/. The tool builds the tool.

Development

git clone https://github.com/anomalyco/todoing
cd todoing
uv sync
source .venv/bin/activate
python -m pytest

License

MIT

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

todoing-1.0.4.tar.gz (4.3 MB view details)

Uploaded Source

Built Distribution

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

todoing-1.0.4-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file todoing-1.0.4.tar.gz.

File metadata

  • Download URL: todoing-1.0.4.tar.gz
  • Upload date:
  • Size: 4.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for todoing-1.0.4.tar.gz
Algorithm Hash digest
SHA256 5d8957f3fd90bacd0f4111ae6daf9fcea770e4b447d548c1a010d6f898418603
MD5 bb6fcd75ff0c5cdb267c2e281bb42133
BLAKE2b-256 b3257ba4a4a7a19c05d880a687167fac07d54cf506f3bcfbf7cbe59d015fc1a6

See more details on using hashes here.

File details

Details for the file todoing-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: todoing-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for todoing-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a0c1c90744e0d50ea7b659b0e1ccaee02ca91170ea7f4e6f2b28651f44035aa4
MD5 61145601266cfee5c4cee54bdcd0b32f
BLAKE2b-256 9ee55da8f44c3ea0d7d183ea66322a05d722dc401cc9a1401bd7be07ca39ba99

See more details on using hashes here.

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