Wallets And Key Storage
Generated vs imported wallets, passphrases, and recovery shares.
Seashail is designed so the agent process never receives key material.
Wallet Types
Generated Wallets
Generated wallets are created inside Seashail and protected using Shamir Secret Sharing (2-of-3):
- Share 1: encrypted with a machine secret stored in
config_dir - Share 2: encrypted with a key derived from your passphrase
- Share 3: shown once as an offline backup and also stored encrypted for explicit export/rotation
Normal operation reconstructs from shares 1 + 2, signs, then zeroes key material from memory.
Imported Wallets
Imported keys/mnemonics are encrypted at rest using AES-256-GCM with a key derived from your passphrase (Argon2id + HKDF subkeys).
Passphrase Session
To make automation practical, Seashail caches a passphrase-derived key in memory for a configurable window (passphrase_session_seconds).
Headless/unattended environments can opt in to providing the passphrase via environment variable:
SEASHAIL_PASSPHRASE
This is lower security by design (plaintext outside Seashail’s control). Use only if you understand the tradeoff.
Related Tools
create_wallet,import_wallet,add_account,set_active_walletexport_shares,rotate_shares