# Tasks

Write tasks as checkbox lines in any note, then list, add and check them with the app or the loam CLI.

A task is a checkbox line in any note. Loam reads every task in your vault and lists them together, with their due date, priority and project. There is no separate task database: the line in your note is the task.

## Write a task

Start a list item with `[ ]` for an open task, or `[x]` for a done one. Any list marker works, and nested tasks count.

```markdown
---
project: Launch
---
## Tasks
- [ ] Ship the beta 📅 2026-10-20 #work ⏫
- [ ] Call Bob due:2026-10-22 !low
- [x] Write the plan ✅ 2026-10-17
```

## Add dates, priority and tags

- Due date: `📅 2026-10-20` or `due:2026-10-20`.
- High priority: `⏫` or `!high`. Low priority: `🔽` or `!low`.
- Done date: `✅ 2026-10-17`. Loam writes it when the task is checked.
- Tags: `#work` or `#work/calls`. A filter on `#work` also finds `#work/calls`.
- Project: the note's `project` property. Without one, the note's folder.

## Find your tasks in the app

- The task list has four views. Inbox shows open tasks without a date, Today shows overdue tasks and those due today, Upcoming lists the rest by date, and All Tasks groups every open task by note. Its menu filters by project or tag and shows done tasks.
- The Tasks panel in the right sidebar shows what is overdue or due today.
- Quick add writes the task to today's daily note, or to `Inbox.md` when daily notes are off.
- In a note, type `@` and pick a day, such as `@tomorrow` or `@fri`. It writes the due date.

Tasks that are notes of their own, with a status column, belong to a project. See [Projects](/docs/projects).

## Add and check tasks from the CLI

The CLI works on any vault. Pass `--vault` with the vault folder, or run it from inside the vault.

1. Add a task to a note. The note is created if it does not exist.
2. List the open tasks of one project.
3. Check a task off. Pass the `line` and the `text` that `tasks.list` returned.

```bash
loam --vault ~/Notes tasks.add path=Work/Launch.md text="Ship the beta 📅 2026-11-20 #work !high"
loam --vault ~/Notes tasks.list done=false project=Launch
loam --vault ~/Notes tasks.toggle path=Work/Launch.md line=8 text="Ship the beta #work"
```

## Commands

| Command | Arguments | What it does |
| --- | --- | --- |
| tasks.list | done (true or false), dueBefore, dueOn (a date or today), project, tag, path, text, filter (JSON) | Lists every task, sorted by due date, then priority. All arguments are optional. |
| tasks.add | path, text | Adds `- [ ] text` to the end of the note's `## Tasks` section, or to the end of the note. Creates the note if missing. |
| tasks.toggle | path, line, text | Checks or unchecks a task. It writes nothing if the line no longer holds that task. |

> **Tip:** For AI agents: `loam list` shows the `tasks.*` commands with their arguments.
