Your markdown files are already your task system
CLI task manager where checkboxes are the database. Tasks live inside your PRDs, READMEs, and notes. No server, no GUI, no second system. Humans and AI agents read the same format.
npm install -g mdtask content_copy # Core Features - [x] MD-001 Basic CLI parser - [ ] MD-002 Add priority filtering !high - [ ] MD-003 Git-hook integration @v1.2 - [ ] MD-004 Documentation sweep #docs
$ mdtask list --pending ID TITLE PRIO TAGS MD-002 Add priority filtering HIGH - MD-003 Git-hook integration - v1.2 MD-004 Documentation sweep - #docs 3 tasks pending.
The format is the product
Every task is a markdown checkbox with an ID and inline metadata. Standard syntax, no extensions. Write it by hand, parse it with grep, read it with any LLM.
Status
Checkbox
ID
Unique key
Title
Plain text
Tags
#prefixed
Priority
!bang
Property
@key:val
The Three Pains
AI Visibility
LLMs and AI agents can't "see" inside your Jira or Linear without complex API setups. If your tasks are in the file, the agent already knows what to do.
# claude / codex / opencode ❯ Read docs/features/search.md and complete all marked #urgent
Zero Overhead
No new accounts. No "Second Brain" apps. If you have a code editor, you have a task manager. Tasks are version controlled with your code.
$ git commit \ -m "feat: finish CORE-01"
Single Source
Specs and backlogs stay in sync because they are the same document.
No more "the README says one thing, Jira says another."
# PRD - Search - [ ] API-10 Pagination - [x] API-11 Filters
Everything you need, nothing you don't
mdtask list mdtask view [id] mdtask done [id] mdtask open [id] mdtask move [id] [file] mdtask set [id] [meta] mdtask ids mdtask validate Got questions?
Is this an Obsidian plugin?
No, it's a standalone CLI. However, because it uses standard markdown, it works perfectly inside Obsidian, Logseq, or VS Code. It just reads your files.
Does it require a database?
The markdown files are the database. mdtask scans your folder, builds an in-memory index, and performs actions. No SQLite, no JSON stores.
How do I handle multi-user conflicts?
Use Git. Since tasks are lines of text, Git's merge logic handles conflicts naturally. If two people mark a task as done, it's a simple line merge.
What about performance with large repos?
mdtask uses multi-threaded regex scanning. It can parse 10,000 markdown files in under 200ms.
Start with the files you already have
Navigate to any project with markdown files and run the indexer. It will find existing checkboxes and offer to ID them.
cd my-project && mdtask ids Contribute
MDTASK is open source. We're looking for contributors to help with improved AI agent prompt templates and editor plugins.