Use Obsidian to view/edit memory¶
A Git-backed or exported Hadron memory is a folder of plain Markdown files with YAML frontmatter — nothing proprietary. You can open it in any editor, grep it, diff it, or keep reading it long after you stop using Hadron. Obsidian is a particularly good fit: a synced memory repo is already laid out as an Obsidian-style vault — one note per node, metadata in frontmatter — so it opens with no conversion.
This guide shows how to open a memory's repo as a vault, what the on-disk
layout means, and how to make citation-addressed memories (whose
files are bare numbers like 04.md) readable in the file explorer.
For how the repo gets to your disk in the first place — authoring it, syncing it into Hadron, and pushing it back out — see Sync a memory from a Git repo. This page picks up once you have the files locally.
Prerequisites¶
- Obsidian installed (free for personal use).
- A local working copy of the memory's repo. You get this either by:
- cloning the repo you author the memory in, or
- pulling the branch Hadron wrote with Push to Git — the export path (see Pushing back).
Either way you end up with a folder of Markdown files on disk. That folder is the vault.
No Hadron account is needed to read it — it's just files.
Step 1: Open the folder as a vault¶
- Launch Obsidian.
- Click Open folder as vault (from the vault switcher, Open another vault → Open folder as vault).
- Select the repo's root folder — the one that contains
README.md. - The first time, Obsidian asks you to Trust author and enable plugins. Trust it; the content is your own.
Every .md file is now a note. There is no import step — Obsidian reads
the files in place, exactly as Hadron does.
Step 2: Read the layout¶
Hadron writes one self-contained Markdown file per node. A node's
path is its loc — the colon-delimited citation address — with the
colons turned into folders:
Node loc |
File on disk |
|---|---|
architecture |
architecture.md |
glossary:stage |
glossary/stage.md |
billing:dunning:020:02 |
billing/dunning/020/02.md |
billing:dunning:020:02:04 |
billing/dunning/020/02/04.md |
A node that has children is written beside its child folder, not
inside it — billing/dunning/020/02.md sits next to
billing/dunning/020/02/. There is no README.md standing in for a
parent node; the only README.md is at the repo root, where it holds
the memory's manifest (its URN, name, and description).
What you see in the file explorer depends on how the memory is addressed:
- A knowledge-base memory uses readable slugs, so the explorer reads
naturally:
architecture,glossary/stage,decisions/retention-policy. - A citation-addressed memory — a product-specs memory, for example
— uses numeric locs, because the path is the citation. The files are
bare numbers:
00.md,02.md,04.md. The human-readable title lives in the frontmatternamekey, so in Obsidian's default explorer those notes show as "00 / 02 / 04" — unreadable. Step 3 fixes that.
Each file carries its metadata in frontmatter and its prose in the body:
---
name: Final notice email
id: 019d-7e7c-1f2a-…
description: The last dunning email before a subscription is suspended.
abstract: The final notice goes out three days after the last failed
charge and links to the hosted payment-update page…
tags: [billing, dunning]
nodes:
- id: 019d-8a01-44b3-…
loc: billing:dunning:020:02
rel: relates-to
---
# Final notice email
The final notice goes out three days after the last failed charge and
links to the hosted payment-update page…
The name key is the title. Edges live inline under nodes: — each
entry identifies its target by id, carries the target's loc for
readability, and names the relationship in rel.
Step 3: Make numeric nodes readable¶
For a citation-addressed memory,
install
the
Front Matter Title
community plugin. It displays a note's title from a frontmatter key of
your choice — in the file explorer, tabs, search, and graph — without
renaming the files. Point it at Hadron's name key and 04.md shows
as "Final notice email" while staying 04.md on disk, which it must
because the path encodes the citation.
- Open Settings (the gear, bottom-left) → Community plugins.
- If this is a fresh vault, click Turn on community plugins first.
- Click Browse, search for Front Matter Title, then Install and Enable.
- Open the plugin's options (Community plugins → Front Matter Title → the gear).
- Set the Template field — the frontmatter key to read the title
from — to
{{name}}. It defaults to{{title}}; Hadron usesname. - Enable the surfaces you want to retitle — at least File Explorer.
The explorer now reads as titles:
Default explorer With Front Matter Title
──────────────── ───────────────────────
└── billing/dunning/020/ └── billing/dunning/020/
├── 02.md ├── Retry schedule
├── 02/ ├── 02/
│ └── 04.md │ └── Final notice email
└── 03.md └── Grace period
Folders keep their numeric names — the plugin retitles notes, not folders — but the leaf notes you actually open are now readable.
Reading nodes and edges¶
- Obsidian's Properties view renders the frontmatter as a table:
name,description,abstract,tags, and the rest. - Edges are the
nodes:list. Obsidian shows them as a property but does not draw them in the graph view — they're frontmatter data, not[[wikilinks]], so the graph and backlinks panes stay empty. To follow an edge, read itslocand open that file. For a navigable graph, use the Hadron portal's node browser.
Editing in Obsidian and syncing back¶
You can edit notes in Obsidian like any Markdown. If the vault is your
memory's Git repo, commit and push, then re-sync (the portal's Sync
from Git button, or the h-sync-graph MCP tool) to pull the changes
into Hadron. A few rules keep the round-trip clean:
- Keep the
namekey. A node file with nonameis skipped on sync. - Don't rename or move files in a citation-addressed memory. The
path is the
loc— the citation — so renaming04.mdchanges the node's address. Rename through Hadron, not in the vault. (Renaming in a slug-addressed memory is also alocchange; the same caution applies, less catastrophically.) - Leave
idalone. It is the node's stable identity across renames, and edges resolve by it. - Don't hand-maintain
contentHashorabstractOriginHash. Hadron recomputes them; just don't invent values. - Sync is upsert-or-delete. Deleting a file deletes the node on the next sync, and a database node with no file is removed — see What sync does to existing nodes.
If you only ever read in Obsidian, none of this applies — you can't hurt a memory by looking at it.
Related¶
- Sync a memory from a Git repo — how the repo is laid out, authenticated, and synced.
- Maintain product specs — the citation-addressed spec memories whose numeric filenames this plugin makes readable.
- URN composition — how a node's address is built.