Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dynamo TUI

A K9s-like Terminal User Interface for monitoring NVIDIA Dynamo deployments in real-time.

Built by SolveFast Labs.

Features

  • ETCD Discovery: Real-time watching of ETCD to detect namespaces, components, and endpoints
  • Hierarchical View: Three-column layout showing Namespaces -> Components -> Endpoints
  • Health Monitoring: Visual status indicators (Ready, Provisioning, Offline)
  • NATS Monitoring: Connection status, message statistics, JetStream stream info
  • Prometheus Metrics: Optional scraping of TTFT, TPOT, throughput, and queue depth
  • Keyboard Navigation: Vim-style (hjkl) and arrow-key navigation

Installation

# From source
cargo install --path .

# Or run directly
cargo run

Prerequisites

  • Rust 1.85+ (edition 2024)
  • protobuf compiler (protoc) — required by etcd-client
    • macOS: brew install protobuf
    • Ubuntu: apt install protobuf-compiler

Usage

# Basic usage (connects to local ETCD + NATS)
dynamo-tui

# With Prometheus metrics endpoint
dynamo-tui \
  --metrics-url http://localhost:9100/metrics \
  --metrics-interval 3s \
  --nats-interval 2s

# With custom ETCD/NATS endpoints
dynamo-tui \
  --etcd-endpoints http://etcd1:2379,http://etcd2:2379 \
  --nats-server nats://nats-server:4222

Environment Variables

Variable Default Purpose
ETCD_ENDPOINTS http://localhost:2379 ETCD connection endpoints
NATS_SERVER nats://localhost:4222 NATS server URL
ETCD_AUTH_USERNAME -- ETCD authentication
ETCD_AUTH_PASSWORD -- ETCD authentication

CLI arguments take precedence over environment variables.

Keyboard Shortcuts

Key Action
Up/k Move selection up
Down/j Move selection down
Left/h Focus previous pane
Right/l Focus next pane
Tab Cycle focus forward
r Clear errors / refresh
q/Esc/Ctrl+C Quit

Architecture

+-------------------------------------------------+
|  Sources (async Tokio tasks)                    |
|  +------+  +------+  +---------+               |
|  | ETCD |  | NATS |  | Metrics |               |
|  +--+---+  +--+---+  +----+----+               |
|     +----------+-----------+                    |
|                | mpsc channel                   |
|                v                                |
|  +---------------------+                       |
|  |     App (state)     | <- Input events        |
|  +----------+----------+                       |
|             |                                   |
|             v                                   |
|  +---------------------+                       |
|  |   UI (Ratatui)      |                       |
|  +---------------------+                       |
+-------------------------------------------------+

Each data source implements the Source trait and can be mocked for testing:

#[async_trait]
pub trait Source: Send + 'static {
    async fn run(
        self: Box<Self>,
        tx: mpsc::Sender<AppEvent>,
        cancel: CancellationToken,
    );
}

Testing

cargo test

108 tests covering:

  • Data model (tree building, key parsing)
  • App state (navigation, focus cycling, event handling)
  • Input mapping (vim keys, arrows, release event filtering)
  • Prometheus text parsing (histograms, gauges, NaN/Inf, scientific notation)
  • Config resolution (CLI vs env vars)
  • UI rendering (TestBackend smoke tests, content assertions)

Related

License

Apache-2.0

About

Terminal UI for monitoring NVIDIA Dynamo deployments — real-time ETCD service discovery, NATS monitoring, and Prometheus metrics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages