ForgeObsidianBrain
Analytics and capture layer for an AI's Obsidian vault. Auto-discovers vaults, manages note CRUD operations, captures fleeting thoughts, resurfaces forgotten knowledge, with fuzzy matching, regex patterns, and case-insensitive search.
Security Note: See SECURITY.md for full security model. This skill operates entirely locally with no network access.
Installation
# Clone or copy to your OpenClaw skills folder
cp -r skills/forge-obsidian-brain ~/.openclaw/workspace/skills/
# Make executable
chmod +x ~/.openclaw/workspace/skills/forge-obsidian-brain/scripts/brain.js
# Set up alias (optional)
alias brain="node ~/.openclaw/workspace/skills/forge-obsidian-brain/scripts/brain.js"
Configuration
Set the default vault path via environment variable:
export OBSIDIAN_VAULT="$HOME/obsidian-vault"
Or specify --vault <path> for any command.
The skill auto-discovers vaults by:
- Checking
OBSIDIAN_VAULTenvironment variable - Reading Obsidian's config (
~/.config/obsidian/obsidian.json) - Falling back to
~/obsidian-vault
Commands
Core Commands
| Command | Description |
|---|---|
discover | Auto-detect vault location |
config | Show Obsidian configuration |
init | Create Brain folder structure |
sync | Bidirectional sync with memory folder |
Note CRUD
| Command | Usage |
|---|---|
read <path> | Read a note |
create <path> [content] | Create a new note |
update <path> [content] | Update existing note |
delete <path> | Delete a note |
list [folder] | List notes in folder |
search <query> | Search notes by content (case-insensitive by default) |
search <query> --fuzzy | Fuzzy search (typo-tolerant) |
search <query> --regex | Regex pattern search |
exists <path> | Check if note exists |
Capture Commands
Capture content to structured folders:
| Command | Description |
|---|---|
capture thought <text> | Quick thought → Brain/Thoughts/ |
capture research --url <url> --title <title> | Research ref → Brain/Research/ |
capture conversation --source <src> --id <id> | Chat log → Brain/Conversations/ |
Examples:
# Fleeting thought
brain capture thought "I should refactor the auth module"
# Research capture
brain capture research \
--url "https://martinfowler.com/articles/microservices.html" \
--title "Microservices Guide" \
--text "Key points about service boundaries"
# Conversation log
brain capture conversation \
--source telegram \
--id "12345" \
--text "User asked about distributed systems"
Resurface Commands
Find relevant or neglected notes:
| Command | Description |
|---|---|
resurface topic <query> | Fuzzy search with relevance scoring |
resurface stale --days <n> | Find notes untouched in N days |
Examples:
# Find notes about microservices
brain resurface topic "microservices"
# Find all notes older than 30 days
brain resurface stale --days 30 --limit 20
Options
| Flag | Description |
|---|---|
--vault <path> | Override vault location |
--frontmatter '<json>' | Add frontmatter to note |
--merge | Merge instead of replace frontmatter |
--overwrite | Allow overwriting existing notes |
--limit <n> | Limit results (default: 5) |
--dry-run | Preview sync without writing |
--days <n> | Days threshold for stale search |
--fuzzy | Use fuzzy matching for search |
--regex | Use regex pattern for search |
--case-sensitive | Force case-sensitive search |
Workflow Examples
Daily Brain Maintenance
# 1. Initialize structure (once)
brain init
# 2. Capture a thought
brain capture thought "Kubernetes selectors are just labels as queries"
# 3. Save research for later
brain capture research \
--url "https://distcc.github.io/" \
--title "Distributed Compilation"
# 4. Check for stale notes to review
brain resurface stale --days 14
# 5. Sync to memory folder
brain sync
Search and Resurface
# Case-insensitive search (new default)
brain search "OpenClaw"
# Fuzzy search - matches "opneclaw" to "openclaw"
brain search "opneclaw" --fuzzy
# Regex search
brain search "^# .* Title" --regex
# Case-sensitive search
brain search "OpenClaw" --case-sensitive
# Resurface topic with fuzzy matching
brain resurface topic distributed --limit 10
# Output:
# {
# "success": true,
# "query": "distributed",
# "totalMatches": 3,
# "shown": 3,
# "searchMode": "fuzzy",
# "results": [
# { "relativePath": "Brain/Research/...", "relevance": 5, "rank": 1, "matches": [...] },
# ...
# ]
# }
Folder Structure
After brain init, your vault gets these folders:
vault/
├── Brain/
│ ├── Thoughts/ # Quick captures
│ ├── Research/ # URL references
│ ├── Conversations/ # Chat logs
│ ├── Entities/ # Structured data
│ └── Relations/ # Connections
└── .obsidian/
└── ...
Implementation Details
- Vault Discovery: Cross-platform (Linux, macOS, Windows)
- Note Format: Markdown with YAML frontmatter
- Search: Uses grep for fast content matching
- Sync: Bidirectional between
~/.openclaw/workspace/memoryand vault Inbox - IDs: Base36 timestamps for collision-resistant filenames
Security
This skill operates entirely on the local filesystem with no network access:
- No external APIs — No network requests are made
- No data exfiltration — All data stays on your machine
- No arbitrary code execution —
execSyncis used only forgreptext search with strictly validated input - Plain source code — No obfuscation, all JavaScript is readable
See SECURITY.md for complete security documentation including data access patterns, credentials, and execution details.