End-to-end encrypted sync

Your vault everywhere. Readable only by you.

Hosts, keys, tunnels and snippets are encrypted on your device before they leave it. Sync through morphgate.com or a server you run yourself: either one only ever stores ciphertext.

MorphGate works fully without sync. Hosted sync starts with a 7-day trial, and your own server costs nothing.

Encrypted on your device

Keys that only your devices hold.

Your master password goes through Argon2id, with 256 MiB of memory and three passes, into a master key. From it the app derives one key that unlocks your account keys and another that proves your password to the server. The server keeps only a slow hash of the second.

Each vault has its own random key, sealed to your account. Every item is encrypted with XChaCha20-Poly1305, signed with Ed25519 and padded to steps of 256 bytes, so the server can’t read it, change it, or tell its exact size.

What a sync server stores
WhatOn the server
Hosts, keys, passwords, tunnels, VPNs, snippets, notesCiphertext, padded
Vault names in a teamEncrypted like items
Which key or VPN a host usesInside the encrypted host
Your account’s private keysWrapped: only your app unwraps them
Your public keysStored, so team members can verify you
Proof of your password and recovery keySlow hashes only
Your master password and recovery keyNever sent
Which hosts you open, and what you runNever sent

How it works

Turn it on once. It keeps up by itself.

Turn it on once

Open Sync in the app, choose morphgate.com or your own server, and enter your email and master password. The password itself isn’t sent, only a key derived from it.

Add your devices

Sign in from a fresh install. The vault downloads encrypted and is decrypted on the device. morphgate.com emails you whenever a new device signs in.

Changes in seconds

An edit goes out within seconds, and your other devices pick it up while their vault is unlocked. Sync now in the Sync panel sends at once.

Works offline

Without a connection MorphGate keeps working. Your changes wait on the device and go out with the next successful sync.

Conflicts keep both

When two devices change the same item before they sync, neither change is lost. The later one arrives as a copy marked (conflict) for you to compare.

What syncs

Hosts, groups, identities, SSH keys, snippets, tunnels, VPN profiles and imported schemes, attachments and session logs, and your teams’ shared vaults. Trusted host keys and each device’s own settings stay where they are.

Assume the worst

Even a hostile server can’t read your vault.

Suppose the server is broken into, or its operator turns against you. It can see the metadata it keeps: your email, your devices, and when items changed. It can refuse to sync. Everything else the app checks for itself.

In a team, the server decides who is a member and who may write, but it still can’t read or forge an item, or hand anyone a vault key.

If the server tried to…
It tries toWhat happens
Read your itemsIt can’t: it has no key that decrypts them
Change or forge an itemEvery item is signed, and checked before it is decrypted
Roll you back to an older copyEach device remembers the newest revision it saw, and refuses an older one
Make your password easier to guessThe app refuses key settings below a safe minimum
Slip itself into a team vaultApps use only vault keys signed by a member they verified
DisappearYour devices hold the full vault and keep working

Devices you can see and sign out

The Sync panel lists every device signed in to your account, with its platform and when it was last seen. Sign one out and it stops syncing at once. What it already has stays encrypted under your master password.

Changing your master password signs your other devices out until they sign in with the new one.

Sign-ins that can’t be replayed

A device holds a short-lived access token and a refresh token that changes every time it is used, stored encrypted in the vault. If an old refresh token turns up again, the server signs that device out.

Turn on two-step verification and signing in also needs a code from your authenticator app.

Your choice of server

Hosted, self-hosted, or one and then the other.

Both speak the same protocol. To move, disconnect sync in the app and turn it on again with the other server’s address: your vault uploads there in full, and your other devices join it from a fresh start.

Hosted

morphgate.com

Create the account from the app. Two-step verification, an email when a new device signs in, and an account page for your plan, devices and invoices.

See plans

Self-hosted

Your own server

The reference server is one binary and a SQLite file, under AGPL-3.0. Point the app at it under Sync.

$ cargo run -p vault-sync-server
# listens on 127.0.0.1:8443
Run your own server

Open protocol

vault-sync/v1

The OpenAPI contract is public domain (CC0). Its conformance tests run against any server address, so you can check a server before you trust it with your vault.

The open protocol

When a plan ends

On morphgate.com every device can always read your vault and download it, with or without a plan. Sending changes needs a trial or a plan.

If a payment fails, sync keeps working for 14 days while you sort it out.

Your copy is the real copy

Your devices hold the whole vault, so they keep working if a server goes away. Export it from the app whenever you like, and download what the server keeps about your account.