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 | On the server |
|---|---|
| Hosts, keys, passwords, tunnels, VPNs, snippets, notes | Ciphertext, padded |
| Vault names in a team | Encrypted like items |
| Which key or VPN a host uses | Inside the encrypted host |
| Your account’s private keys | Wrapped: only your app unwraps them |
| Your public keys | Stored, so team members can verify you |
| Proof of your password and recovery key | Slow hashes only |
| Your master password and recovery key | Never sent |
| Which hosts you open, and what you run | Never 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.
| It tries to | What happens |
|---|---|
| Read your items | It can’t: it has no key that decrypts them |
| Change or forge an item | Every item is signed, and checked before it is decrypted |
| Roll you back to an older copy | Each device remembers the newest revision it saw, and refuses an older one |
| Make your password easier to guess | The app refuses key settings below a safe minimum |
| Slip itself into a team vault | Apps use only vault keys signed by a member they verified |
| Disappear | Your 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.
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:8443Run 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.
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.