Skip to main content

Identity Management

Remi uses Ed25519 keypairs for authentication. Each device (server or client) has an identity that proves who it is during connection.

remi keygen​

Generate a new Ed25519 identity keypair.

remi keygen

By default, the private key is stored unencrypted in ~/.remi/identity.json for zero-friction startup. To encrypt the private key with a passphrase, use --passphrase:

remi keygen --passphrase

You will be prompted to enter a passphrase (minimum 8 characters). You can also provide the passphrase via the REMI_PASSPHRASE environment variable for non-interactive contexts.

Generating Ed25519 keypair...
Identity generated successfully.
Fingerprint: a1b2c3d4e5f6...
Encrypted: no
Stored at: ~/.remi/identity.json

Options​

OptionDescription
--passphraseEncrypt the private key with a passphrase
--forceOverwrite an existing identity
--decryptRemove passphrase from an existing encrypted identity
--encryptAdd passphrase to an existing unencrypted identity

Managing Passphrase​

You can add or remove the passphrase on an existing identity without regenerating the keypair. The fingerprint stays the same, so authorized clients do not need to re-authorize.

Remove passphrase (encrypted to unencrypted):

remi keygen --decrypt

You will be prompted for the current passphrase (or set REMI_PASSPHRASE).

Add passphrase (unencrypted to encrypted):

remi keygen --encrypt

You will be prompted for a new passphrase (minimum 8 characters).

Overwriting an Existing Identity​

If an identity already exists, keygen refuses to overwrite it. Use --force to replace:

remi keygen --force
warning

Replacing your identity means all clients that trusted your old fingerprint will see a fingerprint mismatch on their next connection. They will need to re-verify and re-trust your new identity.

remi export-key​

Export your identity for sharing across devices.

# Export full identity (encrypted private key + public key)
remi export-key

# Export only the public key (safe to share)
remi export-key --public-only

Output is JSON printed to stdout. Redirect to a file:

remi export-key > my-identity.json
remi export-key --public-only > my-public-key.json

The full export includes your encrypted private key, so it can be imported on another machine. The --public-only export contains only your public key and fingerprint, suitable for giving to others to authorize you.

Options​

OptionDescription
--public-onlyExport only the public key (no private key)

remi import-key​

Import an identity from a file or stdin.

# From a file
remi import-key identity.json

# From stdin
cat identity.json | remi import-key

If an identity already exists, import refuses to overwrite it. Use --force to replace:

remi import-key --force identity.json

Options​

OptionDescription
--forceOverwrite existing identity

Identity Files​

FileContents
~/.remi/identity.jsonEd25519 private key (plaintext or encrypted) and public key

If the identity was created with --passphrase, the passphrase is required to unlock it. Set the REMI_PASSPHRASE environment variable for non-interactive use (CI, remote scripts). To remove the passphrase without changing your keypair, use remi keygen --decrypt.