Skip to content

Latest commit

 

History

History
50 lines (44 loc) · 5 KB

README.md

File metadata and controls

50 lines (44 loc) · 5 KB

MorphGate docs

Developer documentation for MorphGate: the SSH client with a per-host VPN and an end-to-end encrypted vault that syncs through MorphGate's hosted service or any vault-sync/v1 server (Rust, Tauri v2, React and TypeScript). These docs describe the app from its code; paths in them are relative to the repository root.

Start with Architecture, then the feature you're working on. Development covers building and testing, RELEASING.md releases, and CONTRIBUTING.md how changes come in.

Documentation

Doc What it covers
Sync and crypto spec The protocol's design: threat model, key hierarchy, wire formats, sync, sharing, the self-hosting contract
Architecture Crates and layers, Tauri commands and events, data on disk and the SQLite schema, item kinds, how a connection and a sync run, trust boundaries
Development Building and running, the workspace, unit, live, e2e and conformance tests, CI, versions and releases
Vault
Vault and unlock The local vault file, first run, master password rules, unlock, lock and auto-lock, recovery key, password change, export, reset
Keychain and biometric unlock The device key in the OS keychain, Touch ID, Windows Hello and polkit, Android Keystore, iOS
Vault cryptography Key hierarchy, KDF minimums, envelopes, signing and padding, recovery codes, sealed vault keys, blobs, the rollback guard
Connections
Hosts, groups and identities Item kinds and fields, group defaults, identities, attachments, lists and bulk changes, moving items between vaults
SSH connections How a connection is made, sign-in order, host keys and host CAs, jump hosts, proxy commands, keepalive and reconnect
SSH keys and agents Generating and importing keys, certificates and their renewal, SSH agents (1Password, Bitwarden, Secretive, Pageant), agent forwarding
Per-host VPN How a host uses a VPN, tunnel lifetime and sharing, prompts, the in-app TCP/IP stack, DNS
VPN protocols WireGuard, OpenVPN and openconnect in detail: what is parsed, refused and asked for
Terminal and snippets The terminal, tabs, split panes and broadcast, the route bar, snippets, tmux sessions
Port forwarding Local, remote and SOCKS tunnels
SFTP The file browser, transfers, conflicts
Session logs Recording sessions, sealed chunks, uploading and playback
Importing Hosts from OpenSSH, PuTTY, CSV and Royal TS; snippets from CSV
Cloud sources Hosts from Vallic Cloud, AWS, Google Cloud, Azure, Hetzner Cloud and DigitalOcean, and hosts and snippets from a feed
Sync and teams
Sync Choosing a server, signing up and in, two-step verification, the push and pull cycle, conflicts, plans and limits
Account and devices The device list, signing devices out, erasing a revoked device, disconnecting, deleting the account, the website account page, device approval, single sign-on
Teams Creating and joining teams, verifying members, roles, shared vaults and key rotation, policies, the member key directory
Offboarding What a leaving member could read, removing their keys from servers, replacing a shared key
The app
Platforms and mobile Linux, macOS, Windows, Android and iOS: packages, data folders, the phone layout, what differs
Updates The signed updater, release notes, About and open-source licenses
Deep links morphgate:// links and what each opens
Appearance App themes, terminal color schemes, fonts
Reference server vault-sync-server: what it implements, configuration, running it

Elsewhere

Where What
spec/openapi.yaml The vault-sync/v1 API: the contract servers and the app follow
server/README.md, tools/vault-conform/README.md Running the reference server; checking a server against the spec
apps/desktop/e2e/README.md The end-to-end suite that drives the packaged app
ROADMAP.md, CHANGELOG.md What's done and open; what each release changed
morphgate.com/docs The user docs, which say the same things for people using the app