Introduction
Taskwarrior is a mature, open-source task management tool designed for the terminal. It stores tasks as structured data with attributes like project, priority, tags, and due dates, then provides flexible filtering, sorting, and reporting to keep you on top of your work.
What Taskwarrior Does
- Manages tasks with rich metadata: project, priority, tags, due dates, recurrence
- Filters and sorts tasks using a powerful query language
- Tracks task dependencies and blocks/blocked-by relationships
- Generates built-in and custom reports with configurable columns
- Syncs tasks across devices via Taskserver or cloud-based alternatives
Architecture Overview
Taskwarrior stores tasks as JSON objects in a local flat-file database. Each task carries a UUID, status, and arbitrary user-defined attributes (UDAs). The CLI parses a domain-specific filter language that supports boolean logic, date math, and regex matching. Hooks written in any scripting language trigger on task add, modify, or complete events.
Self-Hosting & Configuration
- Install via system package manager or build from source with CMake
- Configuration lives in
~/.taskrcwith over 300 settings - Define custom attributes with User Defined Attributes (UDAs)
- Set up Taskserver (taskd) for multi-device sync over TLS
- Use hooks in
~/.task/hooks/for automation on task events
Key Features
- Expressive filter language:
task project:work priority:H due.before:eow list - Recurring tasks with flexible recurrence patterns
- Task annotations for attaching notes and context
- Urgency scoring algorithm that auto-prioritizes your task list
- Extensible hooks system for pre/post task modification scripts
Comparison with Similar Tools
- Todoist — cloud-based GUI app; Taskwarrior is fully local, terminal-native, and open source
- todo.txt — simple text file format; Taskwarrior offers structured data, dependencies, and reports
- Org Mode — Emacs-based; Taskwarrior is editor-agnostic and focused purely on task management
- Taskfile/Task — build runner; Taskwarrior manages personal and project to-do items, not build tasks
FAQ
Q: How do I sync tasks between machines? A: Set up Taskserver (taskd) or use third-party sync services like FreeCinc or Wingtask.
Q: Can Taskwarrior handle recurring tasks?
A: Yes. Use task add recur:weekly due:monday "Team standup" for automatic recurrence.
Q: Is there a GUI for Taskwarrior? A: Several community GUIs exist including VIT (terminal), Taskwarrior-TUI, and web-based Taskwarrior Web.
Q: Does Taskwarrior support time tracking? A: Not natively. Pair it with Timewarrior for integrated time tracking via hooks.