uptime-kuma-dashboard CLI
Find a file
2026-02-10 11:55:01 -04:00
.forgejo/workflows Added README and production release workflow 2026-01-22 09:46:38 -04:00
.vscode Fix translation error 2026-01-03 08:45:13 -04:00
assets Adding demo 2026-02-10 11:53:04 -04:00
src Fix typo 2026-02-07 14:34:04 -04:00
.gitignore Caching translations 2025-12-29 12:34:24 -04:00
Cargo.lock chore: Release uptime-kuma-dashboard version 0.38.2 2026-02-07 14:34:40 -04:00
Cargo.toml chore: Release uptime-kuma-dashboard version 0.38.2 2026-02-07 14:34:40 -04:00
LICENSE Adding LICENSE 2026-01-22 16:25:48 -04:00
README.md Fix typo 2026-02-10 11:55:01 -04:00

Uptime Kuma Terminal Dashboard

Terminal Dashboard Preview

A terminal-based monitoring dashboard for Uptime Kuma that displays service status, uptime percentages, and historical performance data directly in your terminal. Built with Rust for performance and reliability.

Demo

Overview

This personal project started as a way to monitor my home lab services without needing a web browser. It connects to your Uptime Kuma instance API and presents a clean, color-coded view of your services' status with real-time updates. The dashboard works great on servers, remote terminals, or anywhere you prefer a lightweight monitoring solution.

Perfect for DevOps engineers, system administrators, or anyone who prefers terminal workflows over web interfaces for quick status checks.

Features

  • Real-time service monitoring with automatic refresh
  • Color-coded status indicators (green for up, red for down)
  • Historical uptime visualization with compact status history lines
  • Responsive terminal UI that adapts to window size
  • Internationalization support (English and Portuguese)
  • Configurable refresh intervals
  • Minimal resource usage (runs efficiently even on low-power devices)
  • Keyboard navigation support (arrow keys, home/end)
  • Mobile-friendly design for SSH connections

Tech Stack

This project demonstrates proficiency with several modern technologies:

  • Rust (core language with async capabilities)
  • ratatui (terminal UI framework)
  • reqwest (HTTP client for API communication)
  • serde (JSON serialization/deserialization)
  • clap (command-line argument parsing)
  • fluent-templates (internationalization framework)
  • REST API integration patterns
  • Error handling and logging best practices
  • Cross-platform terminal development

You can find the latest releases in the Releases section.

Installation

  1. Go to the Releases page
  2. Download the binary for your operating system:
    • Linux (x86_64): uptime-kuma-dashboard-x86_64-unknown-linux-gnu
    • Linux (ARM64): uptime-kuma-dashboard-aarch64-unknown-linux-gnu (Raspberry Pi, ARM servers)
    • Windows: uptime-kuma-dashboard-x86_64-pc-windows-gnu.exe
  3. Verify the checksum (recommended for security):
    sha256sum -c SHA256SUMS.txt
    
  4. Make it executable (Linux/ARM only):
    chmod +x uptime-kuma-dashboard-*
    
  5. Run with your parameters:
    ./uptime-kuma-dashboard-* --base-url="http://your-kuma:3001/" --slug="your-slug"
    

Option 2: Build From Source

Prerequisites

  • Rust 1.74+ toolchain (install via rustup)
  • Uptime Kuma instance with API access

Build from Source

# Clone the repository
git clone https://git.marcodearaujo.com/marcodearaujo/uptime-kuma-dashboard.git
cd uptime-kuma-dashboard

# Build the project
cargo build --release

# Run the dashboard (replace with your Uptime Kuma URL and status page slug)
./target/release/uptime-kuma-dashboard \
  --base-url="http://your-uptime-kuma-instance:3001/" \
  --slug="your-status-page-slug"

Usage

The dashboard requires two parameters:

  • --base-url: Your Uptime Kuma instance URL (including port)
  • --slug: Your status page slug identifier

Example:

./uptime-kuma-dashboard --base-url="http://192.168.1.100:3001/" --slug="home-services"

Controls during runtime:

  • q or ESC: Exit the dashboard
  • / or k/j: Navigate through monitors
  • Home/End: Jump to top/bottom of the list

Configuration

You can set environment variables to avoid typing parameters each time:

export UPTIME_KUMA_URL="http://your-uptime-kuma-instance:3001/"
export STATUS_PAGE_SLUG="your-status-page-slug"

Development Notes

This project follows Rust best practices including:

  • Comprehensive error handling with anyhow
  • Internationalization-ready architecture
  • Modular code organization
  • Performance optimization for terminal rendering
  • Cross-platform compatibility testing

The architecture separates concerns into:

  • API client layer
  • Data processing core
  • UI rendering components
  • Configuration management
  • Internationalization system

License

This project is available under the MIT License - see the LICENSE file for details.


Developed as a personal learning project to improve Rust skills and create a useful tool for my home lab monitoring. Feedback welcome!