Vault-tasks

April 9, 2026 · View on GitHub

vault-tasks-tui is a TUI Markdown task manager.

It will parse any Markdown file or vault and display the tasks it contains.

Demo using ./test-vault

./test-vault
├── dir
│   ├── subdir
│   │   ├── test_1.md
│   │   ├── test_2.md
│   │   └── test_3.md
│   └── test_0.md
├── example_physics_class.md
├── example_vault-tasks_project.md
└── test.md

Demo explorer Demo calendar

Why

I made this tool because I wanted to integrate my task system directly inside my Second Brain.

Markdown tasks are very easy to integrate with knowledge/projects and are source-control-friendly.

I also spend most of my writing time in the terminal (Helix) and do not rely on heavy external software.

Features

  • Task Parser (see Usage)
    • Subtasks
    • Supports relative dates
    • special today tag and regular tags
    • descriptions, priority, completion percentage
  • Navigate vault
  • Edit tasks or open in default editor
  • Search through tasks (sort and filter)
  • Calendar view
  • Time Management tab (Pomodoro & Flowtime)

Installation

Cargo

cargo install vault-tasks-tui

Nix

You can get it from nixpkgs or directly from this repo's flake:

vault-tasks = {
  url = "github:louis-thevenet/vault-tasks";
  inputs.nixpkgs.follows = "nixpkgs";
};

And use the package in your configuration: inputs.vault-tasks.packages.${pkgs.stdenv.hostPlatform.system}.default

Build From Source

git clone https://github.com/louis-thevenet/vault-tasks.git
cd vault-tasks
cargo build --release

Usage

See vault-tasks-tui --help for basic usage.

Writing tasks

<!-- An example task in your markdown file -->

- [ ] An example task #tag tomorrow p1
      A description
      of this task
  - [x] A subtask today @today
  - [/] Another subtask 10/23 @today c50
    Partly done
  - [-] This one is canceled
TokenMeaning
- [ ] (- [x], ...)declares a task and sets its state
p1 (p10, ...)sets the priority
c50 (c99, c150, ...)Sets the completion percentage
#tagis a tag, a task can have zero or more tags
@today (@tod, @t)is a special tag that will mark the task as part of today's tasks
23/10 (2024/23/10)sets the due date with a literal date
today (tdy)sets the due date to today
tomorrow (tmr)sets the due date to tomorrow
a day of the week (monday or mon, etc)sets the due date to the next occurrence of that day
3d (3m, 3w, 3y, ...)means "in 3 days" and will set the due date accordingly
  • Task states are Done (x), To-Do ( ), Incomplete (/) and Canceled (-)

  • @today allows you mark a task for today while keeping a due date. It will show up with a ☀️ in vault-tasks-tui.

  • Relative dates are always replaced by literal dates once vault-tasks-tui is run. Thanks to this, vault-tasks-tui does not store any data except its config file.

  • Other tokens will be part of the title of that task

  • Descriptions and subtasks are declared using indents (see configuration)

This is what you will see in the preview of this README.md in vault-tasks-tui:

Default Key Map

Check the key map within the app with ?

General

KeyAlternate KeyAction
shift-hshift-←Previous tab
shift-lshift-→Next tab
ctrl-kctrl-↓Scroll up
ctrl-jctrl-↑Scroll down
page_downScroll one page down
page_upScroll one page up
qctrl-cQuit the application
?Open keybindings menu for the current tab

Explorer Tab

KeyAlternate KeyAction
k, shift-tabPrevious entry
j, tabNext entry
h, back_spaceLeave current entry
l,enterEnter current entry
Commands
KeyAction
sFocus search bar (enter or esc to unfocus)
oOpen selection in default editor
eQuickly edit selection
rReload vault
tMark task To-Do
dMark task Done
iMark task Incomplete
cMark task Canceled

Filter Tab

Commands
KeyAction
enterFocus/Unfocus search bar
Shift-sChange sorting mode

Calendar Tab

KeyAlternate KeyAction
h+1 day
l-1 day
j+7 days
k-7 days
Shift-jShift-↓+1 month
Shift-kShift-↑-1 month
n+1 year
Shift-n-1 year
Commands
KeyAction
tGoto Today

Time Management Tab

KeyAlternate KeyAction
kPrevious setting
jNext setting
Commands
KeyAction
spaceNext segment (skip current)
pPause timer
eEdit selected setting
shift-tabPrevious time management technique
tabNext time management technique

Modes

You can start already focused on a tab by using one of the CLI subcommands:

vault-tasks-tui explorer # is the default
# Or
vault-tasks-tui filter
vault-tasks-tui time
vault-tasks-tui calendar

You can also output the content of a vault in standard output using

vault-tasks-tui stdout

Example output:

vault-tasks-tui -v ./README.md stdout
README.md
‾‾‾‾‾‾‾‾‾
  Vault-tasks
  ‾‾‾‾‾‾‾‾‾‾‾
        Usage
        ‾‾‾‾‾
                Writing tasks
                ‾‾‾‾‾‾‾‾‾‾‾‾‾
                        ❌ An example task
                        📅 2025-06-16 (tomorrow) ❗1
                        #tag
                        A description
                        of this task

                                ✅ A subtask
                                ☀️ 📅 2025-06-15 (today)


                                ⏳ Another subtask
                                ☀️ 📅 2025-10-23 (in 4 months) [🟩🟩⬜️⬜️⬜️ 50%]
                                Partly done


                                🚫 This one is canceled

Configuration

Configuration is split in two files: core.toml and tui.toml which can be generated with vault-tasks-tui --generate-config. You can override the default settings, keybindings and colorscheme.

In particular, you can set a default vault path.

Default configuration files can be found in ./vault-tasks-core/.config/core.toml and ./vault-tasks-tui/.config/.

Contributing

Feel free to submit issues or pull requests. Contributions are welcome!