Keeping a local copy of a synced graph

A synced graph lives as encrypted data on the sync service, which is what lets it reach every device you use. A Local Mirror puts a second, readable copy of it in a folder on your own computer: plain Markdown files, the images and attachments they use, and your graph settings.

It is a copy you own outright. Back it up with any sync service, keep it in git, read it in any other editor, or use it to rebuild the graph if you ever lose access to the original. Nothing in the folder needs EtherPK to open it.

Status: works in Chromium-based desktop browsers (Chrome, Edge, Brave, Arc, and similar) on Windows, macOS, and Linux. Firefox and Safari, including everything on iPhone and iPad, cannot hand a folder to a website yet. The Mirror tab says so on those rather than offering a button that cannot work.

Turning it on

Open the graph, then Settings → Mirror, and choose a folder. Pick an empty one, or one you are happy to hand over entirely: the mirror makes the folder match the graph, which means it also deletes anything in there that is not part of it. A folder with files already in it asks you to confirm that first.

That is the only setup. From then on the folder keeps itself up to date while the graph is open.

It is one-way

EtherPK writes to the folder and never reads back out of it. The graph on the service is always the master copy.

So editing a mirrored file has no effect, and your edit is overwritten the next time that document changes. If you want to work on the files themselves, that is a different thing: Import the folder to make a new local graph from it, described in Importing From Logseq Obsidian Or An EtherPK Export.

What ends up in the folder

<your-folder>/
  journals/2026-09-09.md
  pages/Quantum Mechanics.md
  assets/diagram.<id>.png
  etherpk/settings.json
  etherpk/graph.json

Every page is named after its title, exactly as a local graph names its own files, with only the characters a filesystem cannot hold replaced: a page called Test [[Kanban]] is Test [[Kanban]].md. The title is also written inside the file, and that is what actually identifies the document, so a file name never changes what a page is or breaks a link. If a folder was written by an earlier version of the mirror, which used lower-case hyphenated names, the first pass after updating renames those files; git shows them as renames, since the content is unchanged.

Occasionally two documents want the same file name, usually because their titles differ only by a character that cannot be in a name. The second one gets a number, like Report (2).md. Its title inside the file is untouched, so nothing links to the wrong page. The Mirror tab lists any that happened.

Attachments are copied as ordinary files, decrypted, exactly as the documents refer to them. Every attachment the graph holds is copied, including ones no document links to any more, because they are part of the graph and count against your storage. Clearing them out from Settings → Maintenance removes them from the folder too, on the next pass.

Checking on it

A small dot appears in the toolbar once mirroring, and it is the quickest way to see where things stand:

Dot Meaning
Green The folder matches the graph.
Blue Writing right now.
Red Mirroring has stopped and needs you.
Grey Another tab of this browser is looking after the folder.

Click it for the full picture on the Mirror tab: which step is running and how far through, how much is in the folder, and when it was last checked complete. A long first pass also shows its progress as an activity, the same way an import does.

The tab reports anything outstanding, each with its own list you can open:

When it runs, and when it does not

Mirroring runs while the graph is open in this browser, and picks up where it left off the next time you open it here.

Nothing is lost by interrupting it. Close the tab, lose your connection, shut the laptop, come back a week later: the mirror reads the folder once, works out what actually differs, and writes only that. It does not download your documents or attachments again.

Two things are worth knowing:

If you have the graph open in several tabs, only one of them writes to the folder. Close it and another takes over by itself.

Stopping

Settings → Mirror → Stop mirroring ends it and forgets the folder. Whatever is already in there is left exactly as it is, and it stays yours.

Rebuilding a graph from the folder

This is what the copy is for. On the Graphs page choose Import, pick the mirror folder, and EtherPK builds a new graph from it. The folder is only read, never changed, and you can import it as a local graph or a synced one.

Two things do not survive the trip, by design: the graph's own identity and its edit history, and anything protected, which stays encrypted with the passphrase of the graph it came from. See Protecting Sensitive Documents for what that means in practice.

Good to know