An Obsidian runbook with a nightly AI filing job
I keep fixes, incidents and decisions in a Git-tracked Obsidian vault. A nightly AI job connects new notes, while a wrapper reverts any edits it makes to existing notes.
Results
818runbook notes in one searchable vault
490commits, so every change can be reviewed
186gardener commits over 76 nights
26commits that retract or correct a claim
The problem
Fixes, task cards and daily logs lived in separate places and rarely linked up. An AI could do the linking, but I didn't want a model rewriting notes I depend on during an outage, with no record of what it changed.
What I did
- A Git-tracked Obsidian vault linking fixes, incidents and decisions, so I can give models the relevant notes and earlier reasoning.
- A nightly gardener at 23:59: a headless Claude Code run reads the day's notes and may create a few new notes that connect related work.
- A create-only wrapper: it snapshots the vault first, reverts any AI edit to an existing note, keeps my uncommitted work and commits new files under the gardener's own Git author.
- Scripts mirror the task board before the AI run and file each new note into its topic index afterward.
- Sunday checks: a lint report for broken links and orphan notes, and a self-review where the gardener suggests changes that I accept or drop.
What I took from it
One night the gardener tried to edit two index notes and a graph file. The wrapper reverted all three. That run showed the create-only restriction held when the model went beyond its instructions.