$mdflow encrypt ./notes.md

Encrypted before it leaves your browser

The server stores ciphertext. It never sees the text or the password.

An encrypted MDflow document showing the password unlock prompt in place of the body, with the document title and folder still readable in the sidebar.
Locked: the title stays readable, the body is ciphertext until you unlock it.
$cat the-problem.txt
There are notes I want in the cloud and don't want the cloud to read.

Interview notes about a person. The medical thing. A negotiating position. Nothing that belongs in a vault with rotation policies — just a document you would rather no server operator, no breach and no well-meaning support engineer could ever open.

The usual answer is to keep it out of the cloud entirely and then lose it. The other answer is to encrypt it where you are, and let the cloud store something it cannot read.

$mdflow encrypt --how

How it works

  1. 01

    Pick a password

    Confirmed once, to catch a typo. Save it in your browser's password manager — MDflow will suggest exactly that, for a reason.

  2. 02

    Your browser encrypts

    A key is derived from the password and the document body is encrypted locally. The plaintext never leaves the tab.

  3. 03

    Ciphertext is stored

    What reaches the server is an opaque blob. It cannot read it, and neither can anyone who reaches the database.

$cat crypto-spec.txt

The specifics, stated plainly

Nothing here is a trade secret. If a notes app will not tell you its parameters, that is the finding.

  • Format. mdflow-enc:v1 — a documented, versioned envelope rather than an undisclosed scheme.
  • Key derivation. PBKDF2-HMAC-SHA256 at 600,000 iterations, so a weak password costs an attacker real time per guess.
  • Cipher. AES-256-GCM — authenticated encryption, so tampered ciphertext fails to decrypt rather than decrypting to something wrong.
  • Where it runs. Entirely client-side, in the browser, on the phone, or in the CLI on your machine. There is no server-side path that touches plaintext.
$mdflow unlock

Living with it

Encryption you have to fight is encryption you stop using.

  • Unlock once per device. Enter the password to read and edit. The derived key is remembered on that device, so the document reopens without retyping it.
  • Lock on demand. Lock it again whenever you want, and the password is required before the next read or edit on that device.
  • Reversible. Remove encryption at any time and the document goes back to being plain markdown — searchable, scannable and agent-readable again.
  • Versioned as ciphertext. Version history still captures snapshots, stored encrypted. Viewing a diff or restoring requires the document to be unlocked in the browser.
$ls ./clients

The same document, everywhere

One envelope format across three implementations, so an encrypted note is not hostage to the client that made it.

  • In the browser. Where you encrypt it, read it and edit it day to day.
  • On iPhone and iPad. The same format, so a document encrypted in the browser opens on the phone with the same password. After the first unlock the derived key lives in the device Keychain behind Face ID or Touch ID.
  • In the CLI. mdflow-crypt encrypts and decrypts mdflow-enc:v1 files locally, so you can work with them outside MDflow entirely.
  • One password, three surfaces. Not three formats that happen to be called encryption. The same envelope and the same derivation, so nothing is trapped in one client.
An encrypted document called Credentials.md open in the MDflow iPhone app: a padlock and the line “This document is encrypted” stand in for the body, above a password field and an Unlock button.
Encrypted in the browser, opened on the phone with the same password.
$mdflow encrypt --costs

What it costs you downstream

This is the part most encrypted-notes pages skip. Encryption is not free — it removes the document from everything that needs to read it.

  • Excluded from search. The server has no plaintext to index. An encrypted document still matches on its title, and shows a lock icon with an “Encrypted — contents not searched” note in place of a snippet.
  • Skipped by the Tasks scan. A - [ ] inside an encrypted document never reaches the Tasks list. Encrypted documents are counted and skipped, never scanned, and on iOS they refuse task writes.
  • Unreadable to your own agents. Over MCP and the HTTP API, an encrypted body is ciphertext. Claude cannot read it, Cursor cannot read it, and nor can a workflow — because none of them have the key, and that is the point.
  • No images. Encrypting a document removes its uploaded MDflow images first, and images cannot be added while it stays encrypted.

Which leads to the practical advice: encrypt the handful of documents that genuinely need it, not the workspace. Everything you encrypt is something your search, your task list and your assistants can no longer help you with.

$mdflow share --encrypted

Sharing one

Possible, with one manual step that cannot be automated away without defeating the point.

  • A password gate. The reader opens the share link and is asked for the password before anything renders.
  • You pass it separately. Over a different channel from the link. If both travel together, you have shared a document with a longer URL.
  • You are warned. The sharing settings tell you the recipient will need the password before the share is created, rather than after they ask why it looks broken.
  • Still no server access. Decryption happens in the reader's browser too. MDflow does not decrypt on their behalf to render the page.
$cat limitations.txt

What it doesn't do

Be clear-eyed about the shape of this. It is document encryption, not a security product:

  • No password recovery. None. Forget it and the document is gone — that is what makes the rest of the claim true.
  • Only the body is encrypted. Titles, folder names and workspace structure stay readable. Do not put the secret in the title.
  • This is not a secrets manager. No rotation, no scoping, no sharing model, no audit of who read what. Keys and credentials belong somewhere built for them.
  • Encrypted documents drop out of the product. No search, no tasks, no agent access, no images. Encrypt deliberately, not by default.
$man mdflow-encrypt --faq

Questions

Can MDflow read my encrypted documents?
No. The key is derived from your password in your browser and the encryption happens there, so the server only ever receives and stores ciphertext. It has no copy of the password and no way to derive the key — which also means nobody at MDflow can help you recover a document if you forget it.
What exactly is encrypted?
The document body, and only the document body. Titles, folder names and workspace structure stay readable — they are how you find the document in the first place. If a title would itself be sensitive, do not put the secret in the title.
What happens if I forget the password?
The document cannot be recovered, by you or by MDflow. There is no reset, no escrow and no backdoor. That is the trade for the server genuinely not being able to read it, which is why MDflow suggests saving the password in your browser's password manager when you encrypt.
Can I share an encrypted document?
Yes. The reader hits a password gate on the share page and enters the password, which you pass to them separately — by any channel other than the same one that carried the link. The sharing settings warn you about this before you send it.
Is this a secrets manager?
No, and it should not be used as one. It is encryption for notes: a document you want in the cloud that you do not want the cloud to read. Credentials, keys and tokens belong in a purpose-built secrets manager with rotation, scoping and audit — MDflow has none of that.
Does encryption cost extra?
No. Document encryption is available on every plan, on the web and in the free iPhone app, and the mdflow-crypt CLI is a free open-source npm package.
$mdflow encrypt

Keep it in the cloud. Keep it unreadable.

Pick the two or three documents that actually need it, set a password, and save that password in your password manager. Everything else stays searchable, scannable and agent-readable.

Encryption is free on every plan, on the web and in the iPhone app. There is no password recovery.