⚠ Pre-alpha — do not use with funds you cannot afford to lose. Not audited. Mainnet support exists but has not been independently reviewed. Test on Nile first. See
SECURITY.md+docs/security-model.mdfor the honest threat model.
███╗ ██╗ ███████╗ ██╗ ██╗ ████████╗
████╗ ██║ ██╔════╝ ╚██╗██╔╝ ╚══██╔══╝
██╔██╗ ██║ █████╗ ╚███╔╝ ██║
██║╚██╗██║ ██╔══╝ ██╔██╗ ██║
██║ ╚████║ ███████╗ ██╔╝ ██╗ ██║
╚═╝ ╚═══╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝
the wallet for terminal natives
A terminal-native crypto wallet. Black aesthetic, vim-keyed, single binary, no Electron. Built for DeFi power users, on-chain analysts, and contract developers who'd rather live in a TTY than click through a browser extension.
Status: v0.10.0 — pre-1.0. Tron mainnet + Nile testnet. Stake 2.0, SR voting, multi-wallet, multi-token portfolio, market screen, watch-only, themes. See
docs/ROADMAP.mdfor the path to v1.0.0.Do not use with significant funds yet. Audit the keystore yourself. Hardware wallet support lands in v0.12.
| mainstream wallets | NEXT | |
|---|---|---|
| Interface | Electron / browser ext / mobile | terminal (TUI + CLI) |
| Binary size | 100-300 MB | ~12 MB |
| Memory zeroize | usually no | yes (Zeroizing<Vec<u8>> everywhere) |
| Bandwidth/energy preview | "estimated gas" | exact ALL-OR-NOTHING burn calc |
| Cross-network detection | none | auto-probe other network on empty wallet |
| Theme | dark mode toggle | runtime TOML themes (4 built-in) |
| dApp browser | yes | no (intentional — sign tx via WC instead, v0.13) |
| Vim keys | no | yes |
If those tradeoffs sound right to you, read on.
git clone <repo> && cd next-wallet
cargo build --release
sudo cp target/release/nxt /usr/local/bin/ # or just symlinkFirst time:
nxt import --name main # paste your existing 12/24-word mnemonic
# OR
nxt init --name main # generate a fresh wallet (writes mnemonic to terminal)
nxt --network nile balance # quick connectivity check on testnet
nxt # launch the TUIDaily use:
nxt # TUI — most things live here
nxt balance --json # one-shot CLI for scripting
nxt send 50 USDT TXxxx... --dry-run
nxt vote witnesses --active
nxt watch add justin TR7N... --network mainnet # tracking a 3rd-party addressFor the full subcommand reference, see docs/cli.md.
Core wallet ops — init / import / send / receive / history / address book
Multi-token portfolio
- 6 curated mainnet TRC20 (USDT/USDD/USDC/JST/WIN/BTT/SUN)
- Custom tokens via
[[tokens.custom]]in~/.config/next/config.toml - Live USD valuation for stablecoins + fetchable assets
Multi-wallet
- Each wallet in its own encrypted
keystores/{name}.toml - Picker at launch when 2+ wallets exist; switch any time via
^p - Per-wallet preferred network (Nile-test wallet auto-loads on Nile, etc)
Stake 2.0
- Freeze/unfreeze TRX into bandwidth or energy pools
- 14-day cooldown countdown with auto-detect of testnet shorter cooldown
- Withdraw expired unstakes
- ALL-OR-NOTHING fee preview (no other wallet shows this correctly)
SR voting
- Distribute TP across SRs, claim accumulated rewards
- Auto-prune stale on-chain votes (deactivated SRs)
- 27-active filter on the witness list
Market
- 15 symbols tracked (Tron ecosystem + BTC/ETH/SOL/BNB/XRP/DOGE/ADA/AVAX/LINK/DOT)
- Sortable full table (
mkey) - Configurable dashboard rows
Themes — 4 built-in (default / matrix / phosphor / cyber) + user TOML themes
Watch-only — track external addresses without holding their keys
Security — Argon2id KDF, XChaCha20-Poly1305 with AAD, HMAC body checksum,
zeroized password / mnemonic / seed buffers throughout. See
docs/security-model.md for the threat model.
GLOBAL
^p command palette (fuzzy-search anything)
^c quit
DASHBOARD
s send m market screen
r receive z stake
t history V voting
? help R refresh all
n / x cross-network banner: switch / dismiss
LISTS (history, voting, market, contacts, picker)
j / k navigate g / G jump first / last
enter select / open
TUI ONLY
esc back / cancel
tab switch wallet (from unlock screen)
~/.config/next/
├── config.toml network, RPC URLs, theme, dashboard symbols
├── contacts.toml address book (shared across wallets)
├── watch.toml watch-only entries
├── keystores/
│ ├── main.toml your real wallet (encrypted)
│ └── test-nile.toml nile testnet wallet
└── themes/
├── matrix-bright.toml
└── ...
~/.local/state/next/
└── next.log tracing log (TUI mode never writes to stdout)
Single Rust crate, single nxt binary. core/ has chain-agnostic primitives
(secret/keystore/mnemonic/hd/account/config). tron/ implements the Chain
trait against TronGrid REST. cli/ and tui/ share the same handler layer
through cli::dispatch::execute. The TUI runs on tokio::current_thread with
a select! loop over keyboard / fetch-channel / animation tick. RPC calls
spawn as detached tasks that report back via mpsc::UnboundedChannel — the
event loop never blocks. Argon2id runs on spawn_blocking so the spinner
stays alive during unlock. Full module graph in
docs/architecture.md.
| Version | Theme | Days |
|---|---|---|
| 0.10.1 | polish + docs (this) | 2 |
| 0.11 | JustSwap (DEX) | 4-5 |
| 0.12 | Hardware wallet (Ledger) | 4 |
| 0.13 | WalletConnect v2 | 7 |
| 0.14 | Multi-chain (EVM) | 7 |
| 0.15 | NFT + approvals manager | 4-5 |
| 0.16 | 1.0 prep | 3 |
| 1.0.0 | stable | — |
Detailed deliverables per version: docs/ROADMAP.md.
Requires Rust 1.85+ (edition 2024).
cargo build --release
cargo test --lib --tests # 49 tests, all offline
cargo audit # 1 transitive CVE in time crate, not exploitable
# in our usage path — see docs/security-model.mdThe code style is documented in AGENTS.md. Key conventions:
- Feature flags / backwards-compat shims forbidden — change the code instead
- Comments document why, not what — well-named identifiers do that
- No tests for things that can't go wrong (trust internal types and framework guarantees)
- One-liner Cargo features instead of cfg-gated code paths
Dual-licensed under MIT or Apache-2.0.