How to use
- Copy the installation command and review the source package before installing it in your own agent environment.
- Check the source document for required tools, credentials and supported hosts.
- Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/nansen-ai/nansen-cli --skill nansen-wallet-managerBefore you start
- Installation does not include a model subscription, API allowance or permission to access your files.
- Repository stars and installation counts describe activity, not an independent quality or security test.
Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
Authentication
Nansen account API calls accept a selected nansen:api browser session or conventional API key with the same permissions. NANSEN_API_KEY takes precedence; optional primaryEnv preserves configured-key injection. Run nansen auth status for offline selection. Cached access expiry alone permits automatic renewal during an authorized task. Stop on anonymous selection, invalid state, blocked/uncertain renewal or actual auth failure; never drop a credential or fall back to anonymous x402 payment. Browser login does not grant wallet signing, privileged service identity or a persistent MCP integration key. Preserve all confirmation, signing, sanctions and geographic checks below. Browser login is available in CLI 2.0.0 within the macOS arm64 preview scope.
Wallet
Auth Setup
Use a selected nansen:api browser session or conventional API key for Nansen account API calls. Agents should inject NANSEN_API_KEY through their environment or secret manager and use commands directly; no login is needed to persist it. Human terminal users can use explicit nansen login --human for legacy key setup. With an already injected environment key, that explicit mode saves it without prompting and requires the native auth lock binding.
# Free live check of the effective API credential
nansen accountPlain nansen login instead requests fresh browser approval. It does not save an environment key or grant wallet signing/RPC authority. Wallet custody and provider credentials below remain separate.
Wallet Providers
The CLI supports two wallet providers:
| Local (default) | Privy (server-side) | |
|---|---|---|
| Key storage | Encrypted on disk | Server-side via Privy API |
| Password required | Yes (min 12 chars) | No |
| Export private keys | Yes (wallet export) | No — keys are managed by Privy |
| Best for | Human users, manual trading | Agents, automated workflows |
| Flag | --provider local (default) | --provider privy |
| Required env vars | NANSEN_WALLET_PASSWORD | PRIVY_APP_ID + PRIVY_APP_SECRET |
Privy Wallet Creation
Privy wallets are server-side wallets managed by the Privy API. No password is needed — keys never touch the local machine.
Prerequisites
The following environment variables must be set:
| Var | Purpose |
|---|---|
PRIVY_APP_ID | Privy application ID |
PRIVY_APP_SECRET | Privy application secret |
Create a Privy wallet
nansen wallet create --provider privy
# Or with a custom name:
nansen wallet create --name agent-wallet --provider privyCritical rules for agents (Privy)
- No password needed — Privy manages keys server-side
- Cannot export keys —
wallet exportonly works for local wallets - All other operations (
list,show,send,delete,default) work identically for both providers
Local Wallet Creation (Two-Step Agent Flow)
This section covers local wallet creation. For Privy server-side wallets, see the Privy Wallet Creation section above — no password is needed.
Wallet creation requires a password from the human user. The agent must NOT generate or store the password itself.
Step 1 (Agent → Human): Ask the user to provide a wallet password (minimum 12 characters). Step 2 (Agent executes): Run the create command with the password the user gave you.
NANSEN_WALLET_PASSWORD="<password_from_user>" nansen wallet createAfter creation, the CLI automatically saves the password:
- OS keychain (macOS Keychain, Linux secret-tool, Windows Credential Manager) — secure, preferred
- ~/.nansen/wallets/.credentials file — insecure fallback when no keychain is available (e.g. containers, CI)
All future wallet operations retrieve the password automatically — no env var or human input needed.
If the .credentials file fallback is used, the CLI prints a warning on every operation. To migrate to secure storage later, run nansen wallet secure.
Password resolution order (automatic)
NANSEN_WALLET_PASSWORDenv var (if set)- OS keychain (saved automatically on wallet create)
~/.nansen/wallets/.credentialsfile (insecure fallback, with warning)- Structured JSON error with instructions (if none available)
Critical rules for agents
- NEVER generate a password yourself — always ask the human user
- NEVER store the password in files, memory, logs, or conversation history
- NEVER use `--human` flag — that enables interactive prompts which agents cannot handle
- After wallet creation, you do NOT need the password for future operations — the keychain handles it
- If you get a
PASSWORD_REQUIREDerror, ask the user to provide their password again
Create
Privy (server-side, no password)
nansen wallet create --provider privy
# Or with a custom name:
nansen wallet create --name trading --provider privyRequires PRIVY_APP_ID + PRIVY_APP_SECRET env vars. No password needed.
Local (encrypted on disk, password required)
# Ask the user for a password first, then:
NANSEN_WALLET_PASSWORD="<password_from_user>" nansen wallet create
# Or with a custom name:
NANSEN_WALLET_PASSWORD="<password_from_user>" nansen wallet create --name tradingList & Show
nansen wallet list
nansen wallet show <name>
nansen wallet default <name>Send
# Send native token (SOL, ETH) — password auto-resolved from keychain
nansen wallet send --to <addr> --amount 1.5 --chain solana
# Send entire balance
nansen wallet send --to <addr> --chain evm --max
# Dry run (preview, no broadcast)
nansen wallet send --to <addr> --amount 1.0 --chain evm --dry-runExport & Delete
# Default is REDACTED — shows addresses only, never private keys
nansen wallet export <name>
# Write private keys to a file only the owner can read (0600, refuses to overwrite)
nansen wallet export <name> --file <path>
# Print private keys in plaintext to stdout (explicit acknowledgement required;
# warns on stderr when stdout is an interactive terminal)
nansen wallet export <name> --reveal
# Password auto-resolved from keychain (needed for --reveal / --file)
nansen wallet delete <name>Prefer --file over --reveal: plaintext on stdout ends up in terminal scrollback, shell logs, and agent transcripts.
Forget Password
# Remove saved password from all stores (keychain + .credentials file)
nansen wallet forget-passwordMigrate to Secure Storage
nansen wallet secureFor detailed migration steps (from ~/.nansen/.env, .credentials, or env-var-only setups), see the nansen-wallet-migration skill.
Flags
| Flag | Purpose |
|---|---|
--to | Recipient address |
--amount | Amount to send |
--chain | evm or solana |
--max | Send entire balance |
--dry-run | Preview without broadcasting |
--provider | Wallet provider: local (default, encrypted on disk) or privy (server-side via Privy API) |
--reveal | Export only: print private keys in plaintext to stdout (required acknowledgement) |
--file | Export only: write private keys to this path (created 0600, refuses to overwrite) |
--human | Enable interactive prompts (human terminal use only — agents must NOT use this) |
--unsafe-no-password | Skip encryption (keys stored in plaintext — NOT recommended) |
Environment Variables
| Var | Purpose |
|---|---|
NANSEN_WALLET_PASSWORD | Wallet encryption password — only needed for initial wallet create. After that, the OS keychain handles it. |
NANSEN_API_KEY | API key (can also be saved via nansen login --human) |
PRIVY_APP_ID | Privy application ID (required for --provider privy) |
PRIVY_APP_SECRET | Privy application secret (required for --provider privy) |
NANSEN_WALLET_PROVIDER | Default provider for wallet create — local or privy |
NANSEN_EVM_RPC | Custom EVM RPC endpoint |
NANSEN_SOLANA_RPC | Custom Solana RPC endpoint |


