A terminal user interface (TUI) for monitoring Kedastral forecaster and scaler services.
- π Interactive Setup: First-run wizard to configure connection settings
- π Live Monitoring: Real-time updates of forecast and scaler status
- βΈοΈ Pause/Resume: Toggle between live and paused modes
- π Manual Refresh: Force refresh on demand
- π Config File: Persistent configuration in
~/.config/kedastral-tui/config.json
Download the latest release for your platform from the releases page.
Linux (amd64)
wget https://github.com/HatiCode/kedastral-tui/releases/latest/download/kedastral-tui-<version>-linux-amd64.tar.gz
tar -xzf kedastral-tui-<version>-linux-amd64.tar.gz
chmod +x kedastral-tui
sudo mv kedastral-tui /usr/local/bin/macOS (Apple Silicon)
wget https://github.com/HatiCode/kedastral-tui/releases/latest/download/kedastral-tui-<version>-darwin-arm64.tar.gz
tar -xzf kedastral-tui-<version>-darwin-arm64.tar.gz
chmod +x kedastral-tui
sudo mv kedastral-tui /usr/local/bin/git clone https://github.com/HatiCode/kedastral-tui.git
cd kedastral-tui
make buildThe binary will be created at bin/kedastral-tui.
On first launch (or if no config exists), you'll be guided through an interactive setup:
./bin/kedastral-tuiThe wizard will ask for:
- Forecaster URL (e.g.,
http://localhost:8081) - Scaler URL (default:
http://localhost:8082) - Workload name (e.g.,
test-app)
Configuration is saved to ~/.config/kedastral-tui/config.json.
After setup, simply run:
./bin/kedastral-tuiOr with custom settings:
./bin/kedastral-tui --forecaster-url=http://kedastral-forecaster:8081 --workload=my-app- SPACE: Toggle between live and paused modes
- R: Manual refresh (fetch latest data)
- H: Toggle help screen
- Q or Ctrl+C: Quit
Configuration priority (highest to lowest):
- Command-line flags
- Environment variables
- Config file (
~/.config/kedastral-tui/config.json) - Defaults
--forecaster-url Forecaster HTTP URL (required)
--scaler-url Scaler HTTP URL (default: http://localhost:8082)
--workload Workload name to monitor (required)
--refresh-interval Refresh interval in live mode (default: 5s)
--lead-time Lead time for replica selection (default: 5m)
--log-level Log level: debug, info, warn, error (default: error)
--version Print version and exitexport FORECASTER_URL=http://localhost:8081
export SCALER_URL=http://localhost:8082
export WORKLOAD=test-app
export REFRESH_INTERVAL=5s
export LEAD_TIME=5mLocation: ~/.config/kedastral-tui/config.json
Example:
{
"forecaster_url": "http://localhost:8081",
"scaler_url": "http://localhost:8082",
"workload": "test-app"
}make buildmake runmake cleanmake fmtmake test- Status Bar: Real-time connection health, forecast age, mode indicator
- Forecast Chart: ASCII line chart showing predicted metric values over the horizon
- Replica Table: Detailed scaling decisions with lead time highlighting
- Scaler Status: Active/inactive state and current replica count
- Help Screen: Press
Hfor keyboard shortcuts and panel descriptions
- Interactive Setup: First-run wizard saves configuration automatically
- Live Monitoring: Auto-refresh every 5s (configurable)
- Pause Mode: Freeze updates to inspect current state
- Manual Refresh: Force data fetch with
Rkey - Multi-source Config: File β Env vars β Flags precedence
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Kedastral Monitor - workload: test-app [LIVE] Last: 2s agoβ
β Status: Forecaster β Scaler β Forecast age: 3s β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β FORECAST TIMELINE (next 30min) β
β β
β RPS β
β 220 β€ βββ β
β 180 β€ ββ ββ βββ β
β 140 β€ ββ ββββββ ββ β
β 100 β€β ββ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β Now +30m β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β REPLICA SCALING DECISIONS β
β β
β Time Forecast Desired Selected β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β Now 36.2 rps 2 β
β +5min 180.5 rps 3 β SELECTED (lead=5m) β
β +10min 220.3 rps 3 β
β ... β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β SCALER STATUS β
β Active: β Desired replicas: 3 Forecast age seen: 2.1s β
β β
β [SPACE] pause [R] refresh [H] help [Q] quit β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
kedastral-tui/
βββ main.go # Entry point with version support
βββ config/
β βββ config.go # Multi-source configuration management
βββ client/
β βββ client.go # HTTP client for forecaster/scaler APIs
βββ ui/
β βββ model.go # Bubble Tea model (state management)
β βββ update.go # Event handling and async updates
β βββ view.go # Main view rendering
β βββ messages.go # Custom Bubble Tea messages
β βββ setup.go # Interactive setup wizard
βββ components/ # Reusable UI components
βββ status_bar.go # Status bar with health indicators
βββ forecast_chart.go # ASCII line chart renderer
βββ replica_table.go # Replica scaling decisions table
βββ help.go # Help screen component
This project uses GitHub Actions for:
- Continuous Integration: Automated testing and linting on every push
- Releases: Automatic binary builds for Linux, macOS, and Windows on tagged releases
- Security: Weekly security scans with Gosec
To create a release:
git tag v0.1.0
git push origin v0.1.0See LICENSE file.