SSH and SFTP client

Hosts and keys, sealed before they leave the device.

Grem is an SSH and SFTP client with a vault that syncs across Linux, macOS, Windows, Android, and iOS. Hosts, passwords, SSH keys, and pinned host keys are encrypted on the device. The sync server stores the sealed bytes and cannot open them.


One password, two keys that cannot reach each other

The master password is stretched once with Argon2id. Two independent keys come off that result through different HKDF labels. One of them signs in. The other unseals the vault and never leaves the device.

masterKey = Argon2id(masterPassword, salt, 64 MiB, t=3, p=4)

authKey   = HKDF(masterKey, "grem-auth-v1")   sent to the server
wrapKey   = HKDF(masterKey, "grem-wrap-v1")   never sent anywhere

A server that logged every byte it received would hold authKey and still have no route to wrapKey. That is what makes the claim on this page structural rather than a promise.

Read the full cryptography reference


What it does

A real terminal, and two panes for moving files

Full xterm surface with scrollback, resize, and reconnect. Sessions keep running while you use other screens. The file browser puts this machine on the left and the host on the right; drag a file between panes to transfer it, or drop one in from the desktop. Transfers stream, so a large file never has to fit in memory, and progress is measured rather than guessed.

On a phone the local pane is dropped and transfers go through the system picker.

Jump hosts

The inner session runs inside the outer one's encrypted tunnel, so the jump host never sees its plaintext.

Host key pinning

Pinned on first use and synced across devices. A changed key stops the connection and shows both fingerprints side by side.

Credentials where you need them

Type a password or paste a key straight into the add-host form. Promote it to the vault afterwards if another host should reuse it.

Operating system detection

Saving a host probes it once in the background, so the list carries a distro mark rather than four identical server glyphs.

Offline first

The vault opens and edits with no network. Changes queue on disk and push on the next sync.

Master password rotation

Changing it rewraps the vault key. Not one item is re-encrypted, so the change is a single small write.


What the server actually knows

This is the honest accounting, not a summary of it. Metadata is visible. Contents are not.

What the sync server stores and what it never receives
Stored in the clear Never stored, never sent
The account's email address The master password
KDF parameters and salt The master key, the wrapping key, the vault key
How many items an account has Any item's type, name, or hostname
When each item changed, to the millisecond Any username, password, or private key
The size of each sealed blob Any tag, folder, or note
Device names and last-seen times Anything a host key is attached to

There is no password recovery

Losing the master password loses the vault.

There is no escrow key and no reset path. A server that can reset a password is a server that can read the data.

This is the direct cost of the design on this page, and the account creation screen says so before anyone commits to it. A password manager, or a written note kept somewhere safe, both work.


Start

The app creates the account, because the master password and the keys under it are generated on the device. The pages here manage the account around it: devices, sessions, and deletion.