Sync & share

Your memory on every machine. And your team’s.

Hand one workspace to another machine or a colleague with a single code. Sessions are end-to-end encrypted, go one way or both, and run from the terminal or the dashboard. Pair your own machines once and they keep that workspace in step on their own.

Everything on this page is a real session between two demo machines, alice-laptop and sam-workstation, through the public relay.

alice@alice-laptop
$ imprint sync serve --workspace team --send-only --remember
═══ Imprint Sync Server ═══
[*] Automatic pairing enabled for this workspace and direction; the other device must also opt in.
[+] Connected! Share this with the other machine:
imprint sync 85c55ac4-GoLS8V37
This device: alice-laptop (id: ff2f7d42)
Workspace: team
Mode: send-only — peers can pull, pushes are refused
═══ Incoming Sync Request ═══
Device: sam-workstation
User: sam
OS: linux
ID: 559e885f
Accept? [y]es / [n]o / [t]rust & accept: y
[+] Paired for automatic sync. Keep the dashboard or imprint sync watch running on both devices.
[+] Sending complete: 4000/4000 memories, 2/2 facts (2s)
sam@sam-workstation
$ imprint sync 85c55ac4-GoLS8V37 --workspace handbook --remember
═══ Imprint Sync ═══
[*] Workspace: handbook (new — created when data arrives)
[+] Handshake accepted
[+] Connected to alice-laptop (alice, linux, id ff2f7d42)
[*] Plan: pull only — push skipped (this machine is receive-only)
[+] Paired for automatic sync. Keep the dashboard or imprint sync watch running on both devices.
[+] Receiving complete: 4000/4000 memories, 2/2 facts (2s)
[+] Storing complete: 4000/4000 memories, 2/2 facts (2s)
[+] Merged remote → local: 4000 new memories, 2 new facts (0 already present)
═══ Sync Complete ═══

Excerpts from the recorded transcripts.

How a session works

Four steps, about ten seconds.

The same session runs in the terminal with imprint sync and in the dashboard under Sync. These are the dashboard’s screens.

  1. 1

    Serve a workspace

    Pick the workspace and what the other machine may do with it. The default public relay is fine: it only ever forwards ciphertext. Tick automatic sync if this is one of your own devices.

    alice-laptop · Sync
    Serve form: workspace team selected, Send only chosen, the automatic sync option and an optional relay field
  2. 2

    Share the code

    Imprint prints one code. Its first half names the room on the relay; the second is a secret only the two machines use. It works once.

    alice-laptop · Sync
    Waiting for a peer, with the code f5b9c62d-CYHSeQEC shown large with a copy button and the matching imprint sync command
  3. 3

    Approve the device

    Once the code checks out, the serving machine shows who is asking: hostname, user, OS and device fingerprint. Accept once, trust it for next time, or reject.

    alice-laptop · Sync
    Incoming sync request from sam-workstation, user sam, linux, with its fingerprint and Accept once, Trust and accept and Reject buttons
  4. 4

    Memories arrive

    Memories travel with their vectors, so nothing is re-embedded on arrival, and facts come along. Everything is deduplicated, so running it again only adds what is new.

    sam-workstation · Sync
    Sync complete on sam-workstation: 4000 memories and 2 facts pulled into the new workspace from-alice
sam-workstation · Sync
Receiving data: 500 of 4000 memories, with the plan and the new workspace noted
Progress while it runs, and a plan that says what will and will not happen.

In the terminal

# on the machine that shares
imprint sync serve --workspace team --send-only

# on the other machine, with the code it prints
imprint sync f5b9c62d-CYHSeQEC --workspace from-alice

Add --relay sync.example.com to use your own relay; the code then carries its address.

Direction

You decide what leaves.

Each machine states what it is willing to do, and the serving side enforces its own choice. A code is all it takes to join, so joining only receives unless you ask to send, and then you see exactly which device gets your workspace first.

Serving

Two-way
The other machine may pull and push.
Send only
It may pull; anything it pushes is refused.
Receive only
It may push; nothing here is sent.

Joining

Receive only
The default: import, send nothing.
--two-way
Import, then send back after you confirm who gets it.
--send-only
Send after you confirm; import nothing.
sam-workstation · Sync
Send this workspace? Sam is asked whether to send from-alice to alice-laptop, with that device's user, OS and fingerprint, and Send or Don't send
A two-way join asks before sending. Saying no still runs the pull.
Share with your team

Share part of your memory, not all of it.

Copy just what belongs into a workspace of its own. Yours stays whole. Serve that workspace send-only: your colleague reads it, and nothing of theirs comes back.

  1. 1 · Curate

    imprint migrate --from default --to team --project billing-api --copy

    Or Settings → Workspaces → Copy / move in the dashboard.

  2. 2 · Share one way

    imprint sync serve --workspace team --send-only

    Your active workspace does not change; pushes are refused.

  3. 3 · Receive

    imprint sync <code> --workspace from-alice

    Into a workspace of their own, created when the data arrives.

Re-run the copy and the sync to refresh: both deduplicate. Neither deletes, so what you shared stays shared.

Automatic sync

Pair your machines once.

Turn on automatic sync on both sides of a session, or add --remember to both commands. Only that workspace and the direction you approved are remembered. From then on, whenever Imprint runs on both, through the dashboard or imprint sync watch, they reconnect through the same relay about once a minute and merge what changed.

sam-workstation · Sync
Receive form with the code entered, workspace from-alice, Receive only, and Enable automatic sync with this device ticked
Opt in on both devices; a declined push never becomes an automatic one.
alice-laptop · Sync
Paired devices: sam-workstation, active, team sends to from-alice through the public relay, last sync just now, with Pause and Forget buttons
Each paired device, what it syncs and when it last did.
sam-workstation · Sync
The same pairing seen from sam-workstation, paused on this device, with a Resume button
Pause on either side and nothing transfers until you resume.
alice-laptop · Sync
Confirmation: Forget this device on both sides? It removes automatic pairing with sam-workstation for all paired workspaces; existing memories remain

Forgetting is confirmed, and honest about timing.

The device is revoked on this machine at once. The other one removes the pairing when the two next connect. In this session that took 51 seconds. Until then it shows as pending, never as done. Memories already shared stay. If the other device is gone for good, uninstalled or reset, remove the pairing from this machine alone: it is deleted at once, without waiting for an answer that will not come.

alice-laptop · Sync
sam-workstation marked Removal pending: revoked locally, remote removal pending until both devices reconnect
imprint sync peers              # list paired devices
imprint sync watch              # sync them without the dashboard
imprint sync disable <id>       # pause; enable resumes
imprint sync forget <id>        # remove on both sides
imprint sync remove <id>        # this side only, now: the other device is gone
Privacy

The relay carries it. It cannot read it.

The code’s secret becomes the encryption key through SPAKE2, a password-authenticated key exchange: it never crosses the relay, and a relay that tries to join in gets one wrong guess before the session ends. Every frame after that is AES-256-GCM, and an altered, dropped or replayed frame stops the session with nothing from it stored.

Want the metadata private too? Run your own relay.

The relay sees

  • The room ID
  • Two key-exchange messages
  • Sizes and timing of encrypted frames
  • IP addresses

It never sees

  • The code’s secret
  • Device names, users, fingerprints
  • Memories, vectors and facts
  • Which workspace is synced

Questions

What exactly is transferred? +
Memories from the selected workspace, with their content, metadata and vectors, and the knowledge-graph facts. Not other workspaces, configuration, the trust list or workspace roots. Imported URLs are never refreshed by the receiving machine.
Do both machines need the same embedding model? +
Yes. Vectors arrive precomputed, so both sides must use the same embedding profile. A mismatch is refused before anything is stored.
Do deletions sync? +
No. Sync merges; it never deletes. A memory you remove after sharing stays on the other machine until it is removed there too.
What if a transfer is interrupted? +
Nothing from an unfinished or tampered stream is stored. In the terminal, a download that arrived but failed to store is kept; running the same command again stores it without the other machine.
Can I sync without a relay? +
Yes: export a snapshot on one machine and import it on the other, from Sync → Snapshots or imprint sync export and imprint sync import. Or run your own relay: it is a small stateless Docker image.