A modern terminal-based wallet for the DERO blockchain, built with Bubble Tea.
- Modern TUI: Clean, keyboard-driven interface using Bubble Tea
- Wallet Management: Create, open, and restore wallets from seed or hex key
- Auto-Open: Automatically reopens your last wallet on startup with password prompt
- CLI Startup Flows: Supports direct create/restore startup and optional password auto-open
- Real-time Updates: Balance and sync status update automatically
- Send/Receive: Transfer DERO to an address or on-chain username, with integrated address and destination port support
- Payment Requests: Generate integrated addresses with embedded payment details
- Transaction History: View all transactions with color-coded types and full details
- QR Codes: Generate QR codes for wallet addresses and integrated addresses
- XSWD Server: Built-in WebSocket server for dApp integration with user-controlled permissions
- Settings: Change password, view seed/key, rescan blockchain
- RPC Server: Built-in JSON-RPC server for external access
- Offline Mode: Work without daemon connection
- Network Support: Mainnet, Testnet, and Simulator support with auto-detection
curl -fsSL https://raw.githubusercontent.com/moralpriest/derotui/main/scripts/install.sh | bashpkg update && pkg upgrade -y
pkg install -y curl
curl -fsSL https://raw.githubusercontent.com/moralpriest/derotui/main/scripts/install.sh | bash
derotui --helpThe installer auto-detects Termux and installs derotui to $PREFIX/bin.
go build -o derotui ./cmd/To launch from any terminal, place the binary in your PATH (for example):
install -m 0755 derotui "$HOME/.local/bin/derotui"Download and run the latest Windows release:
$repo = "moralpriest/derotui"
$api = "https://api.github.com/repos/$repo/releases/latest"
$rel = Invoke-RestMethod -Uri $api
$asset = $rel.assets | Where-Object { $_.name -like "*windows-amd64.exe" } | Select-Object -First 1
Invoke-WebRequest -Uri $asset.browser_download_url -OutFile "derotui.exe"
.\derotui.exeOptional: move derotui.exe to a folder in your PATH (for example %USERPROFILE%\bin).
task ci
task security
task build# Open wallet (interactive)
./derotui
# With specific wallet file
./derotui --wallet-file mywallet.db
# Open wallet directly with password (no prompt)
./derotui --wallet-file mywallet.db --password "your-password"
# Offline mode
./derotui --offline
# Enable RPC server
./derotui --rpc-server
# Create new wallet
./derotui --generate-new-wallet
# Restore from seed
./derotui --restore-deterministic-wallet --electrum-seed "word1 word2 ..."
# Restore from seed interactively (prompts for seed in TUI)
./derotui --restore-deterministic-wallet
# Testnet
./derotui --testnet
# Simulator (local development)
./derotui --simulator--generate-new-walletstarts directly in wallet creation flow.--restore-deterministic-walletstarts restore flow:- With
--electrum-seed: opens password step directly. - Without
--electrum-seed: opens seed input page.
- With
--wallet-fileopens that file path exactly as provided.--wallet-file+--passwordattempts direct wallet open without password prompt.--offlineskips daemon auto-detection and keeps wallet in offline mode.
- Type
/to open command menu /open- Open an existing wallet/create- Create a new wallet/restore- Restore wallet from seed or hex key/themes- Change color theme/connect- Connect to a daemon/exit- Exit the application- Arrow keys to navigate
- Enter to select
Available color themes (selected theme is saved and restored on startup):
- Neon (default) - Cyberpunk purple aesthetic
- Matrix - Green phosphor terminal with semantic colors preserved
- Amber CRT - Warm amber-orange CRT with brown backgrounds
- Solarized Dark - Cool blue-cyan palette with frosty tones
- Gruvbox Dark - Warm retro terminal colors
- Crimson Dark - Deep red theme on dark maroon backgrounds
- Neon Pink - Hot pink neon on deep violet-black with enhanced selection contrast
Page 1 - Core Actions:
S- Send DEROC- Copy address to clipboardY- Show QR codeH- Transaction historyG- Register wallet (shown only when unregistered)
Page 2 - Advanced Actions:
V- View seed phraseK- View hex keyP- Change passwordR- Generate payment request (integrated address)X- Toggle XSWD server
Navigation:
←/→orh/l- Switch between action pagesEsc- Close wallet, return to welcomeQ- Quit application
- Arrow keys - Navigate transactions
- Enter - View transaction details
- Mouse click - Select transaction
- Mouse double-click - View details
- Esc - Back to dashboard
T- Copy Transaction IDB- Copy Block HashH- Copy Block HeightS- Copy SenderD- Copy DestinationP- Copy ProofM- Copy MessageI- Copy Destination Port- Mouse click on any value row to copy
Esc- Back to history
Tab/Shift+Tab- Switch between fieldsArrow Left/Right- Adjust ring sizeEnter- Send (when valid)Esc- Cancel
Recipient field accepts either:
- a standard DERO address, or
- a plain username resolved on-chain through the connected daemon name service (no
@prefix)
C- Copy to clipboardEsc- Close
C- Copy address to clipboardEscor click anywhere - Close
Tab- Switch between fieldsEnter- Generate integrated addressY- Show QR code for generated addressC- Copy integrated addressEsc- Close
A- Accept connectionR- Reject connectionTab- Switch between buttonsEnter- Confirm selectionEsc- Reject
1- Allow (this request only)2- Deny (this request only)3- Always Allow (all future requests for this method)4- Always Deny (all future requests for this method)↑/↓- Navigate optionsEnter- Confirm selectionEsc- Deny
Ctrl+C- Force quitEsc- Go back / Cancel
The wallet supports mouse interaction throughout:
- Click quick actions on dashboard
- Click page indicators to switch pages
- Click transactions in history
- Double-click transactions for details
- Click any field in transaction details to copy
- Click form buttons and fields
- Click XSWD dialog buttons
- Double-click in daemon selection to confirm
--wallet-file <file> Wallet file path
--password <password> Wallet password
--offline Run in offline mode
--offline-datafile <file> Offline data file (default "getoutputs.bin")
--rpc-server Enable RPC server
--rpc-bind <addr> RPC bind address (default "127.0.0.1:20209")
--rpc-login <user:pass> RPC credentials
--allow-rpc-password-change Allow RPC password change via RPC
--testnet Use testnet
--simulator Connect to simulator (port 20000)
--daemon-address <addr> Daemon endpoint: host:port or http(s)://host[:port]
--socks-proxy <ip:port> SOCKS proxy
--generate-new-wallet Generate new wallet
--restore-deterministic-wallet Restore from seed
--electrum-seed <seed> Recovery seed
--unlocked Keep wallet unlocked
--debug Enable debug loggingThe wallet automatically stores configuration in ~/.derotui.json:
- Last opened wallet path
- Network type per wallet (Mainnet/Testnet/Simulator)
- Selected color theme
On startup, if a previous wallet exists, you'll be prompted for its password automatically.
On startup, the wallet automatically detects running local daemons:
- If multiple daemons are detected (Mainnet, Testnet, Simulator), a selection prompt appears
- If one daemon is detected, it connects automatically
- If no daemon is detected, defaults to Mainnet settings
cmd/
└── main.go # Entry point for the TUI wallet
internal/
├── config/ # User configuration (last wallet, network settings)
├── ui/ # TUI implementation
│ ├── pages/ # UI pages (dashboard, send, history, etc.)
│ ├── styles/ # Theme and styling
│ └── components/ # Reusable UI components
└── wallet/ # Wallet wrapper and types
- Go 1.26+
- Terminal with ANSI color support
MIT License - see LICENSE file for details.