[[wikilinks]] and YAML frontmatter — the two building blocks Obsidian uses to structure a knowledge graph. Every note’s type field becomes a graph node label, and every frontmatter key whose values contain wikilinks becomes a typed graph edge. No plugins, no exports, no syncing: smolbren reads your vault directly from disk.
1
Find your vault path
Obsidian shows the full path to your vault in Settings → About, under the vault name at the top of the left sidebar.Common vault locations:
Copy the full absolute path — you’ll use it in the next step.
2
Register the vault
Run smolbren writes the registration to
smolbren vault add with a short name for the vault and its path. Pass --default to make it the vault smolbren uses when no --vault flag is given:~/.smolbren/config.json. You can register multiple vaults and switch between them with --vault <name>.To see all registered vaults:3
Build the index
Run
smolbren index to scan the vault, parse frontmatter and body text, build the BM25 full-text index, resolve wikilink edges, and write the index data to ~/.smolbren/vaults/obsidian/.Subsequent runs are incremental: smolbren compares content hashes and only re-processes changed files, so re-indexing a large vault after a few edits takes a fraction of a second.
4
Explore the ontology
After indexing, inspect what smolbren discovered about your vault’s structure.Node types — the unique values of the Edge types — the frontmatter keys that contained wikilinks, and how many edges each produced:These are the labels and relationship types you’ll use in Cypher queries. See Graph Queries for patterns.
type frontmatter key across all notes:Working with Obsidian frontmatter
Obsidian calls YAML frontmatter “Properties”. smolbren treats these properties as the schema of your knowledge graph:- The
typekey defines the node label for that note. - Any key whose value is a wikilink (or a list of wikilinks) becomes a relationship type, with the host note as the source and the linked note(s) as targets.
- All other scalar values (
status,created,url, etc.) are stored in thefrontmatterobject returned bysmolbren get.
Notes with no
type key are still indexed and searchable — they just don’t carry a node label and are only reachable via the catch-all Note label in Cypher.
Keeping the index fresh
Runsmolbren index again after you make changes in Obsidian. Because indexing is incremental, only modified files are re-processed:
--full:
smolbren index whenever you want the index to reflect the current state of your vault. Many users add it as a shell alias or a short script that runs before any search or query session.
The
.obsidian/ directory inside your vault — which stores Obsidian’s own configuration JSON files — is automatically skipped during indexing. Only .md files outside that directory are parsed.