| name | obsidian |
| description | Obsidian vault CLI — read, write, search, capture, triage, enrich, and ingest into the vault at ~/.alluka/vault/. Prefer this CLI over the Write tool for vault paths so the search index, frontmatter schema, and triage hooks stay in sync — plain Write still works and the memory system reads any valid markdown at the canonical paths regardless of how it was produced. Use when user asks about notes, vault, captures, inbox triage, note search, or importing scout/learnings data. |
| allowed-tools | Bash(obsidian:*) |
| argument-hint | [command] [args] |
| keywords | obsidian, vault, notes, capture, triage, search, inbox, knowledge, markdown |
| category | productivity |
| version | 0.1.0 |
Obsidian - Vault CLI
Read, write, search, and manage your Obsidian vault from the terminal.
Install
cd plugins/obsidian
go build -ldflags "-s -w" -o bin/obsidian ./cmd/obsidian-cli
ln -sf $(pwd)/bin/obsidian ~/.alluka/bin/obsidian
When to Use
Rule of thumb: if the target path starts with ~/.alluka/vault/, prefer this CLI. Direct Write still produces valid notes the memory reader surfaces, but skips index updates, frontmatter validation, and triage hooks — so obsidian search, obsidian enrich, and obsidian maintain will see stale state until the index is rebuilt.
- User asks to read, write, or search notes in their Obsidian vault →
obsidian read | create | append | search
- User wants to capture a fleeting note or idea →
obsidian capture
- User wants to triage their inbox →
obsidian triage
- User wants to import scout intel or orchestrator learnings into the vault →
obsidian ingest
- User asks about note health, stale notes, or orphan detection →
obsidian maintain / obsidian enrich
- User wants to sync website metadata into the vault →
obsidian sync
Path conventions (so preflight's Narrative Context surfaces the note)
- Today's log →
daily/YYYY-MM-DD.md (starts with # <meaningful title> H1)
- Topic index →
mocs/<topic-slug>.md
- Session capture →
sessions/<slug>.md
- Fleeting →
inbox/ (auto via obsidian capture)
First H1 becomes the title shown in the preflight brief — make it descriptive.
Configuration
obsidian configure
obsidian configure show
obsidian doctor
Config lives at ~/.obsidian/config. Override with OBSIDIAN_CONFIG_DIR.
Multi-vault
The CLI supports two named vaults: nanika (default) and second-brain. Configure both in ~/.obsidian/config:
vault_path=/path/to/nanika-vault
second_brain_path=/path/to/second-brain
Override either path with env vars: OBSIDIAN_VAULT_PATH or OBSIDIAN_SECOND_BRAIN_PATH.
Commands
Read
obsidian read daily/2026-03-25.md
obsidian read daily/2026-03-25.md --json
obsidian read inbox/20260419.md --vault second-brain
Append
obsidian append daily/2026-03-25.md "New task"
obsidian append daily/2026-03-25.md --section "## Tasks" "- buy milk"
echo "piped text" | obsidian append daily/2026-03-25.md
Capture
Creates a fleeting note in inbox/.
obsidian capture "rough idea about search"
obsidian capture "link worth reading" --source https://example.com
echo "piped text" | obsidian capture
obsidian capture "draft" --json
obsidian capture "quick idea" --vault second-brain
Create
obsidian create projects/new-idea.md --title "New Idea" --type idea
obsidian create projects/new-idea.md --tags "go,cli" --status draft
obsidian create projects/new-idea.md --summary "Short description"
obsidian create projects/new-idea.md --context-set "work"
obsidian create projects/new-idea.md --template "99 Templates/idea.md"
List
obsidian list
obsidian list daily/
obsidian list --json
obsidian list inbox/ --vault second-brain
Search
obsidian search "project ideas"
obsidian search "golang" --mode keyword
obsidian search "concurrency" --mode semantic
obsidian search "interfaces" --mode hybrid --json
obsidian search "meeting notes" --vault second-brain
Recall
Surface notes related to a seed query using 2-hop BFS from lexical/frontmatter matches, scored by distance, recency, and tags. Useful for recovering task context mid-session without re-reading artifacts.
obsidian recall "BFS algorithm"
obsidian recall "BFS algorithm" --limit 10
obsidian recall "BFS algorithm" --format json
obsidian recall "BFS algorithm" --format markdown
obsidian recall "BFS algorithm" --format paths
obsidian recall "BFS algorithm" --socket /tmp/obs.sock
obsidian recall "BFS algorithm" --no-fallback
Default: --limit 5 --format brief.
Fallback note: if the RPC socket is unavailable, recall falls back to in-process BFS. Pass --no-fallback to disable this and return an error instead.
Index
Build or update the search index (run before semantic/hybrid search).
obsidian index
obsidian index --json
Sync
Sync website content metadata into vault notes.
obsidian sync
obsidian sync --dry-run
obsidian sync --force
Enrich
Suggest links, tags, and detect orphan notes.
obsidian enrich
obsidian enrich --apply
obsidian enrich --json
Maintain
Vault health checks and reporting.
obsidian maintain
obsidian maintain --stale-days 60
obsidian maintain --fix
obsidian maintain --json
Ingest
Import data from external sources into vault notes.
obsidian ingest --source scout
obsidian ingest --source scout --topic "ai-models"
obsidian ingest --source scout --since 7d
obsidian ingest --source learnings
obsidian ingest --source learnings --domain dev
obsidian ingest --source learnings --since 30d
obsidian ingest --source scout --dry-run
obsidian ingest --source scout --json
Sources read from:
scout: ~/.scout/intel/
learnings: ~/.alluka/learnings.db
Triage
Review and process notes in inbox/.
obsidian triage
obsidian triage --older 7d
obsidian triage --auto
obsidian triage --auto --dry-run
obsidian triage --auto --json
obsidian triage --auto --quiet
Resurface
Surface old notes relevant to a query.
obsidian resurface "golang patterns"
obsidian resurface "golang patterns" --older 14d --limit 3
obsidian resurface --random
obsidian resurface --random --older 30d --json
Default: --older 7d --limit 5.
Auto-Capture
Capture learnings, workspace artifacts, and scout intel into the vault in one pass.
obsidian auto-capture
obsidian auto-capture --since 7d
obsidian auto-capture --dry-run
obsidian auto-capture --json
Sources: ~/.alluka/learnings.db, ~/.alluka/workspaces/, and scout intel.
Promote
Detect clusters of related captures and merge into canonical notes.
obsidian promote
obsidian promote --dry-run
obsidian promote --json
Cluster
Find 3+ untagged captures about unnamed concepts via embedding similarity.
obsidian cluster
obsidian cluster --dry-run
obsidian cluster --json
Canonicalize
Create canonical notes from detected clusters with LLM-synthesized summaries.
obsidian canonicalize
obsidian canonicalize --dry-run
obsidian canonicalize --json
obsidian canonicalize --mode per-capture --capture inbox/20260319.md
Health
Vault diagnostics: inbox depth, orphans, stale captures, classification distribution, link density.
obsidian health
obsidian health --json
Global Options
--json Machine-readable JSON output
--vault <nanika|second-brain> Target vault (default: nanika)
--help, -h Show help
--version Show version
Multi-vault
Use --vault second-brain on any command to target the second vault configured as second_brain_path.
obsidian capture "idea" --vault second-brain
obsidian list --vault second-brain
obsidian search "golang" --vault second-brain
obsidian triage --vault second-brain
Both vaults must be configured before use:
obsidian configure
Or set OBSIDIAN_SECOND_BRAIN_PATH=/path/to/second-brain in your environment.
Cron Setup
Run triage hourly, only output on activity:
0 * * * * /usr/local/bin/obsidian triage --auto --quiet 2>&1