Built on my own time
Aetherkeep
Behavioral enforcement system that makes AI memory deterministic, not aspirational
Loading the graph
The 373 notes that link to each other, and the 1,026 links between them, drawn from the vault's own links. Titles are left out: the vault is private.
- notes in the vault
- 1,598
- links between notes
- 1,026
- commits
- 2,867
- days with commits
- 96
After an autonomous agent destroyed an entire codebase, I built the system that prevents it from ever happening again.
7 behavioral hooks wrap every AI session in structural enforcement: identity injected at start in fixed order, escalating save pressure through the session, and exit blocked until context is documented. The AI has logged 35 self-observations about its own behavior across 150+ sessions. Not memory. Enforcement.
- Git-backed Obsidian vault
- MCP server
- Synced PC ↔ GitHub ↔ VPS
A session, enforced
Hooks run at five points in every AI session. They run whether or not the model remembers to.
- 1
Session starts
Identity and core context go in first, in a fixed order, about 500 tokens. Anything deeper is pulled through the MCP server when it is needed.
- 2
Every prompt
A reminder to save, which gets firmer the longer the session runs.
- 3
Every write
The note's structure is checked, and the change is committed to git in the background.
- 4
Compaction
State is marked before the context is compressed, and the core context goes in again afterwards.
- 5
Session ends
The session cannot close until working memory is updated and cleaned up.
One memory, three places
The vault lives in git. My PC, GitHub and the VPS where Rune runs hold the same copy, and every agent reaches it through the same MCP server.
My PC
Claude Code in my editor
GitHub
The vault's origin
VPS
Rune on Hermes Agent
MCP server
TypeScript, SQLite and sqlite-vec. Semantic search, graph traversal and context routing, offered to any agent as nine tools.
- aetherkeep_orient
- aetherkeep_context
- aetherkeep_search
- aetherkeep_search_by_tag
- aetherkeep_get
- aetherkeep_create
- aetherkeep_write
- aetherkeep_relate
- aetherkeep_status
In use since February
2,867 commits on 96 daysBusiest day: 11 May, with 196 commits.