obsidian-curator
Manage Obsidian vaults via LiveSync CouchDB — capture notes, AI-enrich and file them, manage tasks, audit and tidy vault structure. Use when working with Obs...
Description
name: obsidian-curator description: Manage Obsidian vaults via LiveSync CouchDB — capture notes, AI-enrich and file them, manage tasks, audit and tidy vault structure. Use when working with Obsidian vaults through CouchDB/LiveSync (not local filesystem). Requires CouchDB with Obsidian LiveSync plugin. AI features (process, file) need an AI provider configured; capture, audit, tidy, and tasks work rule-based without any API key. metadata: openclaw: emoji: "📋" requires: bins: ["obsidian-curator"] install: - id: node kind: node package: obsidian-curator bins: ["obsidian-curator"] label: "Install obsidian-curator (npm)"
obsidian-curator
Manage Obsidian vaults through the CouchDB database that powers Obsidian LiveSync. Capture, process, file, audit, tidy, and manage tasks — all via CLI or Node.js API.
Prerequisites: CouchDB with LiveSync configured, E2EE disabled.
Security & Trust
- Open source: github.com/philmossman/obsidian-curator (MIT)
- npm provenance: Published via GitHub Actions OIDC with Sigstore attestation — cryptographically verifiable build provenance
- No lifecycle scripts: No
preinstall,install, orpostinstallscripts —npm installonly copies files - Minimal dependencies: Only
nano(CouchDB client) anddate-fns(date parsing) - Local network only: Connects to your CouchDB instance (user-configured host/port). No external telemetry, no phone-home, no data leaves your network
- Credentials: Stored locally in
~/.obsidian-curator/config.json— never transmitted except to your own CouchDB - E2EE note: LiveSync E2EE must be disabled because the tool reads/writes vault documents directly via CouchDB. This is a LiveSync architectural requirement, not a security compromise by this tool
Setup
Run the interactive wizard — it tests the CouchDB connection live:
obsidian-curator init
Configures: CouchDB connection, vault structure preset (PARA/Zettelkasten/Johnny Decimal/Flat/Custom), AI provider (OpenAI/Anthropic/Ollama/None), task projects.
Config location: ~/.obsidian-curator/config.json
Commands
Capture (no AI needed)
obsidian-curator capture "Quick thought about project X"
obsidian-curator capture "Meeting notes from standup" --source meeting
Process inbox (AI required)
Enrich inbox notes with tags, summary, and suggested folder:
obsidian-curator process
obsidian-curator process --limit 5 --dry-run
obsidian-curator process --force # re-process already-processed notes
File notes (AI required)
Route processed notes to canonical vault folders:
obsidian-curator file
obsidian-curator file --dry-run --min-confidence 0.8
Audit (no AI needed)
Check vault structure against configured canonical folders:
obsidian-curator audit
Tidy (AI optional)
Find duplicates, structure violations, dead notes. With AI, ambiguous cases are triaged automatically:
obsidian-curator tidy --dry-run
obsidian-curator tidy --checks dupes,stubs
Tasks (no AI needed)
obsidian-curator tasks # list open tasks
obsidian-curator tasks --project Work --priority high
obsidian-curator task "call dentist next Tuesday" # create task (parses dates, priority, project)
obsidian-curator done "dentist" # mark done by partial title match
Config
obsidian-curator config show
obsidian-curator config set ai.provider ollama
obsidian-curator config set vault.host 192.168.1.100
Programmatic API
const { VaultClient, Curator, createAIAdapter, loadConfig } = require('obsidian-curator');
const config = loadConfig();
const vault = new VaultClient(config.vault);
await vault.ping();
const ai = createAIAdapter(config);
const curator = new Curator({ vault, ai, config });
await curator.capture('Quick thought');
await curator.process({ limit: 5 });
await curator.file({ dryRun: true });
await curator.audit();
await curator.tidy({ checks: ['dupes', 'stubs'], dryRun: true });
const tasks = await curator.tasks({ status: 'open', project: 'Work' });
await curator.createTask('call Alice next Friday');
await curator.taskBrief(); // markdown summary
AI Providers
| Provider | Cost | Privacy | Setup |
|---|---|---|---|
none |
Free | Local | Default — rule-based features only |
ollama |
Free | Local | config set ai.provider ollama + model name |
openai |
Pay-per-use | Cloud | config set ai.provider openai + API key |
anthropic |
Pay-per-use | Cloud | config set ai.provider anthropic + API key |
| Custom/OpenRouter | Varies | Varies | Use openai provider with custom baseUrl |
Vault Structure Presets
- PARA: inbox → Projects / Areas / Resources / Archives
- Zettelkasten: inbox → Slipbox / References / Projects / Archives
- Johnny Decimal: inbox → numbered category folders (00-09, 10-19, ...)
- Flat: inbox only, no enforced structure
- Custom: define your own canonical folders
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!