- name
- topydo
- description
- Manage todo.txt tasks using topydo CLI. Add, list, complete, prioritize, tag, and organize tasks with dependencies, due dates, recurrence, and projects. Use for any task management, todo lists, or when the user mentions tasks, todos, or todo.txt. Requires Python 3 and pip. Works on macOS, Linux, and Windows.
- license
- MIT
- metadata
- author
- github.com/bastos
- version
- 2.0
topydo - Todo.txt Task Manager
topydo is a powerful CLI for managing tasks in the todo.txt format. It supports dependencies, due dates, start dates, recurrence, priorities, projects, and contexts.
Task Format Reference
(A) 2025-01-11 Task text +Project @Context due:2025-01-15 t:2025-01-10 rec:1w star:1
│ │ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ └─ Star marker
│ │ │ │ │ │ │ └─ Recurrence
│ │ │ │ │ │ └─ Start/threshold date
│ │ │ │ │ └─ Due date
│ │ │ │ └─ Context
│ │ │ └─ Project
│ │ └─ Task description
│ └─ Creation date
└─ Priority (A-Z)Installation
Homebrew (macOS, preferred)
brew install topydopip (all platforms)
pip3 install topydoWith optional features:
pip3 install 'topydo[columns,prompt,ical]'apt (Ubuntu/Debian)
sudo apt install python3-pip && pip3 install topydoConfiguration
Config file locations (in order of precedence):
topydo.confor.topydo(current directory)~/.topydoor~/.config/topydo/config/etc/topydo.conf
Example ~/.topydo:
[topydo]
filename = ~/todo.txt
archive_filename = ~/done.txt
colors = 1
identifiers = text
[add]
auto_creation_date = 1
[sort]
sort_string = desc:importance,due,desc:priority
ignore_weekends = 1Adding Tasks
Basic task:
topydo add "Buy groceries"With priority (A is highest):
topydo add "(A) Urgent task"With project and context:
topydo add "Write report +ProjectX @office"With due date (absolute):
topydo add "Submit proposal due:2025-01-15"With due date (relative):
topydo add "Call mom due:tomorrow"With due date (weekday):
topydo add "Weekly review due:fri"With start/threshold date:
topydo add "Future task t:2025-02-01"With recurrence (weekly):
topydo add "Water plants due:sat rec:1w"With strict recurrence (always on 1st of month):
topydo add "Pay rent due:2025-02-01 rec:+1m"With dependency (must complete before task 1):
topydo add "Write tests before:1"As subtask of task 1:
topydo add "Review code partof:1"Listing Tasks
List all relevant tasks:
topydo lsInclude hidden/blocked tasks:
topydo ls -xFilter by project:
topydo ls +ProjectXFilter by context:
topydo ls @officeFilter by priority:
topydo ls "(A)"Filter by priority range:
topydo ls "(>C)"Filter tasks due today:
topydo ls due:todayFilter overdue tasks:
topydo ls "due:<today"Filter tasks due by Friday:
topydo ls "due:<=fri"Combine multiple filters:
topydo ls +ProjectX @office due:todayExclude context:
topydo ls -- -@waitingSort by priority:
topydo ls -s prioritySort descending by due date, then priority:
topydo ls -s desc:due,priorityGroup by project:
topydo ls -g projectLimit to 5 results:
topydo ls -n 5Custom output format:
topydo ls -F "%I %p %s %{due:}d"Output as JSON:
topydo ls -f jsonCompleting Tasks
Complete task by ID:
topydo do 1Complete multiple tasks:
topydo do 1 2 3Complete all tasks due today:
topydo do -e due:todayComplete with custom date:
topydo do -d yesterday 1Priority Management
Set priority A:
topydo pri 1 ASet priority for multiple tasks:
topydo pri 1 2 3 BRemove priority:
topydo depri 1Tagging Tasks
Set due date:
topydo tag 1 due tomorrowStar a task:
topydo tag 1 star 1Remove a tag:
topydo tag 1 dueSet custom tag with relative date:
topydo tag -r 1 review 2wModifying Tasks
Append text to task:
topydo append 1 "additional notes"Append due date:
topydo append 1 due:fridayEdit task in text editor:
topydo edit 1Edit all tasks in project:
topydo edit -e +ProjectXDeleting Tasks
Delete by ID:
topydo del 1Delete multiple:
topydo del 1 2 3Delete by expression:
topydo del -e completed:todayDependencies
Add dependency (task 2 depends on task 1):
topydo dep add 2 to 1Task 2 is part of task 1:
topydo dep add 2 partof 1List what depends on task 1:
topydo dep ls 1 toList what task 1 depends on:
topydo dep ls to 1Remove dependency:
topydo dep rm 2 to 1Visualize dependencies (requires graphviz):
topydo dep dot 1 | dot -Tpng -o deps.pngPostponing Tasks
Postpone by 1 week:
topydo postpone 1 1wPostpone by 3 days:
topydo postpone 1 3dPostpone including start date:
topydo postpone -s 1 1wOther Commands
Sort the todo.txt file:
topydo sortRevert last command:
topydo revertShow revert history:
topydo revert lsList all projects:
topydo lsprjList all contexts:
topydo lsconArchive completed tasks:
topydo archiveRelative Dates
today,tomorrow,yesterday- Weekdays:
mon,tue,wed,thu,fri,sat,sun - Periods:
1d(days),2w(weeks),3m(months),1y(years) - Business days:
5b(excludes weekends)
Sort/Group Fields
priority,due,creation,completedimportance,importance-avgproject,context,text,length
Prefix with desc: for descending. Example: desc:importance,due
Tips
- Use a clean, human-readable format to present results to the user
- Enable stable text IDs: set
identifiers = textin config - Star important tasks: add
star:1tag - Hidden tags by default:
id,p,ical - Importance = priority + due date proximity + star status