| name | obsidian-cli |
| description | Work with Obsidian vaults using the official Obsidian CLI. Read, create, append, search, and manage notes, daily notes, properties, tags, tasks, sync, and more from the terminal. Use when the user mentions Obsidian, notes, vault, daily notes, or when working with markdown knowledge bases. Requires Obsidian desktop app running with CLI enabled in Settings > General. |
Obsidian CLI
Official Obsidian CLI for terminal vault operations. Requires Obsidian running (headless via xvfb works) with CLI enabled and insider/early access mode.
All parameters use key=value syntax: obsidian read path="folder/note.md". On headless Linux, prefix with DISPLAY=:5 (or whatever your xvfb display is).
Core Commands
Daily Notes
obsidian daily
obsidian daily:read
obsidian daily:append content="text"
obsidian daily:prepend content="text"
Reading and Writing Files
obsidian read path="folder/note.md"
obsidian create path="folder/note" content="# Title"
obsidian create path="folder/note" template="templatename"
obsidian append path="folder/note.md" content="text"
obsidian prepend path="folder/note.md" content="text"
obsidian move path="old/note.md" name="new-name"
obsidian delete path="folder/note.md"
obsidian delete path="folder/note.md" permanent
File Discovery
obsidian files
obsidian files ext=md
obsidian files folder="subfolder"
obsidian files total
obsidian folders
obsidian file path="folder/note.md"
Search
obsidian search query="search text"
obsidian search query="text" path="folder" limit=10
obsidian search query="text" format=json
obsidian search query="text" matches
obsidian search query="text" case
Links and Graph
obsidian backlinks path="note.md"
obsidian backlinks path="note.md" counts
obsidian links path="note.md"
obsidian unresolved
obsidian orphans
obsidian deadends
Properties (Frontmatter)
obsidian properties path="note.md"
obsidian property:read path="note.md" name="status"
obsidian property:set path="note.md" name="status" value="draft"
obsidian property:remove path="note.md" name="status"
obsidian aliases path="note.md"
Tags
obsidian tags
obsidian tags counts sort=count
obsidian tags path="note.md"
obsidian tag name="tagname"
Tasks
obsidian tasks
obsidian tasks all
obsidian tasks done
obsidian tasks path="note.md"
obsidian tasks daily
obsidian task path="note.md" line=5 toggle
Sync
obsidian sync
obsidian sync on
obsidian sync off
obsidian sync:status
obsidian sync:history path="note.md"
obsidian sync:read path="note.md" version=3
obsidian sync:restore path="note.md" version=3
obsidian sync:deleted
Templates
obsidian templates
obsidian template:read name="weekly-review"
obsidian template:read name="weekly-review" resolve title="My Note"
obsidian template:insert name="weekly-review"
Other Useful Commands
obsidian vault
obsidian vaults
obsidian outline path="note.md"
obsidian wordcount path="note.md"
obsidian recents
obsidian version
obsidian reload
Plugins
obsidian plugins
obsidian plugins:enabled
obsidian plugin:enable id="canvas"
obsidian plugin:disable id="canvas"
obsidian plugin:install id="name"
obsidian plugin:reload id="name"
Developer Commands
obsidian dev:screenshot path="screenshot.png"
obsidian eval code="app.vault.getFiles().length"
obsidian dev:console limit=20
obsidian dev:errors
Common Agent Patterns
Append to Daily Note with Linking
obsidian daily:append content="
## Reports
- [[reports/2026-02-10-morning|Morning Report]]
"
Create Note and Cross-Link
obsidian create path="reports/morning-report" content="# Morning Report"
obsidian daily:append content="- [[reports/morning-report|Morning Report]]"
Set Properties Programmatically
obsidian property:set path="note.md" name="status" value="draft"
obsidian property:set path="note.md" name="date" value="2026-02-10"
Setup
Requirements
- Obsidian desktop app installed and running (v1.12.0+ with insider/early access)
- CLI enabled: Settings > General > CLI toggle
insider and cli set to true in global config (~/.config/obsidian/obsidian.json on Linux, ~/Library/Application Support/obsidian/obsidian.json on macOS)
Headless Linux
Use deb package (not snap - snap confinement breaks CLI IPC). Run under xvfb. See references/headless-setup.md for config transfer details.
Multi-Vault
Use vault="Vault Name" parameter: obsidian vault="Notes" daily:read
Tips
- Parameter syntax: Always
key=value, not positional. Quote values with spaces: content="hello world"
- Pipe-friendly: Plain text output, works with grep/awk/jq
- JSON output:
format=json on search and other commands
- Headless prefix:
DISPLAY=:5 obsidian <command> on headless Linux
- Paths are vault-relative, not filesystem-relative
- Stderr noise: GPU errors on headless are harmless, filter with
2>/dev/null or grep