Skip to main content

CLI — WalletPress in Your Terminal

Live

Full wallet operations from your terminal. Scriptable, automatable, local vault access without API keys.


Install​

# Linux/macOS (binary)
curl -L https://github.com/RugMunchMedia/walletpress/releases/latest/download/walletpress-$(uname -s)-$(uname -m) -o walletpress
chmod +x walletpress
sudo mv walletpress /usr/local/bin/

# macOS (Homebrew)
brew tap rugmunchmedia/walletpress
brew install walletpress

# Docker
docker run --rm -it walletpress/walletpress:latest walletpress --help

# Cargo (from source)
cargo install --git https://git.example.com/RugMunchMedia/walletpress.git walletpress-cli

Configuration​

Config File​

# ~/.config/walletpress/config.yaml
vault:
path: ~/.walletpress/vault.db
key_env: VAULT_KEY # or key_file: ~/.walletpress/vault.key

api:
endpoint: http://localhost:8010
timeout: 30s

mcp:
endpoint: http://localhost:8010/mcp/sse

output:
format: table # table, json, yaml, csv
colors: true

chains:
default: ["ethereum", "solana", "bitcoin"]
derivation_path: "m/44'/60'/0'/0/0"

Environment Variables​

export VAULT_KEY="$(cat ~/.walletpress/vault.key)" # 32-byte base64
export WALLETPRESS_CONFIG="/custom/path/config.yaml"
export WALLETPRESS_VAULT_PATH="/custom/path/vault.db"

Commands​

Wallet Generation​

# Generate wallet for default chains
walletpress generate

# Generate for specific chains
walletpress generate --chains ethereum,solana,bitcoin,polygon

# Generate with label
walletpress generate --label "trading-bot-001"

# Generate with custom derivation path
walletpress generate --derivation-path "m/44'/60'/0'/0/0"

# Generate from existing mnemonic (restore)
walletpress generate --mnemonic "abandon abandon abandon..."

# Generate with passphrase
walletpress generate --passphrase "my-bip39-passphrase"

# Output as JSON for scripting
walletpress generate --chains ethereum,solana --format json

Output (table):

┌─────────────────────────────────────────────────────────────────┐
│ Wallet Generated: wlt_abc123def456 │
├──────────────┬──────────────────────────────────────────────────┤
│ Label │ trading-bot-001 │
│ Chains │ ethereum, solana, bitcoin, polygon │
│ Derivation │ m/44'/60'/0'/0/0 │
│ Mnemonic │ abandon abandon abandon abandon abandon abandon │
│ │ abandon abandon abandon abandon abandon abandon │
│ │ about │
├──────────────┼──────────────────────────────────────────────────┤
│ ethereum │ 0x742d35Cc6634C0532925a3b8D4C0532925a3b8D4 │
│ solana │ 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU │
│ bitcoin │ bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh │
│ polygon │ 0x742d35Cc6634C0532925a3b8D4C0532925a3b8D4 │
├──────────────┼──────────────────────────────────────────────────┤
│ Arweave Proof│ https://arweave.net/abc123def456 │
│ Created │ 2026-11-02T12:00:00Z │
└──────────────┴──────────────────────────────────────────────────┘

Wallet Management​

# List all wallets
walletpress list

# List with filters
walletpress list --chain ethereum --label trading --format json

# Get wallet details
walletpress get wlt_abc123def456

# Update wallet label
walletpress update wlt_abc123def456 --label "new-label"

# Soft delete (preserves vault data)
walletpress delete wlt_abc123def456

# Purge (irreversible — requires confirmation)
walletpress purge wlt_abc123def456 --confirm

Address Derivation​

# Derive single address
walletpress derive wlt_abc123def456 --chain ethereum --path "m/44'/60'/0'/0/5"

# Derive batch
walletpress derive-batch wlt_abc123def456 --chain ethereum --start 0 --count 20 --label-prefix "deposit-"

# List all addresses for wallet
walletpress addresses wlt_abc123def456 --chain ethereum

Signing​

# Sign transaction (Ethereum)
walletpress sign-tx wlt_abc123def456 \
--chain ethereum \
--path "m/44'/60'/0'/0/0" \
--tx '{"to":"0x742d35...","value":"1000000000000000000","gas":"21000","gasPrice":"20000000000","nonce":0,"chainId":1}'

# Sign message (EIP-191)
walletpress sign-msg wlt_abc123def456 \
--chain ethereum \
--path "m/44'/60'/0'/0/0" \
--message "Hello, WalletPress!"

# Sign typed data (EIP-712)
walletpress sign-typed wlt_abc123def456 \
--chain ethereum \
--path "m/44'/60'/0'/0/0" \
--data '{"domain":{"name":"Test","version":"1"},"types":{"Person":[{"name":"name","type":"string"}]},"primaryType":"Person","message":{"name":"Alice"}}'

x402 Operations​

# Generate wallet via x402 (pay per use)
walletpress x402 generate --chains ethereum,solana --label "x402-wallet"

# Check x402 balance/usage
walletpress x402 usage

Utility​

# Health check
walletpress health

# Verify Arweave proof
walletpress verify-proof wlt_abc123def456

# Export wallet (encrypted)
walletpress export wlt_abc123def456 --output wallet-backup.enc --password "strong-password"

# Import wallet
walletpress import wallet-backup.enc --password "strong-password"

# Vault management
walletpress vault status
walletpress vault seal # Emergency seal
walletpress vault unseal # Requires VAULT_KEY

# Audit log
walletpress audit --since 2026-11-01 --format json

Scripting Examples​

Batch Wallet Generation​

#!/bin/bash
# generate-wallets.sh - Generate 100 wallets for airdrop

for i in {1..100}; do
walletpress generate \
--chains ethereum,solana \
--label "airdrop-$i" \
--format json >> airdrop-wallets.json

# Rate limit
sleep 0.1
done

# Extract addresses for distribution
jq -r '.chains.ethereum.address' airdrop-wallets.json > ethereum-addresses.txt
jq -r '.chains.solana.address' airdrop-wallets.json > solana-addresses.txt

Automated Trading Bot Setup​

#!/bin/bash
# setup-trading-bot.sh

WALLET_ID=$(walletpress generate \
--chains ethereum,arbitrum,optimism,base \
--label "trading-bot-main" \
--format json | jq -r '.id')

# Derive deposit addresses
for i in {0..9}; do
walletpress derive $WALLET_ID \
--chain ethereum \
--path "m/44'/60'/0'/0/$i" \
--label "deposit-$i" \
--format json >> deposit-addresses.json
done

echo "Trading bot wallet: $WALLET_ID"
echo "Deposit addresses saved to deposit-addresses.json"

CI/CD Integration​

# .github/workflows/deploy.yml
- name: Generate deployment wallet
run: |
WALLET=$(walletpress generate --chains ethereum --label "deploy-${{ github.sha }}" --format json)
ADDRESS=$(echo $WALLET | jq -r '.chains.ethereum.address')
echo "DEPLOY_ADDRESS=$ADDRESS" >> $GITHUB_ENV

Configuration Reference​

# Full config.yaml reference
vault:
path: ~/.walletpress/vault.db
key_env: VAULT_KEY
key_file: ~/.walletpress/vault.key
auto_seal_timeout: 3600 # seconds of inactivity

api:
endpoint: http://localhost:8010
timeout: 30s
rate_limit: 100 # req/s

mcp:
endpoint: http://localhost:8010/mcp/sse
auth_token_env: MCP_AUTH_TOKEN

output:
format: table # table, json, yaml, csv
colors: true
pager: true

chains:
default: ["ethereum", "solana", "bitcoin"]
derivation_path: "m/44'/60'/0'/0/0"

logging:
level: info # debug, info, warn, error
file: ~/.walletpress/logs/walletpress.log
max_size: 100MB
max_files: 10

Shell Completion​

# Bash
walletpress completion bash > /etc/bash_completion.d/walletpress

# Zsh
walletpress completion zsh > ~/.zsh/completions/_walletpress

# Fish
walletpress completion fish > ~/.config/fish/completions/walletpress.fish

# PowerShell
walletpress completion powershell > walletpress.ps1

Troubleshooting​

IssueFix
vault: lockedRun walletpress vault unseal with VAULT_KEY
vault: not foundCheck vault.path in config, run walletpress generate to init
connection refusedEnsure API server running on api.endpoint
permission deniedCheck file permissions on vault.db and config.yaml
invalid mnemonicEnsure 12/24 words, correct wordlist (BIP39 English)

Next​