Help Center · Features
A complete tour of everything Ledger does, in plain English with numbered steps. Use the jump list below, or read straight through. Everything here works in the free local tier with no account.
On this page: Doc tree & spaces · Search · Reading a page · Editor & live preview · Wiki-links & backlinks · Links / graph view · Version history, diff & restore · Templates · Tags · Governance · Roles & permissions · Published portals · Import vault · Export · No-secrets posture & the scanner
The left rail — the "spine" — is your document tree. Pages are grouped into spaces, which are simply their folders. A page's folder comes from its path: a page at Runbooks/Restore Internet.md lives in the Runbooks space. Pages with no folder appear under (root).
To create a space: there's no separate "new folder" action — just give a new page a folder name. Click + New doc, type a title, then type the folder name (e.g. Network); the space is created automatically. Use the same folder name on other pages to add them to the same space.
The search box in the top bar searches as you type across every page. It matches against:
Tip: clicking a tag in the tag cloud runs a search for that tag.
Open a page and you're on the Preview tab by default. You'll see:
The renderer supports: headings (# through ####), bold and italic, inline code and fenced code blocks, tables, ordered and unordered lists, task lists (- [ ] / - [x] render as ☐ / ☑), blockquotes, horizontal rules, ordinary links (open in a new tab), and [[wiki-links]]. Fenced ```mermaid blocks are shown as a code block (they are not executed into a diagram). The renderer escapes HTML, so pasted Markdown can't inject scripts.
The Edit tab is a split-pane editor: raw Markdown on the left, live rendered preview on the right that updates as you type. (The Edit tab only appears for roles that can edit — Admin and Editor. See Roles.)
What saving does: it snapshots the previous version into history, writes your new content, and (because the content changed) re-opens approval — an edited page is no longer "approved" until a Reviewer signs off again. The editor footer reminds you that pages are plain Markdown with [[wiki-links]] and Obsidian-compatible YAML frontmatter.
The secret scanner runs on save. If your page looks like it contains a pasted password, key, or seed phrase, Ledger pops a warning and asks you to confirm before saving — see the no-secrets posture.
You can also rename a page: click the title at the top of the page and type a new one (it saves when you click away).
Type [[Page Title]] anywhere in a page body to link to another page. Use [[Page Title|custom text]] to show different link text. Ledger resolves the target against your pages' titles (and against bare filenames, so [[Core Firewall]] matches Assets/Core Firewall.md).
This is fully Obsidian-compatible: the same [[wiki-links]] work in Obsidian, so links and backlinks survive a round-trip in either direction.
The Links tab on any page is the navigable version of Obsidian's graph — "what does this page reference, and what depends on it?"
This is the practical answer to "if I change this firewall page, what else might be affected?" — the backlinks tell you what depends on it.
Every time you save a change, Ledger snapshots the prior version. The History tab lists those snapshots (up to the last 30 per page), newest first.
+, removed lines -, unchanged lines are shown for context. Click Back to history to return.This local history is per-device and lives in your browser. The hosted/cloud tier adds full git history and pull-request review on top; the in-browser history is the always-available baseline.
Click Templates in the top bar to start a new page from a real IT-doc starter. The six built-in templates are:
| Template | Default space |
|---|---|
| Server / VM asset page | Assets |
| Network / config note | Network |
| Runbook / SOP | Runbooks |
| Credential reference (NO secrets) | Runbooks |
| SaaS / application page | Assets |
| Onboarding / offboarding procedure | Runbooks |
The Credential reference template deliberately contains no password field — it's structured to link a vault item instead, modelling the no-secrets pattern.
Tags are short labels for organizing and finding pages across spaces. They live either in the page's frontmatter (tags: asset, firewall) or are set inline in the editor.
#chips in its meta bar, and the first tag shows next to the page in the tree.This is the heart of what Ledger adds over a personal Obsidian vault: it tells you whether a document can be trusted. Each page has a governance bar just under the title.
Governance reads two standard frontmatter fields:
owner: — who is responsible for the page (e.g. owner: Security Lead).reviewed_on: — the date the page was last reviewed (e.g. reviewed_on: 2026-05-01).From reviewed_on, Ledger computes a review status:
| Status | Meaning |
|---|---|
| reviewed (fresh) | Reviewed within the last 90 days. |
| needs review (stale) | It has a reviewed_on date, but it's more than 90 days old. |
| never reviewed | No valid reviewed_on date is set. |
The governance bar also shows the approval state (approved / unapproved) and offers two role-gated actions:
reviewed_on frontmatter (creating the frontmatter block if it doesn't exist). The status flips to fresh.Together these answer an auditor's real questions: who owns this, when was it last reviewed, and has anyone signed off on the current version?
Ledger has five roles. In the free local tier, the role picker in the top bar (🔑 role:) lets you switch which role you're "viewing as" so you can see exactly what each role can and can't do. In the cloud tier, roles are assigned to real people per space and enforced server-side; the local picker demonstrates the same model on one device.
| Role | Edit / Delete | Mark reviewed | Approve | Publish portal | Read |
|---|---|---|---|---|---|
| Admin | Yes | Yes | Yes | Yes | Yes |
| Editor | Yes | Yes | No | No | Yes |
| Reviewer | No | No | Yes | No | Yes |
| Viewer | No | No | No | No | Yes |
| Portal (read-only) | No | No | No | No | Yes |
When you switch to a read-only role (Viewer or Portal), the Edit tab, Delete, Mark-reviewed, Approve, and Publish actions disappear — you can read but not change anything. Switch back to Admin to regain full control.
Note: in the local tier this is a demonstration of the permission model on a single device — switching roles is not a security boundary by itself (anyone at the keyboard can switch back). Real, enforced, per-person, per-space permissions with SSO and an audit trail are the cloud tier.
A published portal is a single, self-contained HTML file containing a whole space, rendered read-only. You hand it to an auditor or a non-editor and they open it in any browser — no app, no account, no editing, and no way to change anything.
<company>-<space>-portal.html.The portal includes: a banner marking it READ-ONLY, a per-page navigation list, each page's rendered Markdown, and review stamps ("Last reviewed … · owner …") where present. It carries no secret material (because Ledger stores none) and has no editing controls. It's a point-in-time snapshot — re-publish to share an updated version.
Click Import vault to bring existing Markdown into Ledger. It accepts either:
FILE: markers between pages); or.md note pasted in.Frontmatter, folder paths (which become spaces), tags, and [[wiki-links]] all carry over. Import adds pages — it doesn't wipe what's already there. For a continuous, two-way connection to a folder of files on disk (rather than a one-time paste), use Obsidian vault sync instead.
Your data is always portable — it's just Markdown. Two export options:
.md file.FILE: path headers, plus a short manifest header. This bundle is git-ready and Obsidian-ready, and it's exactly what Import vault accepts — so it round-trips.There's nothing proprietary to "get out of" — Ledger's source of truth is plain Markdown. Export is also your backup and your exit. See Exporting and leaving.
Ledger stores zero passwords or secrets by design. This is a deliberate security stance: a system that holds no credentials can't leak any if it's breached.
The pattern: for each credential, make a credential reference page (there's a template) that links the item in your password manager by URL or ID — for example vault://provider/item-id or a Bitwarden/1Password item link. Never paste the actual password, API key, or seed.
The save-time scanner: when you save a page, Ledger scans it for things that look like pasted secrets — password: …, secret: …, api_key: …, provider keys like sk-…, PEM private-key blocks, and seed-phrase-like strings. If it finds one, it warns you, names what it found, and asks you to confirm before saving. It's a guardrail, not a vault: you can override it, but the intended action is to remove the secret and link a vault item instead.
If your page got flagged but doesn't really contain a secret (e.g. the word "password" appears in a sentence with a colon), you can confirm and save anyway — the scanner is intentionally cautious. See "My secret got flagged".