pftui
Your portfolio, in the terminal. Live prices. Braille charts. Zero fluff.
A maximalist terminal dashboard for tracking your investments — equities, crypto, forex, commodities, funds — with live market data, ratio analysis, 6 hand-tuned color themes, and vim-native keybindings. Built in Rust.
Think Bloomberg Terminal meets btop.
Why pftui?
- Live everything — spot prices from Yahoo Finance and CoinGecko, auto-refreshing on a configurable interval. Cached prices on startup so you never stare at a loading screen.
- Braille charts — high-resolution Unicode braille rendering with gain-aware gradient coloring, volume bars, SMA(20)/SMA(50) overlays, and 6 selectable timeframes (1W → 5Y).
- Ratio analysis — compare any asset against benchmarks. BTC/SPX, AAPL/QQQ, Gold/BTC — cycle through variants with
J/K. - 5 views — Positions, Transactions, Markets (18 symbols), Economy (14 macro indicators), and a Watchlist for assets you're eyeing.
- Privacy mode — percentage-only mode stores zero monetary data. Or toggle
pto hide values in-session. Your portfolio, your business. - 6 themes — Midnight, Catppuccin Mocha, Nord, Dracula, Solarized Dark, Gruvbox. Every pixel is themed. Cycle with
t. - Vim-native —
j/k,gg/G,Ctrl+d/Ctrl+u,/search,Escto close. If you know vim, you already know pftui. - Financially precise —
rust_decimaleverywhere. No floating point. No rounding errors. Decimal strings in SQLite. - Single binary — Rust + bundled SQLite. No runtime dependencies. No API keys required.
Quick Start
# Launch (runs setup wizard on first run)
The setup wizard walks you through adding your positions — with symbol autocomplete and category auto-detection. Choose Full mode (buy/sell transactions with cost basis tracking) or Percentage mode (allocation percentages only, no monetary data stored).
Usage
Views
| Key | View | What it shows |
|---|---|---|
1 |
Positions | Holdings with live prices, daily change %, gain %, allocation %, 52-week range, sparkline trends |
2 |
Transactions | Buy/sell history with date, quantity, price |
3 |
Markets | 18 major symbols — SPX, NDX, BTC, Gold, DXY, 10Y yield, and more |
4 |
Economy | 14 macro indicators — treasury yields, currencies, commodities, VIX |
5 |
Watchlist | Track assets without holding them |
Press Enter on any position for a detail popup (price, cost basis, gain, recent transactions). Press Enter again to open the chart.
Charts
High-resolution braille charts with:
- 6 timeframes:
h/lto cycle — 1W, 1M, 3M, 6M, 1Y, 5Y - Ratio variants:
J/Kto cycle — compare against SPX, QQQ, BTC, Gold - Volume bars: block characters scaled to relative volume
- Moving averages: SMA(20) and SMA(50) overlaid on single-symbol charts
- Gain-aware coloring: green gradients for gains, red for losses
Themes
Six built-in themes, cycled with t:
| Theme | Vibe |
|---|---|
| Midnight | Deep navy with jewel-tone accents (default) |
| Catppuccin | Warm Mocha with pastel highlights |
| Nord | Cool arctic blue-gray |
| Dracula | Purple-dark with vivid accents |
| Solarized | Teal-tinted dark with warm/cool balance |
| Gruvbox | Retro warm brown/orange |
Each theme defines 28 color slots covering every UI element. Your choice persists to config automatically.
Keybindings
Essential keys to get started:
| Key | Action |
|---|---|
j/k |
Navigate up/down |
gg / G |
Jump to top / bottom |
Ctrl+d / Ctrl+u |
Half-page scroll |
/ |
Search / filter |
Enter |
Position detail → chart |
t |
Cycle theme |
p |
Toggle privacy |
? |
Help overlay |
q |
Quit |
Full reference: docs/KEYBINDINGS.md
Architecture
Rust + ratatui + crossterm. Price service runs on a dedicated thread with Tokio, communicating via channels. TUI renders at ~60fps. SQLite (bundled) for persistence. Zero external runtime dependencies.
Full technical docs: docs/ARCHITECTURE.md
Inspirations
- btop — aesthetic density and theme systems
- lazygit — keyboard-driven TUI UX
- tickrs — terminal stock charts with braille
- ticker — simple terminal stock tracker
- Bloomberg Terminal — information density, ratio analysis, multi-panel layout
License
MIT