Menu

Integrations and internals IntegrationsVersion 0.13.0

Markdown vault

ot vault keeps a folder of Markdown files in two-way sync with your account, one file per project and one Obsidian Tasks line per task. Every edit becomes an ordinary change on your other devices, and theirs reach the files.

On this page
ot vault init ~/Notes/Tasks     # new or empty folder; --adopt accepts .md files
ot vault sync ~/Notes/Tasks     # --dry-run plans; --read-only pushes nothing
ot vault status ~/Notes/Tasks   # changed and conflict files, offline
ot vault watch ~/Notes/Tasks    # keep syncing until Ctrl+C

It needs a full token, and it is the one part of ot that keeps data locally: the files and .opentodo/state.json.

The files#

Inbox.md holds tasks without a project; each project is <name>.md, or the folder note <name>/<name>.md beside its sub-projects. Renaming a file renames the project, moving it into a folder nests it, a new .md file is a new project. A deleted file is written again.

---
opentodo-id: p-home
opentodo-color: "#22c55e"
opentodo-icon: house
aliases: [flat]
---

Things for the flat. The task lines sync with OpenTodo; this paragraph stays here.

- [ ] Book the plumber ๐Ÿ“… 2026-10-25 [time:: 09:00] [deadline:: 2026-10-30] [estimate:: 45m] โซ #errands โ›” t-home2 ๐Ÿ†” t-home1
- [ ] Fix the boiler ๐Ÿ”บ [origin:: https://github.com/acme/flat/issues/7] [tracked:: 1h20m] ๐Ÿ†” t-home2
  Call before 9.

  * [ ] find the manual
  - [ ] Order the part ๐Ÿ›ซ 2026-10-22 ๐Ÿ†” t-home3
- [ ] Pay rent ๐Ÿ“… 2026-11-01 ๐Ÿ” every month #bills ๐Ÿ†” t-home4
- [x] Return the drill โœ… 2026-10-19 ๐Ÿ†” t-home5

## Ideas

- a new lamp
- paint the hall

## Weekend

- [ ] Clean the windows [someday:: true] [evening:: true] ๐Ÿ†” t-home6
Field Meaning
๐Ÿ“… [time:: ] [tz:: ] do-on date, time, zone
๐Ÿ›ซ [someday:: true] [deadline:: ] start, Someday, deadline
[estimate:: 45m] [evening:: true] estimate, This Evening
๐Ÿ”บ โซ ๐Ÿ”ผ priority 1โ€“3 (๐Ÿ”ฝ โฌ read as 4)
๐Ÿ” repeat rule (when done: after completion)
#tag โ›” โœ… ๐Ÿ†” label, blocked by, done date, id
[origin:: ] [location:: ] [tracked:: ] [field:Name:: ] read-only

A line without ๐Ÿ†” creates a task. Indented lines are subtasks, other indented text the note. A ## heading over task lines is a section. Unknown text (โณ, [[links]]) and prose stay.

In Obsidian#

Make the vault a sub-folder of your Obsidian vault and install Tasks. With Dataview:

TASK FROM "Tasks" WHERE !completed AND deadline <= date(today) + dur(7 days)

Merging#

Since the last sync Result
Changed in the file or the app the change reaches the other side
Same field changed on both the app wins; the line goes to <file>.conflict.md
Line removed, task unchanged task trashed
Line removed, task changed line written back
Project archived file removed, or renamed .conflict.md if edited

Limits#

1 MB and 5,000 task lines per file, 20,000 tasks, 64 KB per note. Over a limit, nothing is written or sent.

Encrypted accounts#

Run ot encryption unlock first: the server sees only ciphertext, but the files are plain text. Run ot encryption lock when done.

Edit this page on GitHub