An outliner over plain markdown, not a database with an export
Structure is read from the indentation and headings in the file, so what you see is what is on disk, and the file opens unchanged in any other editor.
- A journal entry a day, one file per day, and pages for the things that outlive a day.
- Wikilinks that nest:
[[[[Physics]] Quantum Mechanics]] names a topic within a topic and is a page in its own right. - Aliases, so a page answers to more than one name - names are case-insensitive, so
[[physics]] and [[Physics]] are one page. - Backlinks on every page, grouped by the heading and bullet the link sits under, with the linking line shown in place.
- Drafts: follow a link to a page that does not exist and you get an editable surface. Nothing is written until the first keystroke.
- Rename rewrites every link, or keeps the old name as an alias. Renaming onto an existing name merges the two.
- Outliner keys to indent, outdent, move and fold blocks and select whole branches.
- Formatting by keyboard or by wrapping a selection, tables with editing commands,
==highlight==, dates by picker. - Code blocks with live syntax highlighting, in place rather than swapped for a preview.
- Mermaid diagrams and KaTeX maths, inline and display, rendered over the source without changing it.
- Frontmatter as real text: title, aliases, publishing keys and your own keys.
In the docs: Formatting Text Titles, Aliases and Frontmatter Code, Maths and Diagrams Tables
Paste it in - the bytes are stored once
Images and files are stored beside the markdown as ordinary files, referenced from the text like any other link.
- Images and files by paste, drag and drop or a slash command, embedded inline with a display-size hint.
- Identical bytes stored once, however often they are added.
- WebP conversion on upload when it saves at least a tenth, with a per-upload opt-out.
- Links to files on your computer, with the path copied on click.
- Orphaned-asset scan to find and delete files nothing refers to any more.
In the docs: Images and Files Links to Websites and Files
Tasks stay in the note that gave rise to them
A task is a markdown checkbox where you wrote it. The Tasks view collects them across the graph and ticks one off in the document that contains it.
- Ordinary checkboxes, with priority, due, scheduled, waiting, doing and done carried as tags in the text.
- A Tasks view across the whole graph, filtered by concept and state.
- Quick notes: a scratch list in the sidebar for the thought you do not want to lose, filed into the journal under the day it was written.
In the docs: Tasks Quick Notes
By name, by text, by what links where
The sidebar is a short list of ways back in, and each view remembers its reading position.
- Quick find by name (a typo offers a new page instead) and search by text across the graph.
- All documents to browse, favourites shared with everyone in the graph, recents per device.
- Back and Forward through the documents you visited, each reopening where you left it.
- Today's journal and a calendar of the days that have an entry.
In the docs: The Graph Sidebar Search
Lay the screen out once per graph, per device
A desktop gets tabs and panes - a phone gets a presenter with a command bar above the keyboard. Both are the same editor over the same files.
- Tabs and panes: split, resize, dock, float and pin. Sidebars collapse rather than close.
- A layout per graph and per device, and a keyboard shortcut per sidebar view.
- Command menu on
/, context menus on a right-click or long-press, and a shortcuts card on Ctrl+/. - Dark mode, a colour per graph on the toolbar, and installable as an app.
- Several graphs side by side in one picker, local and synced.
In the docs: Tabs and Panes
A folder of markdown is a complete graph
Journals, pages, assets and a small settings folder, and nothing else. Back it up, put it in git, edit it with other tools while EtherPK has it open.
- Import from Logseq, Obsidian, another EtherPK graph or AS Notes into a new graph, with a report of anything that could not be carried.
- A local copy of a synced graph, kept up to date on disk as the same plain files.
- Export any graph as a folder of markdown, any time.
- A plain statement of what is stored where, and what ever leaves your device.
In the docs: Local Graphs Importing Where Your Data Is Stored
Encrypted on your device before anything is sent
The Sync Server stores your content only as ciphertext, filed under ids that carry none of it: not your text, not your titles, not the graph's name, not your images. It enforces limits by counting bytes it cannot read.
- Every device, live: real-time co-editing with collaborators' cursors. Edits made while the connection drops are kept, and merge when you are back in the order you made them.
- Sharing by invitation, with a short key fingerprint to compare, so you know the key you share with is theirs.
- A Recovery Code per account, stored nowhere, plus device approval, so a new device is usually let in by an existing one with a short code.
- Phones, tablets, Safari and Firefox all work with a synced graph.
In the docs: Synced Graphs Managed Sync
For the pages nobody else should read, even with your files in hand
Sync encryption protects your notes from the service. Protection is the layer for your own machine: a stolen laptop, a shared folder, a graph you export.
- Protected documents are encrypted with a personal key behind a passphrase or a passkey, on folder graphs as well as synced ones.
- Locked again on a timer, or when you look away.
- Never searched, never synced in the clear, never published, never shown to an agent.
- No recovery: forget the passphrase and the contents are gone, by design.
In the docs: Protected Documents
Pick the pages that are public and get a website
The docs site itself is an EtherPK graph published this way.
- Publications: choose the public pages, group them into as many sites as you like, and write the menu as an outline.
- A complete static site with search, a sitemap, a feed, maths, diagrams and code, into a folder or a zip, seeded for GitHub Pages and Cloudflare.
- Themes you copy into the graph and edit in a built-in editor with a live preview, with include slots for a footer, analytics or a banner.
- A publish report that says exactly what was and was not published.
In the docs: Publishing Your Notes as a Website Hosting a Published Site Theming a Published Site
Agents work on the same files you do
There is no separate export for them to read and no format to translate.
- On a folder graph, an agent reads the
AGENTS.md EtherPK writes into it and works on the files directly. - On a synced graph, it goes through the Headless Client: a device of your account that keeps the graph in sync and serves it over MCP.
- Semantic search by meaning, on top of search by text.
- Protected documents stay closed to agents, whichever route they take.
In the docs: Using AI Agents with Your Notes
Managed sync, or just your own machine
The same Client in each case. What changes is where the graph is stored and who keeps it in sync.
- Managed Sync with an EtherPK Account: sign in once and every managed app follows, with passkeys, two-factor and social sign-in, and a plan page that shows exact limits and usage.
- The Client on your own machine, as a plain Node bundle or a Docker image, for a folder graph with no server and no account.
In the docs: Managed Sync Running EtherPK on Your Own Computer