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