Overview
axonml-tui is a comprehensive terminal user interface for the AxonML machine learning framework. It provides real-time visualization of neural network architectures, dataset statistics, training progress, loss curves, and a file browser for navigating models and datasets - all from the comfort of your terminal.
Features
- Model Architecture Visualization - View layer structures, parameter counts, shapes, and trainable status with interactive navigation
- Dataset Explorer - Analyze class distributions, feature statistics, data splits, and preview dataset metadata
- Real-Time Training Monitor - Track epochs, batches, loss/accuracy metrics with sparkline trends and ETA estimation
- Interactive Graphs - Visualize loss curves, accuracy charts, and learning rate schedules with switchable chart types
- File Browser - Navigate directories, preview model and dataset files, with support for multiple formats
- Help System - Comprehensive keyboard shortcut reference organized by category
- Themeable UI - NexusForge-inspired color scheme with teal, terracotta, and cream accents
Modules
| Module |
Description |
app |
Main application state, tab management, and navigation logic |
event |
Keyboard input handling and event routing to views |
theme |
NexusForge color palette and style presets (teal, terracotta, cream) |
ui |
Core rendering logic for header, content, footer, and help overlay |
views::model |
Neural network architecture display with layer details |
views::data |
Dataset statistics, class distribution, and feature tables |
views::training |
Real-time training progress with gauges and sparklines |
views::graphs |
Loss, accuracy, and learning rate chart rendering |
views::files |
Tree-based file browser with preview pane |
views::help |
Keyboard shortcut reference organized by category |
Usage
Add axonml-tui to your Cargo.toml:
[dependencies]
axonml-tui = "0.1.0"
Basic Example
use axonml_tui::run;
fn main() -> std::io::Result<()> {
run(None, None)
}
Loading a Model on Startup
use axonml_tui::run;
use std::path::PathBuf;
fn main() -> std::io::Result<()> {
let model_path = PathBuf::from("models/mnist_classifier.axonml");
run(Some(model_path), None)
}
Loading Both Model and Dataset
use axonml_tui::run;
use std::path::PathBuf;
fn main() -> std::io::Result<()> {
let model_path = PathBuf::from("models/resnet.axonml");
let data_path = PathBuf::from("datasets/cifar10");
run(Some(model_path), Some(data_path))
}
Keyboard Shortcuts
Global
| Key |
Action |
Tab / Shift+Tab |
Switch between views |
1 - 5 |
Jump to specific view (Model, Data, Training, Graphs, Files) |
? |
Toggle help overlay |
q |
Quit application |
Navigation
| Key |
Action |
j / Down |
Move selection down |
k / Up |
Move selection up |
h / Left |
Collapse / Previous panel |
l / Right |
Expand / Next panel |
Enter |
Select / Open |
Model View
| Key |
Action |
d |
Toggle detailed layer view |
Enter |
View layer details |
Training View
| Key |
Action |
p |
Pause / Resume training |
r |
Refresh training data |
Graphs View
| Key |
Action |
< / > |
Switch chart type (Loss / Accuracy / LR) |
z |
Toggle zoom mode |
Files View
| Key |
Action |
Enter |
Open file / Toggle directory |
Backspace / u |
Go to parent directory |
~ |
Go to home directory |
Supported File Formats
| Category |
Extensions |
| Models |
.axonml, .onnx, .pt, .pth, .safetensors, .h5, .keras |
| Datasets |
.npz, .npy, .csv, .parquet, .arrow, .tfrecord |
| Config |
.toml, .yaml, .yml, .json |
Tests
Run the test suite:
cargo test -p axonml-tui
Run with verbose output:
cargo test -p axonml-tui -- --nocapture
Dependencies
- ratatui - Terminal UI framework
- crossterm - Cross-platform terminal manipulation
- tokio - Async runtime
- serde / serde_json - Serialization
- chrono - Time handling
- dirs - File system utilities
License
Licensed under either of:
at your option.