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)
todoing ls -q auth          # search by title/body/labels/status
todoing ls -r               # oldest first

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

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/bllyanos/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.1.0.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.1.0-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: todoing-1.1.0.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.1.0.tar.gz
Algorithm Hash digest
SHA256 f02249119cf7bd919a316d48259686d64ed2ec648febb5566e26e4479e01ceee
MD5 44a9c08c69d1522b9d60bbb1c573661c
BLAKE2b-256 51bb5de3f37e06c07438178fb8636d470765b074eea9ea17654eed810dc682da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: todoing-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.1 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 90b967b99e0f2084b1e52c46776d8f882378500183157858fa2ec25053626e70
MD5 11810e1904add64dea160bb2cc739337
BLAKE2b-256 ef9a0660e302fbbd08f6886335e92d8cd1ed1db5f5af81b101716eba66da8091

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