Obsidian Bases
- title
- Obsidian Bases
- type
- concept
- summary
- Obsidian's built-in database views over frontmatter โ YAML filters, formulas, and table views, used here as the vault's maintenance dashboard
- parent
- obsidian
- tags
- obsidian, pkm, tooling
- created
- 2026-07-22
- updated
- 2026-07-22
Bases is Obsidian's native answer to Dataview: a .base file declares filters, computed formulas, and named views over the frontmatter of every note in the vault, and Obsidian renders each view as a sortable table. Unlike Dataview it ships with the app and needs no plugin, and unlike Dataview the query language is YAML rather than a DSL, which makes a .base file readable by anything that can parse YAML โ including whatever ends up serving the vault.
A view is embedded into a note like any other block: ![[wiki.base#Orphans (no inbound links)]].
What this vault uses it for
wiki.base at the vault root scopes itself to markdown files in wiki/ or toolbox/ and defines four formulas over each note:
formulas:
age_days: (today() - file.ctime).days.round(0)
stale_days: (today() - file.mtime).days.round(0)
backlink_count: file.backlinks.length
link_count: file.links.length
Five views build on those: All Pages, Orphans (no inbound links), Stale Pages, By Type, and Recent. The root index.md embeds four of them, which is what makes the front page a dashboard rather than a table of contents.
The filter vocabulary in use is small โ file.ext, file.inFolder(), file.name !=, file.backlinks.length == 0 โ plus groupBy, order, limit, and Average summaries. That narrowness is the reason the vault-site spec in meta/ treats a Bases interpreter as tractable: everything the five views need is already computed when a site walks the vault, so the subset can be reimplemented without implementing Bases.
The orphan view has never worked
Orphans (no inbound links) filters on file.backlinks.length == 0 and has never returned a row. wiki/index.md links to every wiki page except itself and the log, so every page has at least one backlink by construction. The view is not broken; the metric it measures is meaningless as long as catalog pages are counted.
Obsidian gives no way to exclude a page from backlink counting, which is why the vault half-fixed this by hand: the Stale Pages view filters out file.name != "index" and file.name != "log" while the orphan view does not. CLAUDE.md now marks those pages type: catalog and type: log so a consumer that can filter โ a site, a script โ has something explicit to filter on. Inside Obsidian the view stays empty.
Related: obsidian, files-as-graph-database, llm-wiki-pattern.