Skip to content

Conflicts

A conflict happens when the same note has been edited in two places since the last successful sync. Engram’s job here is not to guess — it’s to detect the conflict reliably and hand you the choice.

Engram tracks the parent version of every edit (a version vector under the hood). When you push a change, the backend checks whether your parent version is still the current version. If it isn’t, your push lands as a conflict instead of overwriting.

This means conflicts only happen when two devices edit the same note while at least one is offline. Real-time concurrent edits on the same device, or one-after-the-other edits across devices with a live connection, never conflict — they apply in order.

Open the Sync Center. Conflicted notes show up in the Conflicts queue. Click one to open the resolution UI. Five options:

OptionWhat it does
Keep bothSave the remote version as a new sibling note (e.g. note (conflicted copy 2026-05-20).md). Default safest choice.
MergeOpen a 3-way merge view. You see local, remote, and base — pick or hand-edit.
Keep localLocal version wins. Remote version is discarded.
Keep remoteRemote version wins. Local version is discarded.
SkipLeave both versions alone for now. Conflict stays in queue.

Use Merge for notes where you want to combine intent from both edits — e.g. you added a paragraph at the top on one device while another device added a paragraph at the bottom. The 3-way view shows the base (common ancestor), local, and remote side by side, and you pick or hand-edit a final version.

For binary attachments or canvas files, Merge isn’t available — only Keep both / Keep local / Keep remote / Skip.

Next: Mobile.