Dooit vs dstask
Price, platforms and features side by side. The table says where each price was read and when.
Where they differ
- Dooit is free. dstask is free.
- Only dstask lists a macOS app.
- dstask also covers Markdown.
In commonFree planLinuxWindowsOpen sourceKeyboard-firstTasks
At a glance
| Dooit | dstask | |
|---|---|---|
| Pricing | Free | Free |
| Starts at | Free | Free |
| Free plan | Free and open source under the MIT license, with no paid version. It is installed from PyPI, Conda, Arch Linux packages or a Nix flake. | The whole program is free and open source under the MIT license, with no paid edition. Sync runs over a git repository that you set up and host yourself. |
| Free trial | None listed | None listed |
| macOS | ||
| Windows | ||
| Linux | ||
| Made by | kraanzu (dooit-org) | Cal Bryant |
| Price read from | github.com | github.com |
| Checked | Oct 9, 2026 | Oct 9, 2026 |
Who each one suits
Dooit
- People who manage their tasks from a terminal
- Vim users who want familiar keybindings
- Tinkerers who like configuring tools in Python
dstask
- People who work in a terminal and are comfortable with git
- Taskwarrior users who want sync without running a sync server
- Keeping working notes and checklists alongside each task
Worth knowing
Dooit
- It runs in a terminal only; there is no graphical, web or mobile app.
- Customizing it means writing a Python config file.
- The documentation has no section on syncing tasks between devices.
- The docs list install methods (PyPI, Arch Linux, NixOS, Conda) rather than supported operating systems; the changelog includes fixes for Windows but does not mention macOS.
dstask
- Personal use only: the README lists collaboration as a non-feature.
- There is no GUI, web or mobile app in dstask itself; the FAQ points to a separate, early-stage community web GUI.
- Editing the same task on two machines without syncing can produce a git merge conflict that has to be resolved by hand.
- Tasks are not encrypted: the FAQ says encryption is not a design goal. Contexts are not synchronised between machines.
Key features
Dooit
- Terminal interface with Vim-like keys
- The app runs as a text interface in the terminal and uses Vim-like keybindings. Pressing ? opens a help menu listing every key currently bound.
- Workspaces and nested todos
- Todos are grouped into workspaces by topic. Workspaces can contain child workspaces, and a todo can hold sub-todos.
- Due dates, urgency and status
- A todo has a due date that accepts forms such as "1 jan 2025", one of four urgency levels, and a status of completed, pending or overdue. Words starting with @ act as tags.
- Recurrence and effort
- Recurrence is entered as an interval such as 1d or 1w, in minutes, hours, days or weeks. Effort is a plain number that can stand for points, time or a streak.
- Python configuration
- A Python config file sets keybindings, layout, the status bar, the dashboard, column formatters and themes, and custom CSS is supported.
- Plugins and a Python backend
- The separate Dooit Extras package adds utilities for customizing a setup, and the Workspace and Todo tables can be queried or changed from Python through SQLAlchemy.
dstask
- Git-based sync and undo
- Tasks are stored in a git repository, ~/.dstask by default. The sync command pulls then pushes, and undo reverts the last action with git revert, so there is no sync server to run.
- Contexts
- A context is a filter of tags and projects that narrows task listings and is also applied to new tasks. It is set with the context command or, per terminal, with the DSTASK_CONTEXT variable.
- Markdown note per task
- The note command opens a full markdown note for a task in your editor, where a checklist can track subtasks. The open command launches the URLs found in a task and its note in the browser.
- Priorities, projects, tags and due dates
- Tasks take a priority from P0 (critical) to P3 (low), a project, tags and a due date typed as a weekday, a relative day or a date. The default view sorts by priority, then creation date.
- Task states and review commands
- Start and stop mark tasks as active or paused. Commands such as show-resolved, show-projects and show-unorganised list completed tasks by week, project completion and untagged tasks.
- Import from Taskwarrior and GitHub
- The separate dstask-import tool loads a Taskwarrior export, which the docs call lossy, or pulls GitHub issues into dstask one-way using an API token.
Plans
Dooit
Free$0
The complete terminal app and the optional Dooit Extras package, installed with pip, Conda, yay on Arch Linux or Nix.
dstask
Free$0
The dstask binary and the dstask-import tool for Linux, macOS and Windows, from the GitHub releases page or unofficial Homebrew, AUR, Nix and FreeBSD packages.