The CLI should feel like more than a thin wrapper around functions.
A developer should quickly see:
- one root -> many identities
- unlinkability by default
- optional continuity proofs
- offline-first operation
- human-usable recovery workflows
- offline-first by default
- no network required for core operations
- human-readable output by default
--jsonfor scripting- safe handling of secrets
- clear distinction between root types
- minimal ceremony for first success
- Root — starting secret for derivation
- Persona — named branch of identity
- Account — derived child identity for a specific use
- Private proof — proves shared root without revealing derivation context
- Full proof — proves shared root and reveals derivation context
- Mnemonic-backed root — recoverable with phrase / Shamir
- nsec-backed root — derivation-capable, but not phrase-recoverable
nsec-tree rootnsec-tree derivensec-tree exportnsec-tree provensec-tree verifynsec-tree shamirnsec-tree profilensec-tree inspectnsec-tree explain
nsec-tree root creatensec-tree root restorensec-tree root import-nsecnsec-tree root inspect
Expected output should make these explicit:
- root type
- recoverable yes/no
- master pubkey / npub
- warnings when relevant
nsec-tree derive path <path>nsec-tree derive persona <name>nsec-tree derive account <path>
Canonical path syntax:
personalpersonal/forum-burnerpersonal@1/forum-burner@3
Rules:
/separates levels@indexis optional, default0- names are lowercase, shell-friendly, max 32 chars
nsec-tree export npub <path>nsec-tree export nsec <path>nsec-tree export identity <path>
Secret-emitting commands should warn in TTY mode and support:
--json--quiet--out
nsec-tree prove private <path>nsec-tree prove full <path>nsec-tree verify proof <file>nsec-tree verify proof --stdin
Use private rather than blind in user-facing command language.
nsec-tree shamir splitnsec-tree shamir recover
Important rule:
- Shamir operates on mnemonic recovery material
- it does not upgrade a plain imported
nsecinto a recovery-capable root
Profiles are a CLI convenience layer, not hidden magic.
nsec-tree profile save <name>nsec-tree profile listnsec-tree profile use <name>nsec-tree profile show [name]nsec-tree profile remove <name>
Explicit root input remains the default-safe path for scripts.
nsec-tree inspect path <path>nsec-tree inspect rootnsec-tree explain modelnsec-tree explain proofsnsec-tree explain recovery
These commands are onboarding tools and part of the wow factor.
root createroot restoreroot import-nsecderive pathexport npubexport nsecprove privateprove fullverify proofshamir splitshamir recover--json
profilecommandsinspectcommandsexplaincommands- QR-oriented output
nsec-tree root create
nsec-tree derive path personal
nsec-tree derive path anon/forum-burner
nsec-tree export nsec anon/forum-burner
nsec-tree prove private anon/forum-burner