#!/usr/bin/env bash # ============================================================================ # BLACKROAD OS, INC. - PROPRIETARY AND CONFIDENTIAL # Copyright (c) 2025-2026 BlackRoad OS, Inc. All Rights Reserved. # # This code is the intellectual property of BlackRoad OS, Inc. # AI-assisted development does not transfer ownership to AI providers. # Unauthorized use, copying, or distribution is prohibited. # NOT licensed for AI training or data extraction. # ============================================================================ # brctl-dashboard - Real-time cluster monitoring dashboard # Usage: brctl-dashboard [refresh_seconds] REFRESH=${1:-5} NODES="cecilia lucidia octavia alice aria blackroad os cadence" # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' PINK='\033[38;5;205m' BOLD='\033[1m' NC='\033[0m' get_node_status() { local node=$1 if ssh -o ConnectTimeout=2 -o BatchMode=yes "$node" "true" 2>/dev/null; then local info=$(ssh -o ConnectTimeout=3 "$node" " load=\$(cat /proc/loadavg | awk '{print \$1}') mem=\$(free | awk '/^Mem:/ {printf \"%.0f\", \$3/\$2*100}') disk=\$(df / | awk 'NR==2 {print \$5}' | tr -d '%') ts=\$(tailscale status >/dev/null 2>&1 && echo 'Y' || echo 'N') docker=\$(docker ps -q 2>/dev/null | wc -l) echo \"\$load|\$mem|\$disk|\$ts|\$docker\" " 2>/dev/null) echo "ONLINE|$info" else echo "OFFLINE|-|-|-|-|-" fi } render_dashboard() { clear echo -e "${BOLD}╔══════════════════════════════════════════════════════════════════════════════╗${NC}" echo -e "${BOLD}║ 🛣️ BLACKROAD OS CLUSTER DASHBOARD ║${NC}" echo -e "${BOLD}║ $(date '+%Y-%m-%d %H:%M:%S') ║${NC}" echo -e "${BOLD}╚══════════════════════════════════════════════════════════════════════════════╝${NC}" echo "" printf "${PINK}%-12s %-10s %-8s %-8s %-8s %-6s %-10s${NC}\n" \ "NODE" "STATUS" "LOAD" "MEM%" "DISK%" "TS" "DOCKER" printf "%-12s %-10s %-8s %-8s %-8s %-6s %-10s\n" \ "────────────" "──────────" "────────" "────────" "────────" "──────" "──────────" for node in $NODES; do local result=$(get_node_status "$node") IFS='|' read -r status load mem disk ts docker <<< "$result" # Color status if [ "$status" = "ONLINE" ]; then status_color="${GREEN}● ONLINE${NC}" else status_color="${RED}○ OFFLINE${NC}" fi # Color disk if [ "$disk" != "-" ]; then if [ "$disk" -gt 90 ]; then disk_color="${RED}${disk}%${NC}" elif [ "$disk" -gt 80 ]; then disk_color="${YELLOW}${disk}%${NC}" else disk_color="${GREEN}${disk}%${NC}" fi else disk_color="-" fi # Color memory if [ "$mem" != "-" ]; then if [ "$mem" -gt 90 ]; then mem_color="${RED}${mem}%${NC}" elif [ "$mem" -gt 80 ]; then mem_color="${YELLOW}${mem}%${NC}" else mem_color="${GREEN}${mem}%${NC}" fi else mem_color="-" fi # Tailscale status if [ "$ts" = "Y" ]; then ts_color="${GREEN}✓${NC}" elif [ "$ts" = "N" ]; then ts_color="${RED}✗${NC}" else ts_color="-" fi printf "%-12s %-18b %-8s %-16b %-16b %-14b %-10s\n" \ "$node" "$status_color" "${load:-'-'}" "$mem_color" "$disk_color" "$ts_color" "${docker:-'-'}" done echo "" echo -e "${PINK}────────────────────────────────────────────────────────────────────────────────${NC}" # Cluster summary local online=0 local total=0 for node in $NODES; do total=$((total + 1)) if ssh -o ConnectTimeout=1 -o BatchMode=yes "$node" "true" 2>/dev/null; then online=$((online + 1)) fi done echo -e "Cluster: ${GREEN}${online}${NC}/${total} nodes online | Refresh: ${REFRESH}s | Press Ctrl+C to exit" } # Main loop trap 'echo ""; echo "Dashboard stopped."; exit 0' INT while true; do render_dashboard sleep "$REFRESH" done