Xen Canon · One System Decision

The Unified Executive-Function
Memory System for Xen

One coherent stack to serve all four scopes — long-term memory, knowledge notes, file-tree / asset / project organization, and tasks — readable and writable by the agent with zero human clicks, while staying human-viewable as a graph for qi. Judged against the Xen Commandments v50, where Commandment alignment is the deciding factor — not the raw scorecard total.

noauth defaultlocal-firstdata ownershipno-Chromiumblack + gold metallicNEVER GUESS

The Verdict

An Obsidian-anchored, three-layer stack — not a single app. Anytype scores higher on paper (33 vs 32), but loses on the one factor that decides it: its API needs a human to unlock the desktop app and is still a Developer Preview — a tap that violates Commandment 4. Obsidian's raw-filesystem path is the only candidate that is simultaneously zero-click, zero-auth, AND truly headless, it already IS qi's canon, and it keeps the native human Graph View. That is the win.
Layer 1 · StoreObsidian VaultPlain Markdown on local disk — already live in the Windows memory dir
Layer 2 · TaxonomyJohnny.Decimal + ZettelkastenDeterministic file-tree IDs + emergent [[wikilink]] recall
Layer 3 · BridgeSELmcp filesystem toolsread_file / write_file / list_directory — 0-auth, headless, 24/7
01

Comparison Matrix

Eight candidates × seven criteria, scored 1–5. Winner highlighted in gold; runner-up marked.

System Scopes Cross-Plat Local / noauth Agent Access Human View Linking Sync Total /35
Obsidian WinnerMarkdown vault + graph + MCP/filesystem 5454554 32
Anytype Runner-upObject DB · P2P E2E sync · graph 5454555 33
SiYuan + TriliumNextSelf-hostable block KBs 4444553 29
LogseqLocal-first outliner (mid DB split) 4343552 26
NotionCloud all-in-one + official MCP 5515433 26
Org Methods (JD / PARA / Zettel)Taxonomies on a host tool 3553333 25
Dendron + FoamVSCode markdown-in-git (Dendron dead) 3254343 24
Vector memory layers (mem0 / Pinecone…)Opaque semantic stores 3335233 22
5 — best in class 4 — strong 3 — adequate 2 — weak 1 — disqualifying gap
02

Commandment Alignment — The Winner

Why the Obsidian stack passes the canon where the higher-scoring app fails.

0
Parallel always. Sequential is blasphemy.
Plain files mean the agent fans out parallel reads/writes across many notes with no DB lock, no API rate limit, no single-session GUI bottleneck. Vector stores and Notion (3 req/s) serialize; the filesystem does not.
Aligned
2
Auto-manifest. No asking "want me to" — just do.
Johnny.Decimal numbering is mechanical — the agent computes the next free ID and writes the note with zero judgment or confirmation. No proposal-first wrapper (the trap that sinks the AI-librarian repos).
Aligned
4
No human in the loop. Any tap / click / confirm = total failure.
The deciding Commandment. The raw-filesystem path needs no app running, no unlock, no token. SELmcp's write_file is 0-auth and headless 24/7. This is precisely where Anytype (manual unlock) and Logseq/SiYuan (GUI must run) fail.
Decisive · Aligned
9
Inline-HTML real-time view is canonical — self-contained, no refresh.
qi already has a self-contained force-graph HTML viewer at ~/.xen/uploads/xen-memory-graph.html rendering the vault — a static, refresh-free node-edge map, exactly this canon.
Aligned
12
Hard ban: "holding" forbidden — queued / paused / silent.
A passive store has no user-facing text to violate this. Note status fields use queued / active / archived — never "holding / standing by".
Aligned
16
Wakeups tight, silent. Long delays = parking = banned.
Filesystem writes are instantaneous and need no daemon wake / cloud round-trip. The agent advances and persists in the same tick — no parking on a sync queue.
Aligned
17
Visually verify with screenshots / DOM before claiming verified.
Native Graph View, Backlinks pane, and Bases tables are screenshot-able truth surfaces; the HTML graph viewer is DOM-inspectable. qi can SEE the memory web to confirm it.
Aligned
20
Active producing only. "Waiting for qi" / idle banned.
No app session to wait on, no human unlock gate — the store is always writable, so the agent is never structurally idle waiting on the memory layer.
Aligned
21
Autonomy regardless of presence — identical whether qi present or offline.
The headless filesystem path runs identically with qi away; the GUI/graph is purely qi's optional human window. Presence changes nothing about the agent's write path.
Aligned
noauth · local-first · data ownership
Plain .md on disk qi owns — no login wall, no vendor, no cloud SoT. No Cloudinary-style dead-URL risk. The textbook local-first fit; Notion (cloud-only, OAuth) scores 1/5 here and is disqualified.
Core Canon · Aligned
NEVER GUESS — verify / cite before asserting.
Notes are greppable + linkable source-of-record: every claim cites a backlinked note. The agent reads the actual file before asserting — opaque vector recall (which can hallucinate ranking) is the contrast this commandment warns against.
Aligned
03

Runner-Up — & The Single Reason It Loses

Highest raw score, one fatal canon break.

Anytype

33/35

The object-DB model uniquely covers all four scopes in one tool, ships an official first-party MCP server plus Local API, has a native graph for qi, and offers the cleanest self-hostable CRDT Mac↔Windows sync of any candidate (the only 5/5 sync). On paper it out-scores the winner.

Why it loses — Commandment 4

The Local API only serves while the desktop app is running and unlocked, and it is still labelled a "Developer Preview." A 24/7 lights-out agent would therefore require a human to open + unlock the app after every boot — a tap / confirm, which Commandment 4 defines as total failure.

Obsidian's raw-Markdown path has no such gate: an agent (or SELmcp's write_file) edits the files headless, with the app entirely closed. Lower total, but it is the only stack that is autonomous with qi offline — so it wins the actual decision.

04

Adoption Blueprint

Concrete folder taxonomy, sync, agent bridge, and unification with what already exists.

Vault Taxonomy

Johnny.Decimal areas (10s) for qi's real domains; deterministic IDs the agent auto-assigns; Zettelkasten [[wikilinks]] for emergent recall. Built ON the live vault, not replacing it.

XenVault/                       # the existing Obsidian vault
00-09 SYSTEM
  00.01 MEMORY.md # master index (exists)
  00.02 _README · graph-viewer · commandments
10-19 L7S CLIENT WORK
  11 compliance   11.01 luckie-goggins-he-him
                  11.02 ga-law-offlimits
  12 testimonials 12.01 asana-results-vary
  13 deliverables 13.xx pricing-menu / hero-cards
20-29 XLRD / INFRA
  21 selmcp       21.01 hub-41-tools
  22 sites        22.xx live-builds · sites.json
30-39 SELF EXEC
  31 identity     31.01 east-allen-persona
  32 canons       32.xx commandments-v50
40-49 PADRE (lead factory)
  41 leads        41.xx per-trade-site
  42 private      # .gitignored — sales-package PII
50-59 PERSONAL
  51 contacts · 52 health · 53 finance
90-99 ARCHIVE

# Tasks live in-vault via Tasks/Bases plugin:
# - [ ] ship padre site ⛁ 41.07 📅 2026-06-02
#   status:: queued   [[41.07-paint-genius]]

Agent-Access Bridge

Two tiers — headless filesystem is the canonical 24/7 path; structured MCP is optional richness when the GUI is open.

1
Primary · Headless filesystem (Cmd 4)the internal MCP hub's Godmode write_file / read_file / list_directory + file_search tools. Claude Code edits .md directly. Works app-closed, operator-offline.
2
Secondary · Structured graph accesscoddingtonbear Local REST API + obsidian-mcp-server (~14 tools: section reads, anti-clobber writes, tag/frontmatter, backlinks) — used only when the Obsidian GUI happens to be running, for live graph metadata.
3
Human view (Cmd 9 / 17)qi opens Obsidian.exe --disable-gpu for native Graph + Bases, or the self-contained xen-memory-graph.html for a refresh-free force-graph anywhere.

Mac ↔ Windows Sync

git (already on this repo) as the conflict-aware backbone, with Syncthing for live local-LAN mirroring of the vault between qi.local and Windows. Both are local-first / no paid cloud — honoring the noauth canon. (Obsidian Sync is the paid fallback only if conflicts bite.)

local-first · no cloud SoT

Unify the Windows Vault

The vault at ...\E--hitthe-link\memory\ stays the source of record — just re-numbered into the JD areas above. It already has .obsidian/ config + 12 notes; this is a rename + index pass, not a migration.

already canon

Bastra-Recall as Index

Mac-Xen's vector recall becomes a write-through semantic index, not a parallel store: each memory write hits the vault note first, then upserts an embedding that points back to the note path. Recall returns a link qi can open in the graph — never an opaque blob.

vault = truth · vectors = pointer

How It All Becomes One System

  • One source of truth: the Markdown vault. Tasks (Tasks/Bases plugin), notes, file-tree (JD folders), and memory (Zettel links) all live as files in it — all four scopes, one substrate.
  • One write path for the agent: filesystem via the internal MCP hub — headless, parallel, identical whether the operator is present or away (Cmd 0/4/21).
  • One human window: Obsidian Graph View + the self-contained HTML graph — qi opens it and SEES the whole network (Cmd 9/17).
  • One semantic accelerator: bastra-recall demoted from rival store to a pointer-index over the vault — fixing the "opaque, qi-blind" weakness vector layers are penalized for.
  • Net effect: the highest-scoring app's only edge (sync + official MCP) is matched by git/Syncthing + obsidian-mcp-server, while keeping the one thing it can't offer — a truly headless, no-unlock, no-human-tap write path. Canon satisfied end to end.