How eno works.
eno reads a folder of markdown once, indexes its structure — frontmatter, wikilinks, tags, headings — into a small SQLite database, and answers questions from that index instead of re-reading files. Below: the pipeline, then what it surfaces, shown over a real demo vault you can run yourself.
One index, many surfaces
Everything downstream reads the index, never the whole vault. Queries return paths and ~1 KB excerpts; the only time a full note is read is when you explicitly ask for one. That's what keeps it cheap enough to put behind an agent.
Gardening output is written back into the vault as notes under
9 Vault Health/ — wikilinkable and graph-visible, so the
vault stays its own dashboard. eno suggests; it never auto-merges or
deletes.
What it surfaces
These four views come straight from running eno over the shipped demo vault — no LLM required. The chart forms and colours were chosen with vizier: horizontal bars for ranked magnitudes, divided bars for part-to-whole, a colourblind-safe blue/orange split, and label ink validated to WCAG AA contrast.
Substantial notes that nothing links to — the biggest ones are usually the most-buried important work, not junk. eno ranks them by size so you resurface the gold first. vizier form: bar chart · Magnitude / Ranking
[[Systems Thinking]]) — the real bugs
A raw "broken links" count would flag all 26 as errors. eno separates the 23 intentional concept-seeds from the 3 genuine near-misses — so you fix what's actually broken and leave the groundwork alone. vizier form: divided bar · Part-to-whole · blue/orange is colourblind-safe
origin + stage
missing a required field — incomplete, not an error
77% of the vault has complete frontmatter. eno tells you exactly which notes and which fields are missing, so the contract is enforced by suggestion, never by rewriting your notes. vizier form: divided bar · Part-to-whole (honest where a pie would mislead)
Pages with high out-degree, low in-degree, and a recent touch — where the
vault is actively reaching for new ground. Score is
(out − in) · e−age/halflife; the well-linked hubs
correctly score negative and drop out.
vizier form: bar chart · Magnitude / Ranking
Try it in two minutes
The repo ships a small synthetic vault at
examples/demo-vault
so you can reproduce everything above without pointing eno at your own
notes yet.
$ pip install enowiki $ git clone https://github.com/lavallee/eno $ eno --vault eno/examples/demo-vault index $ eno --vault eno/examples/demo-vault hygiene $ eno --vault eno/examples/demo-vault orphans
Then point it at your own vault: export ENO_VAULT_DIR=~/vault
and drop the --vault flag. See the
README for the full
tour and the MCP setup
for wiring eno into a coding agent.