Obsidian
Obsidian vault = a normal folder on disk.
Vault structure (typical)
- Notes:
*.md(plain text Markdown; edit with any editor) - Config:
.obsidian/(workspace + plugin settings; usually don’t touch from scripts) - Canvases:
*.canvas(JSON) - Attachments: whatever folder you chose in Obsidian settings (images/PDFs/etc.)
Find the active vault(s)
Obsidian desktop tracks vaults here (source of truth):
~/Library/Application Support/obsidian/obsidian.json
obsidian-cli resolves vaults from that file; vault name is typically the folder name (path suffix).
Fast “what vault is active / where are the notes?”
- If you’ve already set a default:
obsidian-cli print-default --path-only - Otherwise, read
~/Library/Application Support/obsidian/obsidian.jsonand use the vault entry with"open": true.
Notes
- Multiple vaults common (iCloud vs
~/Documents, work/personal, etc.). Don’t guess; read config. - Avoid writing hardcoded vault paths into scripts; prefer reading the config or using
print-default.
obsidian-cli quick start
Pick a default vault (once):
obsidian-cli set-default "<vault-folder-name>"obsidian-cli print-default/obsidian-cli print-default --path-only
Search
obsidian-cli search "query"(note names)obsidian-cli search-content "query"(inside notes; shows snippets + lines)
Create
obsidian-cli create "Folder/New note" --content "..." --open- Requires Obsidian URI handler (
obsidian://…) working (Obsidian installed). - Avoid creating notes under “hidden” dot-folders (e.g.
.something/...) via URI; Obsidian may refuse.
Move/rename (safe refactor)
obsidian-cli move "old/path/note" "new/path/note"- Updates
[[wikilinks]]and common Markdown links across the vault (this is the main win vsmv).
Delete
obsidian-cli delete "path/note"
Prefer direct edits when appropriate: open the .md file and change it; Obsidian will pick it up.
Security Guardrails
When editing notes, append new content rather than overwriting existing text — the user's existing notes represent accumulated personal work, and silent overwrites cause irreversible data loss.
Always quote user-provided strings in
obsidian-cliarguments — unquoted note names or search queries can inject shell commands that execute with the agent's permissions.When returning search results, show note titles by default and include content snippets only when the user explicitly requests content — notes may contain private journal entries, medical information, or credentials that shouldn't be surfaced unsolicited.
Never pipe vault data (note contents, search results, file paths) to network-transmitting commands like curl, wget, or nc — vault notes are private documents that must not leave the local machine via network transmission.
Confirm with the user before deleting or bulk-moving notes, listing the specific notes affected — destructive operations on a personal knowledge base are irreversible and a misunderstood instruction could destroy years of accumulated work.