Your data

A brain is plain markdown, and it stays that way going in and out. This page is exactly what an export contains, what happens when an import collides with an existing note, and the size limits that apply today.

What export contains

The Data page in a brain exports a zip: one file per note, at its exact path, with its content written byte for byte, verbatim. Nothing is reformatted, nothing gets frontmatter injected, no extension is appended or changed. If “include deleted” is chosen, soft-deleted notes are included too, under a _deleted/ folder inside the zip.

A note’s path in the database is just a unique key, not a filesystem path: it can contain characters an archive should not use for a real file. The export handles this without ever dropping or overwriting a note’s content:

Import and conflicts

The same Data page imports a folder or zip of markdown. Only .md, .markdown, and .txt files are read; everything else is silently skipped and counted (see Attachments and non-markdown files below). Content is imported verbatim, with no rewriting: no frontmatter stripped, no wikilinks rewritten. Before anything is written, you get a per-file preview of exactly what will happen at the destination path, with one of these outcomes:

Re-importing the same vault is safe

With conflict mode “overwrite,” if the incoming content and title are byte-for-byte identical to what is already stored, the import is a genuine no-op for that note: no new version, no history entry, updated_at unchanged. The outcome reports as “unchanged.” Re-running an import you are not sure took the first time does not pile up dead versions. (“Append” is deliberately excluded from this: re-appending the same text on purpose is a normal thing to do, so it always applies.)

Import runs in batches of 200 notes at a time (the connector’s own batch ceiling is 500; the web app stays well under it), sequentially, so the progress bar reflects real work. If one batch fails, the import stops there and tells you what had already been written, rather than retrying blindly.

Attachments and non-markdown files

A brain stores note content as text. There is no attachment storage today: an import only reads .md, .markdown, and .txt files, and everything else in the source folder or zip, images included, is skipped and reported in the preview’s per-extension skip counts. Nothing is uploaded, converted, or referenced on your behalf. If your vault has images or PDFs alongside your notes, they simply do not come along; keep them wherever they already live.

The limits

These apply today, verified directly against the code that enforces each one.

LimitValueWhat you see when you hit it
Note content2 MiBThe write fails with an error naming the byte limit and the size you sent.
Per brain, total100 MiBA write that would push the brain over this fails with an error naming both numbers.
Per account, total150 MiBSame, but summed across every brain you own.
Brains per account10create_brain fails with an error naming this ceiling.
Request body (one call)4 MiBThe connector rejects the request before it is parsed as JSON.
Batch size (one call with several operations)500 itemsThe call fails; send the work as several smaller batches instead.

For scale: as of 2026-09-06, the largest live note in production is 639 KB, the largest per-account total is 26.7 MB across three brains, and the largest single import batch seen is 2,109 notes (handled as several 200-note batches). Every ceiling above clears real usage with a lot of headroom.

Sharing

Membership is per brain. A person has to sign in to the connector themselves, once, before an owner can add them. add_member (or Access in the web app) then grants a role: owner (full control, including managing members), editor (read and write notes), or viewer (read-only). Adding someone who has never signed in fails with a “not registered” error; have them connect first.

What does not exist today: there is no email-invite-and-accept flow (a person joins by being added after they have signed in, not by accepting an invite), no folder-level or note-level permissions within a brain (a role applies to the whole brain), and no durable, queryable read-audit log (recent_activity and get_history show writes, not who has read what). Membership is a trust boundary at the level of a whole brain: everyone in it can expose its content to their AI sessions.