Terminal UI for monitoring Solana program performance in real-time — like htop for Solana programs.
soltop provides real-time monitoring of Solana program activity through an interactive terminal interface. Track transactions per second, compute unit consumption, success rates, and more across all active programs on the network.
- Real-time Program Monitoring: Live tracking of all programs executing on Solana
- Performance Metrics: TPS, compute units, success rates, transaction counts
- Network Overview: Slot tracking, lag monitoring, aggregate statistics
- Interactive UI:
- Sort by any column (TPS, CU/sec, success rate)
- Toggle between live and windowed statistics
- Hide/show system programs (Vote, System, Token programs)
- Truncate or show full program IDs
- Customizable: Choose RPC endpoint, configure monitoring preferences
- Lightweight: Low resource usage, runs smoothly in any terminal
Download the latest binary for Linux x86_64:
# Download the latest release
wget https://github.com/jacquesmats/soltop-oss/releases/latest/download/soltop-linux-x86_64
# Make it executable
chmod +x soltop-linux-x86_64
# Move to PATH (optional)
sudo mv soltop-linux-x86_64 /usr/local/bin/soltopRequires Rust 1.75 or later:
git clone https://github.com/jacquesmats/soltop-oss.git
cd soltop-oss
cargo build --release
./target/release/soltop# Monitor Solana mainnet with default settings
soltop
# Use a custom RPC endpoint
soltop --rpc-url https://your-rpc-endpoint.com
# Hide system programs by default
soltop --hide-system
# Enable verbose performance statistics
soltop --verboseOptions:
-v, --verbose Enable verbose performance statistics
--rpc-url <URL> RPC endpoint URL
[default: https://api.mainnet-beta.solana.com]
--hide-system Hide system programs (Vote, ComputeBudget, System)
-h, --help Print help information
| Key | Action |
|---|---|
q |
Quit the application |
t |
Toggle program ID truncation (full vs shortened) |
u |
Toggle system program visibility |
w |
Toggle view mode (Live vs Window aggregate) |
- Live Mode (default): Shows recent activity with real-time updates
- Window Mode: Aggregated statistics over the entire monitoring window (5 minutes)
┌ Network Overview ────────────────────────────────────────────┐
│ Slot: 285742301 | Network: 285742305 | Lag: 4 slots │
│ Uptime: 2m 15s | Window: 5m 0s | Programs: 42 │
│ Total TPS: 3,247.5 | Total Txs: 125,843 | Avg Success: 94.2%│
│ Total CU/sec: 48,000,000,000 │
└──────────────────────────────────────────────────────────────┘
- Slot: Current slot being processed by soltop
- Network: Latest slot on the Solana network
- Lag: How many slots behind the network tip soltop is
- Uptime: How long soltop has been running
- Window: Time window for statistics aggregation (5 minutes)
- Programs: Number of active programs detected
- Total TPS: Aggregate transactions per second across all programs
- Total Txs: Total transaction count in the current window
- Avg Success: Average success rate across all programs
- Total CU/sec: Aggregate compute units consumed per second
┌ Programs ────────────────────────────────────────────────────┐
│ Program ID TPS Txs Success CU/sec AvgCU│
├──────────────────────────────────────────────────────────────┤
│ JUP6Lkb...aV4 847.2 52.4k 98.5% 12.8B 15,123│
│ 675kPX9...SQv 423.1 18.2k 95.2% 8.4B 19,847│
└──────────────────────────────────────────────────────────────┘
- Program ID: Solana program public key (truncated by default, press
tto toggle) - TPS: Transactions per second for this program
- Txs: Total transaction count in the window
- Success: Success rate percentage
- CU/sec: Compute units consumed per second
- AvgCU: Average compute units per transaction
soltop/
├── src/
│ ├── main.rs # Entry point, CLI argument parsing
│ ├── lib.rs # Public API exports
│ ├── rpc/ # Solana RPC client and data fetching
│ │ ├── client.rs # RPC HTTP client (JSON-RPC)
│ │ ├── parser.rs # Log parsing for compute units
│ │ └── types.rs # RPC response types
│ ├── stats/ # Statistics collection and aggregation
│ │ ├── monitor.rs # Main monitoring coordinator (producer/consumer)
│ │ ├── network.rs # Network-wide state management
│ │ ├── program.rs # Per-program statistics
│ │ ├── ring_buffer.rs # Efficient circular buffer
│ │ └── filter.rs # System program filtering
│ └── ui/ # Terminal user interface
│ ├── app.rs # Main TUI application logic
│ └── theme.rs # Color schemes
└── Cargo.toml
- Data Collection: Polls Solana RPC endpoint every 400ms for new slots
- Parsing: Extracts program invocations and compute unit usage from transaction logs
- Aggregation: Maintains rolling window of statistics using ring buffers (5-minute window)
- Rendering: Updates TUI at ~10fps with cached statistics
The application uses a producer-consumer pattern:
- Producer task: Continuously fetches new slots from the RPC endpoint
- Consumer task: Processes slot data and updates program statistics
- UI task: Renders the terminal interface with cached stats
- RPC Load: Each soltop instance makes approximately 2-3 RPC requests per second
- Memory Usage: ~10-50MB depending on number of active programs
- CPU Usage: <5% on modern systems
- Network Bandwidth: ~100KB/sec
Recommendation: Use a dedicated RPC endpoint or rate-limited public endpoint for production monitoring. Public RPC endpoints may throttle requests.
- Platform Support: Currently Linux x86_64 only (macOS and Windows support planned)
- Distribution: Binary releases only (crates.io publication planned for future release)
- Navigation: Keyboard navigation in program list (up/down arrows) not yet implemented
- Compute Units: Some programs may not emit detailed logs, resulting in incomplete CU metrics
If soltop fails to connect to the RPC endpoint:
# Test RPC endpoint accessibility
curl -X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getSlot"}' \
https://api.mainnet-beta.solana.comIf the endpoint is unreachable, try a different RPC provider or check your network connection.
- Ensure you're using a responsive RPC endpoint with low latency
- Public endpoints may have rate limits causing retries and increased CPU usage
- Some programs may not be active in the current monitoring window
- System programs are hidden by default (press
uto show them) - Very low-activity programs may not accumulate enough transactions to appear in rankings
- Ensure your terminal supports UTF-8 and has a minimum width of 80 characters
- If colors appear incorrect, try a different terminal emulator
Contributions are welcome! Please see CONTRIBUTING.md for guidelines on:
- Setting up a development environment
- Code style and formatting
- Running tests
- Submitting pull requests
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with ratatui for the terminal UI
- Powered by tokio for async runtime
- Inspired by
htopand the need for better Solana program monitoring - Thanks to the Rust and Solana communities for their support
Future plans for soltop:
- Multi-platform support: macOS (arm64 + Intel) and Windows binaries
- crates.io publication:
cargo install soltopsupport - Configurable monitoring window: User-defined time windows beyond 5 minutes
- Historical data export: Export statistics to CSV, JSON for analysis
- Alert thresholds: Notifications when programs exceed thresholds
- Keyboard navigation: Scroll through program list with arrow keys
- Multiple themes: Dark, light, and custom color schemes
- RPC connection pooling: Better performance with multiple endpoints
- Integration tests: Comprehensive testing with mock RPC
- Configuration file: Save preferences in ~/.config/soltop/config.toml
- Issues: Report bugs or request features on GitHub Issues
- Discussions: Ask questions or share ideas in GitHub Discussions
Built with 🦀 for the Solana ecosystem

