MCPSERV.CLUB
Taskwarrior

Taskwarrior

Self-Hosted

Command‑line task manager for organized, efficient to-do lists

Stale(40)
0stars
0views

Overview

Discover what makes Taskwarrior powerful

Taskwarrior is a lightweight, command‑line driven task manager written in C++ that persists data to plain text files or SQLite. It exposes a rich, declarative query language and a set of command‑line utilities that can be scripted or wrapped by other programs. The core philosophy is “do what you need, then get out of the way,” which translates into a minimal runtime footprint and an API that can be composed with other tools (e.g., `jq`, `awk`, or custom shell scripts). Developers who need a high‑performance, deterministic task engine without the overhead of a web stack often choose Taskwarrior for its predictable behavior and extensible data model.

Declarative filtering & reporting

Project & tag hierarchy

Time tracking

Recurring tasks & alarms

Overview

Taskwarrior is a lightweight, command‑line driven task manager written in C++ that persists data to plain text files or SQLite. It exposes a rich, declarative query language and a set of command‑line utilities that can be scripted or wrapped by other programs. The core philosophy is “do what you need, then get out of the way,” which translates into a minimal runtime footprint and an API that can be composed with other tools (e.g., jq, awk, or custom shell scripts). Developers who need a high‑performance, deterministic task engine without the overhead of a web stack often choose Taskwarrior for its predictable behavior and extensible data model.

Key Features

  • Declarative filtering & reporting – Tasks are queried with a syntax similar to SQL, allowing complex predicates (+project:dev & !completed) that can be reused in custom reports.
  • Project & tag hierarchy – Projects are organized as a tree; tags can be attached to any task, enabling multi‑dimensional categorization.
  • Time tracking – Integrated with Timewarrior, it can record start/stop times and compute effort per task or project.
  • Recurring tasks & alarms – Supports cron‑style recurrence and file‑based alarm notifications that can trigger scripts or system notifications.
  • Extensible command set – The task binary accepts custom plugins written in C, Python, or any language that can read/write the task database.

Technical Stack

LayerTechnology
RuntimeC++ (GNU C++17), POSIX compliant
Data storagePlain text JSON‑like format (*.data) or optional SQLite 3
ConfigurationYAML/INI‑style .taskrc files, environment variables
Build systemAutotools (configure, make) with optional CMake support
PackagingDebian/Ubuntu packages, Homebrew formulae, RPMs, and source tarballs
TestingUnit tests with Google Test; integration tests via task CLI scripts

Taskwarrior ships as a single binary (task) that reads its configuration from ~/.taskrc. The binary parses the task database, applies filters, and writes back changes atomically. When SQLite is enabled, all reads/writes go through the native driver; otherwise, the text format is line‑oriented and lock‑free for concurrent reads.

Core Capabilities & APIs

  • Command‑line API – Every task subcommand (add, modify, delete, report) is a first‑class API that can be invoked from shell scripts or HTTP wrappers.
  • JSON outputtask _json returns the full task list as JSON, enabling integration with web services or other programming languages.
  • Filter language – The filter syntax (+project:dev & !completed) is parsed into an abstract syntax tree, which can be reused by third‑party parsers.
  • Hooks – Pre/post hooks (pre:, post:) allow developers to inject scripts before or after any command, facilitating CI pipelines or custom workflows.
  • RESTful wrappers – While Taskwarrior itself is CLI‑centric, community projects expose REST endpoints (e.g., taskd server) that translate HTTP calls into CLI commands.

Deployment & Infrastructure

Taskwarrior is intentionally minimal: it requires only a POSIX‑compatible shell and the task binary. For self‑hosting, developers can:

  • Containerize – A Docker image (ghcr.io/taskwarrior/task:latest) contains the binary and a minimal base OS, making it trivial to deploy in Kubernetes or Docker‑Compose setups.
  • Scale horizontally – Since each instance writes to its own database, scaling is achieved by sharding tasks per user or project and synchronizing via taskd or a custom sync layer.
  • High availability – The optional SQLite backend can be replicated using sqlite-sync or a shared filesystem; the text format is file‑based and can be versioned in Git for lightweight collaboration.

Integration & Extensibility

  • Plugin architecture – Developers can write plugins in C++ or any language that writes to the task database. The task binary discovers plugins at runtime via a $PATH lookup.
  • Webhooks & notifications – Hooks can trigger HTTP callbacks, send emails, or push to messaging platforms (Slack, Discord) when a task status changes.
  • Custom reports – The report command accepts user‑defined templates written in a lightweight templating language, allowing dynamic PDF or HTML exports.
  • Timewarrior & Taskshell – Native integration with the time‑tracking tool Timewarrior and shell extension Taskshell, enabling command chaining and context switching.

Developer Experience

  • Configuration – The .taskrc file is highly expressive, supporting variable substitution, conditional blocks, and command aliases. Documentation provides exhaustive examples for advanced use.
  • Community & Support – An active mailing list, IRC channel (#taskwarrior on Libera.Chat), and bi‑weekly community meetings foster rapid issue resolution. The codebase is open source under GPLv3, encouraging contributions.
  • Testing & CI – The upstream repository includes a comprehensive test matrix across Linux, macOS, and Windows (via WSL), ensuring reliability for developers targeting diverse platforms.

Use Cases

  1. Developer Task Tracking – Integrate task into CI pipelines to flag overdue tests or code reviews.
  2. Project Management for Small Teams – Use

Open SourceReady to get started?

Join the community and start self-hosting Taskwarrior today