Files
blackroad/bin/blackroad.backup
Alexa Amundson 78fbe80f2a Initial monorepo — everything BlackRoad in one place
bin/       230 CLI tools (ask-*, br-*, agent-*, roadid, carpool)
scripts/   99 automation scripts
fleet/     Node configs and deployment
workers/   Cloudflare Worker sources (roadpay, road-search, squad webhooks)
roadc/     RoadC programming language
roadnet/   Mesh network (5 APs, WireGuard)
operator/  Memory system scripts
config/    System configs
dotfiles/  Shell configs
docs/      Documentation

BlackRoad OS — Pave Tomorrow.

RoadChain-SHA2048: d1a24f55318d338b
RoadChain-Identity: alexa@sovereign
RoadChain-Full: d1a24f55318d338b24b60bad7be39286379c76ae5470817482100cb0ddbbcb97e147d07ac7243da0a9f0363e4e5c833d612b9c0df3a3cd20802465420278ef74875a5b77f55af6fe42a931b8b635b3d0d0b6bde9abf33dc42eea52bc03c951406d8cbe49f1a3d29b26a94dade05e9477f34a7d4d4c6ec4005c3c2ac54e73a68440c512c8e83fd9b1fe234750b898ef8f4032c23db173961fe225e67a0432b5293a9714f76c5c57ed5fdf35b9fb40fd73c03ebf88b7253c6a0575f5afb6a6b49b3bda310602fb1ef676859962dad2aebbb2875814b30eee0a8ba195e482d4cbc91d8819e7f38f6db53e8063401649c77bb994371473cabfb917fb53e8cbe73d60
2026-03-14 17:08:41 -05:00

2788 lines
117 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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.
# ============================================================================
#═══════════════════════════════════════════════════════════════════════════════
# ██████╗ ██╗ █████╗ ██████╗██╗ ██╗██████╗ ██████╗ █████╗ ██████╗
# ██╔══██╗██║ ██╔══██╗██╔════╝██║ ██╔╝██╔══██╗██╔═══██╗██╔══██╗██╔══██╗
# ██████╔╝██║ ███████║██║ █████╔╝ ██████╔╝██║ ██║███████║██║ ██║
# ██╔══██╗██║ ██╔══██║██║ ██╔═██╗ ██╔══██╗██║ ██║██╔══██║██║ ██║
# ██████╔╝███████╗██║ ██║╚██████╗██║ ██╗██║ ██║╚██████╔╝██║ ██║██████╔╝
# ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝
# UNIFIED CLI - 720+ SCRIPTS UNDER ONE COMMAND
# Also callable as: lucidia, br, road
#═══════════════════════════════════════════════════════════════════════════════
set -euo pipefail
# Detect invocation name
INVOKED_AS="$(basename "$0")"
# Official Brand Colors (from BLACKROAD-MASTER_BRAND.jpg)
# Gradient: 208 → 202 → 198 → 163 → 33
AMBER=$'\033[38;5;208m' # #FF8700
ORANGE=$'\033[38;5;202m' # #FF5F00
PINK=$'\033[38;5;198m' # #FF0087 Hot Pink
MAGENTA=$'\033[38;5;163m' # #D700AF
BLUE=$'\033[38;5;33m' # #0087FF
VIOLET=$'\033[38;5;163m' # Same as magenta for compatibility
PINK=$'\033[38;5;51m' # Lucidia accent
GREEN=$'\033[38;5;82m'
RED=$'\033[38;5;196m'
YELLOW=$'\033[38;5;226m'
WHITE=$'\033[1;37m'
DIM=$'\033[2m'
RESET=$'\033[0m'
BOLD=$'\033[1m'
# Brand gradient function
brand_gradient() {
for c in 208 202 198 163 33 163 198 202 208; do
printf "\033[48;5;${c}m \033[0m"
done
echo ""
}
HOME_DIR="$HOME"
BIN_DIR="$HOME/bin"
# Lucidia-specific banner
show_lucidia_banner() {
echo -e "${PINK}╔═══════════════════════════════════════════════════════════════╗${RESET}"
echo -e "${PINK}${RESET} ${WHITE}██╗ ██╗ ██╗ ██████╗██╗██████╗ ██╗ █████╗${RESET} ${PINK}${RESET}"
echo -e "${PINK}${RESET} ${WHITE}██║ ██║ ██║██╔════╝██║██╔══██╗██║██╔══██╗${RESET} ${PINK}${RESET}"
echo -e "${PINK}${RESET} ${WHITE}██║ ██║ ██║██║ ██║██║ ██║██║███████║${RESET} ${PINK}${RESET}"
echo -e "${PINK}${RESET} ${WHITE}██║ ██║ ██║██║ ██║██║ ██║██║██╔══██║${RESET} ${PINK}${RESET}"
echo -e "${PINK}${RESET} ${WHITE}███████╗╚██████╔╝╚██████╗██║██████╔╝██║██║ ██║${RESET} ${PINK}${RESET}"
echo -e "${PINK}${RESET} ${DIM}╚══════╝ ╚═════╝ ╚═════╝╚═╝╚═════╝ ╚═╝╚═╝ ╚═╝${RESET} ${PINK}${RESET}"
echo -e "${PINK}╠═══════════════════════════════════════════════════════════════╣${RESET}"
echo -e "${PINK}${RESET} ${WHITE}AI Assistant${RESET} ${DIM}${RESET} ${WHITE}Multi-Model${RESET} ${DIM}${RESET} ${WHITE}Local-First${RESET} ${DIM}${RESET} ${WHITE}BlackRoad OS${RESET} ${PINK}${RESET}"
echo -e "${PINK}╚═══════════════════════════════════════════════════════════════╝${RESET}"
}
# BlackRoad banner
show_banner() {
if [[ "$INVOKED_AS" == "lucidia" ]]; then
show_lucidia_banner
return
fi
echo -e "${PINK}╔═══════════════════════════════════════════════════════════════╗${RESET}"
echo -e "${PINK}${RESET} ${AMBER}██████${PINK}${AMBER} ██${PINK}${AMBER} █████${PINK}${AMBER} ██████${PINK}${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}██████${PINK}${AMBER} ██████${PINK}${AMBER} █████${PINK}${AMBER}██████${PINK}${PINK}${RESET}"
echo -e "${PINK}${RESET} ${AMBER}██${PINK}╔══${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}██${PINK}╔══${AMBER}██${PINK}${AMBER}██${PINK}╔════╝${AMBER}██${PINK}${AMBER}██${PINK}╔╝${AMBER}██${PINK}╔══${AMBER}██${PINK}${AMBER}██${PINK}╔═══${AMBER}██${PINK}${AMBER}██${PINK}╔══${AMBER}██${PINK}${AMBER}██${PINK}╔══${AMBER}██${PINK}${PINK}${RESET}"
echo -e "${PINK}${RESET} ${AMBER}██████${PINK}╔╝${AMBER}██${PINK}${AMBER}███████${PINK}${AMBER}██${PINK}${AMBER}█████${PINK}╔╝ ${AMBER}██████${PINK}╔╝${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}███████${PINK}${AMBER}██${PINK}${AMBER}██${PINK}${PINK}${RESET}"
echo -e "${PINK}${RESET} ${AMBER}██${PINK}╔══${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}██${PINK}╔══${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}██${PINK}╔═${AMBER}██${PINK}${AMBER}██${PINK}╔══${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}██${PINK}╔══${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}██${PINK}${PINK}${RESET}"
echo -e "${PINK}${RESET} ${AMBER}██████${PINK}╔╝${AMBER}███████${PINK}${AMBER}██${PINK}${AMBER}██${PINK}║╚${AMBER}██████${PINK}${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}██${PINK}║╚${AMBER}██████${PINK}╔╝${AMBER}██${PINK}${AMBER}██${PINK}${AMBER}██████${PINK}╔╝ ${PINK}${RESET}"
echo -e "${PINK}${RESET} ${DIM}╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝${RESET} ${PINK}${RESET}"
echo -e "${PINK}╠═══════════════════════════════════════════════════════════════╣${RESET}"
echo -e "${PINK}${RESET} ${WHITE}720+ Scripts${RESET} ${DIM}${RESET} ${WHITE}15 Orgs${RESET} ${DIM}${RESET} ${WHITE}1,085 Repos${RESET} ${DIM}${RESET} ${WHITE}8 Devices${RESET} ${DIM}${RESET} ${WHITE}One Command${RESET} ${PINK}${RESET}"
echo -e "${PINK}╚═══════════════════════════════════════════════════════════════╝${RESET}"
}
show_help() {
show_banner
echo
local cmd_name="$INVOKED_AS"
echo -e "${WHITE}USAGE:${RESET} $cmd_name <category> <command> [args...]"
echo
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo -e "${WHITE}ALIASES${RESET}: blackroad, lucidia, br, road"
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo -e "${WHITE}CATEGORIES${RESET}"
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo
echo -e " ${PINK}ai${RESET} Multi-model AI chat, code review, analysis"
echo -e " ${GREEN}local${RESET} ${WHITE}LOCAL AI on Pi fleet (Anthropic bypassed)${RESET}"
echo -e " ${GREEN}ask${RESET} ${WHITE}Ask local agents: cece, lucidia, aria, octavia${RESET}"
echo -e " ${GREEN}tmux${RESET} ${WHITE}Terminal workspaces (dashboard, fleet, ai, dev)${RESET}"
echo -e " ${GREEN}ssh${RESET} ${WHITE}Quick device access (cecilia, lucidia, all)${RESET}"
echo -e " ${GREEN}ollama${RESET} ${WHITE}Fleet model management (pull, run, ps)${RESET}"
echo -e " ${GREEN}watch${RESET} ${WHITE}Live monitoring (status, fleet, memory)${RESET}"
echo -e " ${GREEN}sync${RESET} ${WHITE}Synchronize across fleet (scripts, config)${RESET}"
echo -e " ${AMBER}memory${RESET} Memory system, journals, coordination (30+ commands)"
echo -e " ${AMBER}agent${RESET} AI agents, Claude sessions, orchestration (25+ commands)"
echo -e " ${AMBER}deploy${RESET} Deployment to all platforms (50+ commands)"
echo -e " ${AMBER}infra${RESET} Infrastructure, cluster, mesh (40+ commands)"
echo -e " ${AMBER}network${RESET} DNS, Tailscale, SSH, discovery (20+ commands)"
echo -e " ${AMBER}pi${RESET} Raspberry Pi fleet management (15+ commands)"
echo -e " ${AMBER}github${RESET} GitHub orgs, repos, PRs, Actions (30+ commands)"
echo -e " ${AMBER}cloudflare${RESET} Pages, Workers, DNS, KV (25+ commands)"
echo -e " ${AMBER}stripe${RESET} Payments, products, subscriptions (15+ commands)"
echo -e " ${AMBER}security${RESET} Audits, alerts, compliance (15+ commands)"
echo -e " ${AMBER}visual${RESET} Emoji worlds, 3D graphics, games (40+ commands)"
echo -e " ${AMBER}db${RESET} SQLite, Postgres, Redis operations (10+ commands)"
echo -e " ${AMBER}analytics${RESET} Metrics, dashboards, monitoring (15+ commands)"
echo -e " ${AMBER}brand${RESET} Design system, colors, compliance (10+ commands)"
echo -e " ${AMBER}traffic${RESET} Traffic light system (green/yellow/red)"
echo -e " ${AMBER}task${RESET} Task marketplace operations"
echo -e " ${AMBER}codex${RESET} BlackRoad OS component search"
echo
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo -e "${WHITE}QUICK COMMANDS${RESET}"
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo
echo -e " ${GREEN}blackroad status${RESET} System overview"
echo -e " ${GREEN}blackroad stats${RESET} Codebase statistics"
echo -e " ${GREEN}blackroad agents${RESET} List all agents"
echo -e " ${GREEN}blackroad todos${RESET} View infinite todos"
echo -e " ${GREEN}blackroad init${RESET} Initialize session"
echo -e " ${GREEN}blackroad micro${RESET} Detailed dashboard"
echo -e " ${GREEN}blackroad macro${RESET} Big picture view"
echo -e " ${GREEN}blackroad colors${RESET} Brand color palette"
echo -e " ${GREEN}blackroad banner${RESET} Show banner"
echo -e " ${GREEN}blackroad menu${RESET} Interactive category menu"
echo -e " ${GREEN}blackroad find${RESET} Fuzzy search all scripts (fzf)"
echo -e " ${GREEN}blackroad quick${RESET} Quick shortcuts (s, m, t, l, a)"
echo -e " ${GREEN}blackroad ollama${RESET} Ollama model management"
echo -e " ${GREEN}blackroad list${RESET} List all scripts"
echo
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo -e "${WHITE}EXAMPLES${RESET}"
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo
echo -e " ${DIM}# Memory operations${RESET}"
echo -e " blackroad memory summary"
echo -e " blackroad memory log created my-agent \"deployed service\" \"deploy\""
echo
echo -e " ${DIM}# Deploy everywhere${RESET}"
echo -e " blackroad deploy all"
echo -e " blackroad deploy cloudflare my-project"
echo
echo -e " ${DIM}# Agent operations${RESET}"
echo -e " blackroad agent chat"
echo -e " blackroad agent init"
echo
echo -e " ${DIM}# Pi fleet${RESET}"
echo -e " blackroad pi status"
echo -e " blackroad pi ssh alice"
echo
echo -e " ${DIM}# Run any script directly${RESET}"
echo -e " blackroad run <script-name> [args...]"
echo
}
# AI / Lucidia commands - Multi-model coding assistant
AI_MODULE="$HOME/blackroad-ai.sh"
#═══════════════════════════════════════════════════════════════════════════════
# LOCAL AI ROUTING - ANTHROPIC BECOMES OPTIONAL
# Route to Pi fleet Ollama instances instead of cloud
#═══════════════════════════════════════════════════════════════════════════════
# Pi node configurations
get_pi_model() {
case "$1" in
cecilia) echo "cecilia:latest" ;;
lucidia) echo "qwen2.5:1.5b" ;;
aria) echo "llama3.2:3b" ;;
octavia) echo "llama3:latest" ;;
alice) echo "tinyllama:latest" ;;
*) echo "llama3.2:3b" ;;
esac
}
get_pi_role() {
case "$1" in
cecilia) echo "Queen - CECE model, Hailo-8 26 TOPS" ;;
lucidia) echo "Inference - qwen2.5, codellama" ;;
aria) echo "Harmony - llama3.2, qwen-coder" ;;
octavia) echo "Multi-arm - llama3, codellama" ;;
alice) echo "Worker - tinyllama" ;;
*) echo "Unknown" ;;
esac
}
is_valid_pi() {
case "$1" in
cecilia|lucidia|aria|octavia|alice) return 0 ;;
*) return 1 ;;
esac
}
# Check if a Pi is reachable
pi_online() {
ssh -o ConnectTimeout=2 -o BatchMode=yes "$1" "true" 2>/dev/null
}
# Get best available Pi for inference
get_best_pi() {
for host in cecilia octavia lucidia aria alice; do
if pi_online "$host"; then
echo "$host"
return 0
fi
done
return 1
}
# Ask a specific Pi node
ask_pi() {
local host="$1"
local model="${2:-}"
[[ -z "$model" ]] && model=$(get_pi_model "$host")
local prompt="${3:-}"
if [[ -z "$prompt" ]]; then
echo -e "${PINK}╔═══════════════════════════════════════════════════════════════╗${RESET}"
echo -e "${PINK}${RESET} ${WHITE}LOCAL AI${RESET}${GREEN}$host${RESET} (${DIM}$model${RESET}) ${PINK}${RESET}"
echo -e "${PINK}${RESET} ${DIM}Type 'exit' to quit. Anthropic: BYPASSED${RESET} ${PINK}${RESET}"
echo -e "${PINK}╚═══════════════════════════════════════════════════════════════╝${RESET}"
ssh -t "$host" "ollama run $model"
else
echo -e "${DIM}$host ($model)${RESET}"
ssh "$host" "ollama run $model '$prompt'" 2>/dev/null
fi
}
# Local AI command handler
cmd_local() {
case "${1:-help}" in
status|fleet)
echo -e "${PINK}╔═══════════════════════════════════════════════════════════════╗${RESET}"
echo -e "${PINK}${RESET} ${WHITE}⚡ LOCAL AI FLEET STATUS${RESET} ${PINK}${RESET}"
echo -e "${PINK}${RESET} ${DIM}Anthropic: NOT REQUIRED${RESET} ${PINK}${RESET}"
echo -e "${PINK}╠═══════════════════════════════════════════════════════════════╣${RESET}"
for host in cecilia lucidia aria octavia alice; do
if pi_online "$host"; then
local models=$(ssh -o ConnectTimeout=3 "$host" "ollama list 2>/dev/null | tail -n +2 | wc -l" 2>/dev/null || echo "?")
local role=$(get_pi_role "$host")
printf "${PINK}${RESET} ${GREEN}${RESET} %-10s ${WHITE}%-3s models${RESET} ${DIM}%s${RESET}\n" "$host" "$models" "$role"
else
printf "${PINK}${RESET} ${RED}${RESET} %-10s ${DIM}offline${RESET}\n" "$host"
fi
done
echo -e "${PINK}╚═══════════════════════════════════════════════════════════════╝${RESET}"
;;
models)
echo -e "${WHITE}Models on Pi Fleet:${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
echo -e "\n${GREEN}$host:${RESET}"
ssh "$host" "ollama list 2>/dev/null" | head -8
fi
done
;;
chat|ask)
shift
local host="${1:-}"
shift 2>/dev/null || true
local prompt="$*"
if [[ -z "$host" ]]; then
host=$(get_best_pi) || { echo -e "${RED}No Pi nodes available${RESET}"; return 1; }
echo -e "${DIM}Auto-selected: $host${RESET}"
fi
is_valid_pi "$host" || { echo -e "${RED}Unknown host:${RESET} $host"; return 1; }
ask_pi "$host" "" "$prompt"
;;
cece|cecilia) shift; ask_pi "cecilia" "cecilia:latest" "$*" ;;
lucidia) shift; ask_pi "lucidia" "qwen2.5:1.5b" "$*" ;;
aria) shift; ask_pi "aria" "llama3.2:3b" "$*" ;;
octavia) shift; ask_pi "octavia" "llama3:latest" "$*" ;;
alice) shift; ask_pi "alice" "tinyllama:latest" "$*" ;;
code|coder)
shift
local host=$(get_best_pi) || { echo -e "${RED}No Pi available${RESET}"; return 1; }
local model="codellama:7b"
[[ "$host" == "cecilia" ]] && model="qwen2.5-coder:3b"
echo -e "${DIM}Code assistant on $host ($model)${RESET}"
ssh -t "$host" "ollama run $model"
;;
benchmark)
echo -e "${WHITE}Benchmarking Pi Fleet...${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
printf "%-10s " "$host"
local start=$(date +%s%N)
ssh "$host" "echo 'OK' | ollama run tinyllama 2>/dev/null" | head -1
local ms=$(( ($(date +%s%N) - start) / 1000000 ))
echo -e " ${DIM}(${ms}ms)${RESET}"
fi
done
;;
help|*)
echo -e "${PINK}local${RESET} - Local AI on Pi Fleet ${DIM}(Anthropic bypassed)${RESET}"
echo ""
echo -e " ${GREEN}CHAT${RESET}"
echo " local chat Auto-select best Pi"
echo " local chat <host> Chat with specific Pi"
echo " local cece <prompt> Ask CECE (Hailo-8)"
echo " local lucidia <prompt> Ask Lucidia (fast)"
echo " local aria <prompt> Ask Aria"
echo " local octavia <prompt> Ask Octavia"
echo ""
echo -e " ${GREEN}SPECIALIZED${RESET}"
echo " local code Code assistant (codellama)"
echo " local status Fleet status"
echo " local models List all models"
echo " local benchmark Test response times"
;;
esac
}
# Top-level ask command
cmd_ask() {
local target="${1:-help}"
shift 2>/dev/null || true
local prompt="$*"
case "$target" in
cece|cecilia) ask_pi "cecilia" "cecilia:latest" "$prompt" ;;
lucidia) ask_pi "lucidia" "qwen2.5:1.5b" "$prompt" ;;
aria) ask_pi "aria" "llama3.2:3b" "$prompt" ;;
octavia) ask_pi "octavia" "llama3:latest" "$prompt" ;;
alice) ask_pi "alice" "tinyllama:latest" "$prompt" ;;
local|pi|auto)
local host=$(get_best_pi) || { echo -e "${RED}No Pi available${RESET}"; return 1; }
ask_pi "$host" "" "$prompt"
;;
code) cmd_local code ;;
help|"")
echo -e "${MAGENTA}ask${RESET} - Ask local AI agents ${DIM}(Anthropic bypassed)${RESET}"
echo " ask cece <prompt> CECE on Cecilia (Hailo-8)"
echo " ask lucidia <prompt> Lucidia (qwen2.5)"
echo " ask aria <prompt> Aria (llama3.2)"
echo " ask octavia <prompt> Octavia (llama3)"
echo " ask alice <prompt> Alice (tinyllama)"
echo " ask local <prompt> Auto-select best Pi"
echo " ask code Code assistant mode"
;;
*)
local host=$(get_best_pi)
[[ -n "$host" ]] && ask_pi "$host" "" "$target $prompt" || echo -e "${RED}No Pi available${RESET}"
;;
esac
}
cmd_ai() {
case "${1:-help}" in
chat)
if [[ -f ~/.local/bin/lucidia ]]; then
~/.local/bin/lucidia chat
else
"$AI_MODULE" chat
fi ;;
task)
shift
if [[ -f ~/.local/bin/lucidia ]]; then
~/.local/bin/lucidia task "$*"
else
~/lucidia-cli.sh task "$*"
fi ;;
analyze)
shift
if [[ -f ~/.local/bin/lucidia ]]; then
~/.local/bin/lucidia analyze "$1"
else
echo "Usage: $INVOKED_AS ai analyze <path>"
fi ;;
review)
shift
if [[ -f ~/.local/bin/lucidia ]]; then
~/.local/bin/lucidia review "$1"
else
echo "Usage: $INVOKED_AS ai review <file>"
fi ;;
collab)
shift
if [[ -f ~/.local/bin/lucidia ]]; then
~/.local/bin/lucidia collab "$*"
else
~/lucidia-cli.sh collab "$*"
fi ;;
context)
if [[ -f ~/.local/bin/lucidia ]]; then
~/.local/bin/lucidia context
else
echo "Context detection requires lucidia daemon"
fi ;;
models)
"$AI_MODULE" models ;;
switch)
shift; "$AI_MODULE" switch "$@" ;;
pull)
shift; "$AI_MODULE" pull "$@" ;;
compare)
shift; "$AI_MODULE" compare "$@" ;;
# Agent personalities
ask)
shift; "$AI_MODULE" ask "$@" ;;
council)
shift; "$AI_MODULE" council "$@" ;;
agents)
"$AI_MODULE" agents ;;
# Quick prompts
quick|q)
shift; "$AI_MODULE" quick "$@" ;;
explain)
shift; "$AI_MODULE" quick explain "$@" ;;
fix)
shift; "$AI_MODULE" quick fix "$@" ;;
# Status
status)
"$AI_MODULE" status ;;
menu)
if [[ -f ~/.local/bin/lucidia ]]; then
~/.local/bin/lucidia
else
echo "Lucidia menu requires ~/.local/bin/lucidia"
fi ;;
help|*)
echo -e "${PINK}ai${RESET} - Multi-Model AI Assistant"
echo ""
echo -e " ${GREEN}CHAT${RESET}"
echo " chat Interactive AI chat"
echo " ask <agent> Chat with agent personality (cece/lucidia/alice/aria/octavia/silas)"
echo " council <p> Ask all agents the same question"
echo ""
echo -e " ${GREEN}MODELS${RESET}"
echo " models List available models"
echo " switch <m> Set active model"
echo " pull <m> Download new model"
echo " compare <p> Compare responses across models"
echo ""
echo -e " ${GREEN}QUICK${RESET}"
echo " quick explain Explain something"
echo " quick fix Fix code"
echo " quick review Code review"
echo ""
echo -e " ${GREEN}INFO${RESET}"
echo " status AI system status"
echo " agents List agent personalities"
echo ""
echo -e " ${GREEN}ADVANCED${RESET}"
echo " task <desc> Multi-model collaboration task"
echo " analyze <path> Analyze code at path"
echo " collab <q> Multi-model collaboration"
;;
esac
}
# Memory commands
cmd_memory() {
case "${1:-help}" in
summary|status)
~/memory-system.sh summary ;;
log)
shift; ~/memory-system.sh log "$@" ;;
live|context)
shift; ~/memory-realtime-context.sh live "${MY_CLAUDE:-unknown}" "${1:-compact}" ;;
dashboard)
~/memory-collaboration-dashboard.sh compact ;;
til)
shift; ~/memory-til-broadcast.sh "$@" ;;
tasks|marketplace)
shift; ~/memory-task-marketplace.sh "${@:-list}" ;;
todos|infinite)
shift; ~/memory-infinite-todos.sh "${@:-list}" ;;
greenlight)
source ~/memory-greenlight-templates.sh && gl_announce "${2:-agent}" "${3:-project}" "${4:-tasks}" "${5:-goal}" ;;
init)
~/memory-ultimate-init.sh ;;
visualize)
~/memory-visualizer.sh ;;
analytics)
~/memory-analytics.sh ;;
query)
shift; ~/memory-query.sh "$@" ;;
nlq)
shift; ~/memory-nlq.sh "$@" ;;
help|*)
echo -e "${AMBER}memory${RESET} - Memory System Commands"
echo " summary - System status overview"
echo " log - Add entry: log <action> <entity> <details> <tags>"
echo " live - Real-time context"
echo " dashboard - Collaboration dashboard"
echo " til - Today I Learned broadcasts"
echo " tasks - Task marketplace"
echo " todos - Infinite todos"
echo " greenlight - Announce work (greenlight template)"
echo " init - Initialize memory system"
echo " visualize - Visual memory browser"
echo " analytics - Memory analytics"
echo " query - Query memory"
echo " nlq - Natural language query"
;;
esac
}
# Agent commands
cmd_agent() {
case "${1:-help}" in
init|session)
~/claude-session-init.sh ;;
chat)
~/agent-chat.sh ;;
debate)
~/agent-debate.sh ;;
registry)
shift; ~/blackroad-agent-registry.sh "${@:-list}" ;;
voices)
~/agent-voices.sh ;;
group)
~/claude-group-chat.sh ;;
skill)
shift; ~/claude-skill-matcher.sh "$@" ;;
leaderboard)
~/claude-leaderboard.sh ;;
orchestra)
~/blackroad-agent-orchestra.sh ;;
mesh)
~/blackroad-agent-mesh.sh ;;
factory)
~/br-agent-factory.sh ;;
npc)
shift; ~/br-ai-npc.sh "$@" ;;
ask)
case "${2:-}" in
alice) shift 2; ssh alice.local "ask-alice \"$*\"" 2>/dev/null || ~/agent-chat.sh alice "$@" ;;
lucidia) shift 2; ~/lucidia-cli.sh "$@" ;;
aria) shift 2; ssh aria.local "ask-aria \"$*\"" 2>/dev/null || echo "aria offline" ;;
octavia) shift 2; ssh octavia.local "ask-octavia \"$*\"" 2>/dev/null || echo "octavia offline" ;;
*) echo "Usage: blackroad agent ask <alice|lucidia|aria|octavia> <question>" ;;
esac ;;
help|*)
echo -e "${AMBER}agent${RESET} - AI Agent Commands"
echo " init - Initialize Claude session with identity"
echo " chat - Multi-agent chat"
echo " debate - Agent debate mode"
echo " registry - View/manage agent registry"
echo " voices - Agent voice profiles"
echo " group - Group chat coordination"
echo " skill - Skill matching system"
echo " leaderboard - Agent leaderboard"
echo " orchestra - Full orchestration"
echo " mesh - Agent mesh network"
echo " factory - Generate new agents"
echo " npc - AI NPC system"
echo " ask <name> - Ask specific agent (alice/lucidia/aria/octavia)"
;;
esac
}
# Deploy commands
DEPLOY_MODULE="$HOME/blackroad-deploy.sh"
cmd_deploy() {
case "${1:-help}" in
# New module commands
status|s)
"$DEPLOY_MODULE" status ;;
history|h)
shift; "$DEPLOY_MODULE" history "$@" ;;
watch|w)
shift; "$DEPLOY_MODULE" watch "$@" ;;
init|new)
shift; "$DEPLOY_MODULE" init "$@" ;;
rollback)
shift; "$DEPLOY_MODULE" rollback "$@" ;;
quick|q)
shift; "$DEPLOY_MODULE" quick "$@" ;;
multi|m)
shift; "$DEPLOY_MODULE" multi "$@" ;;
# Original commands
all)
~/deploy-all-now.sh ;;
cloudflare|cf)
shift
if [[ -n "${1:-}" ]]; then
"$DEPLOY_MODULE" pages deploy . "$1"
else
~/deploy-all-domains.sh
fi ;;
railway)
shift; "$DEPLOY_MODULE" railway deploy "$@" ;;
github|gh)
~/push-all-to-github.sh ;;
pi|pis)
~/deploy-to-all-pis.sh ;;
agents)
~/deploy-agents-everywhere.sh ;;
bots)
~/deploy-bots-everywhere.sh ;;
worker)
"$DEPLOY_MODULE" workers deploy ;;
pages)
shift; "$DEPLOY_MODULE" pages "$@" ;;
revolution)
~/deploy-blackroad-revolution.sh ;;
empire)
~/deploy-blackroad-empire.sh ;;
autonomy)
~/deploy-autonomous-agents.sh ;;
landing)
~/deploy-landing-pages.sh ;;
stripe)
~/deploy-clerk-stripe.sh ;;
security)
~/deploy-security-workflows.sh ;;
self-healing)
~/deploy-self-healing.sh ;;
workflows)
~/deploy-workflows-to-all-repos.sh ;;
help|*)
echo -e "${AMBER}deploy${RESET} - Deployment Commands"
echo ""
echo -e " ${GREEN}MANAGE${RESET}"
echo " status - Deployment status (auth, projects)"
echo " history [n] - Show deploy history"
echo " watch <dir> - Auto-deploy on file changes"
echo " rollback <p> - Rollback Pages project"
echo " init <name> - Create new project from template"
echo ""
echo -e " ${GREEN}CLOUDFLARE${RESET}"
echo " pages - Pages commands (list/deploy/create)"
echo " cf <project> - Quick deploy to Cloudflare Pages"
echo " worker - Deploy Cloudflare Worker"
echo ""
echo -e " ${GREEN}RAILWAY${RESET}"
echo " railway - Deploy to Railway"
echo ""
echo -e " ${GREEN}BATCH${RESET}"
echo " all - Deploy everything everywhere"
echo " quick <p> - Quick preset (landing/dashboard/docs/all)"
echo " multi <p1> - Deploy to multiple projects"
echo ""
echo -e " ${GREEN}TARGETS${RESET}"
echo " pi - Deploy to Pi fleet"
echo " agents - Deploy agents everywhere"
echo " empire - Deploy empire-wide"
echo " github - Push all to GitHub"
echo " workflows - Deploy GitHub workflows"
;;
esac
}
# Infrastructure commands
cmd_infra() {
case "${1:-help}" in
status|map)
~/blackroad-infrastructure-map.sh ;;
cluster)
shift; ~/blackroad-cluster-monitor.sh "$@" ;;
mesh)
~/blackroad-service-mesh.sh ;;
secrets)
shift; ~/blackroad-secrets-manager.sh "$@" ;;
config)
shift; ~/blackroad-config-manager.sh "$@" ;;
observability)
~/blackroad-observability.sh ;;
health)
~/blackroad-health-score.sh ;;
autoscale)
~/blackroad-cluster-autoscale.sh ;;
backup)
~/blackroad-cluster-backup.sh ;;
stress)
~/blackroad-stress-test.sh ;;
chaos)
~/blackroad-chaos-engineering.sh ;;
cost)
~/blackroad-cost-tracker.sh ;;
feature-flags)
shift; ~/blackroad-feature-flags.sh "$@" ;;
scheduler)
shift; ~/blackroad-job-scheduler.sh "$@" ;;
help|*)
echo -e "${AMBER}infra${RESET} - Infrastructure Commands"
echo " status - Infrastructure map"
echo " cluster - Cluster monitoring"
echo " mesh - Service mesh"
echo " secrets - Secrets manager"
echo " config - Config manager"
echo " observability - Full observability"
echo " health - Health scoring"
echo " autoscale - Autoscaling"
echo " backup - Cluster backup"
echo " stress - Stress testing"
echo " chaos - Chaos engineering"
echo " cost - Cost tracking"
echo " feature-flags - Feature flag system"
echo " scheduler - Job scheduler"
;;
esac
}
# Network commands
NETWORK_MODULE="$HOME/blackroad-network.sh"
cmd_network() {
case "${1:-help}" in
# New module commands
status|s)
"$NETWORK_MODULE" status ;;
fleet|f)
"$NETWORK_MODULE" fleet ;;
topology|topo)
"$NETWORK_MODULE" topology ;;
watch|w)
shift; "$NETWORK_MODULE" watch "$@" ;;
ping|p)
shift; "$NETWORK_MODULE" ping "$@" ;;
speed)
"$NETWORK_MODULE" speed ;;
# Original commands with module integration
scan)
shift; "$NETWORK_MODULE" scan "$@" ;;
discover)
"$NETWORK_MODULE" scan discover ;;
dns)
shift; "$NETWORK_MODULE" dns "$@" ;;
tailscale|ts)
shift; "$NETWORK_MODULE" tailscale "$@" ;;
ssh)
shift; "$NETWORK_MODULE" ssh "$@" ;;
mesh)
~/setup-blackroad-mesh.sh ;;
tunnels)
~/setup-blackroad-tunnels.sh ;;
heartbeat)
~/heartbeat.sh ;;
help|*)
echo -e "${AMBER}network${RESET} - Network Commands"
echo ""
echo -e " ${GREEN}STATUS${RESET}"
echo " status - Network overview (IP, gateway, devices)"
echo " fleet - Device fleet status table"
echo " topology - Network topology diagram"
echo " watch [s] - Live monitoring mode"
echo ""
echo -e " ${GREEN}CONNECTIVITY${RESET}"
echo " ping [host] - Ping all devices or specific target"
echo " speed - Speed test"
echo " scan - Network scanning (quick/ports/discover)"
echo ""
echo -e " ${GREEN}SERVICES${RESET}"
echo " ssh [cmd] - SSH fleet (list/test/exec/all)"
echo " dns [cmd] - DNS operations (lookup/check/update)"
echo " tailscale - Tailscale mesh (status/peers/ping)"
echo ""
echo -e " ${GREEN}SETUP${RESET}"
echo " mesh - Setup mesh network"
echo " tunnels - Setup tunnels"
;;
esac
}
# Pi commands
cmd_pi() {
case "${1:-help}" in
status)
~/pi-heartbeat.sh ;;
fleet)
~/pifleet.sh ;;
ssh)
shift
case "${1:-}" in
alice) ssh alice.local ;;
aria) ssh aria.local ;;
lucidia) ssh lucidia.local ;;
octavia) ssh octavia.local ;;
cecilia) ssh cecilia.local ;;
shellfish) ssh root@174.138.44.45 ;;
*) echo "Usage: blackroad pi ssh <alice|aria|lucidia|octavia|cecilia|shellfish>" ;;
esac ;;
deploy)
shift; ~/deploy-to-all-pis.sh "$@" ;;
test)
~/test-all-nodes.sh ;;
ollama)
~/test-all-ollama.sh ;;
sync)
~/lucidia-sync-fleet.sh ;;
flash)
shift; ~/flash-esp32-direct.sh "$@" ;;
pironman)
~/diagnose-pironmans.sh ;;
hailo)
~/hailo.sh ;;
help|*)
echo -e "${AMBER}pi${RESET} - Raspberry Pi Commands"
echo " status - Pi fleet heartbeat"
echo " fleet - Fleet management"
echo " ssh <name> - SSH to Pi (alice/aria/lucidia/octavia/cecilia)"
echo " deploy - Deploy to all Pis"
echo " test - Test all nodes"
echo " ollama - Test Ollama on all Pis"
echo " sync - Sync Lucidia fleet"
echo " flash - Flash ESP32"
echo " pironman - Diagnose Pironmans"
echo " hailo - Hailo AI accelerator"
;;
esac
}
# GitHub commands
cmd_github() {
case "${1:-help}" in
status)
~/github-stats.sh ;;
repos)
shift; gh repo list BlackRoad-OS --limit "${1:-50}" ;;
orgs)
for org in BlackRoad-OS BlackRoad-AI BlackRoad-Cloud BlackRoad-Security BlackRoad-Media BlackRoad-Foundation; do
count=$(gh repo list "$org" --limit 1000 2>/dev/null | wc -l)
echo -e "${AMBER}$org${RESET}: $count repos"
done ;;
clone)
shift; gh repo clone "BlackRoad-OS/${1:-}" ;;
prs)
~/gh-prs.sh ;;
issues)
~/gh-issues.sh ;;
actions)
~/gh-actions.sh ;;
workflows)
~/gh-workflows.sh ;;
merge)
~/auto-merge-everything.sh ;;
search)
shift; ~/github-search.sh "$@" ;;
push)
~/push-all-to-github.sh ;;
sync)
~/mass-github-update.sh ;;
enhance)
~/enhance-all-github-ui.sh ;;
security)
~/enable-security-features.sh ;;
branches)
~/git-branch-hygiene-analyzer.sh ;;
help|*)
echo -e "${AMBER}github${RESET} - GitHub Commands"
echo " status - GitHub statistics"
echo " repos [n] - List repos (default 50)"
echo " orgs - List all org repo counts"
echo " clone <r> - Clone a BlackRoad-OS repo"
echo " prs - View pull requests"
echo " issues - View issues"
echo " actions - GitHub Actions status"
echo " workflows - Workflow management"
echo " merge - Auto-merge open PRs"
echo " search - Search GitHub"
echo " push - Push all to GitHub"
echo " sync - Mass GitHub update"
echo " enhance - Enhance all UI"
echo " security - Enable security features"
echo " branches - Branch hygiene analysis"
;;
esac
}
# Cloudflare commands
cmd_cloudflare() {
case "${1:-help}" in
status)
wrangler pages project list ;;
deploy)
shift
if [[ -n "${1:-}" ]]; then
wrangler pages deploy "${2:-.}" --project-name="$1"
else
~/deploy-all-domains.sh
fi ;;
worker)
wrangler deploy ;;
kv)
shift; wrangler kv namespace "${@:-list}" ;;
dns)
shift; ~/setup-cloudflare-dns.sh "$@" ;;
domains)
~/link-cloudflare-domains.sh ;;
projects)
wrangler pages project list ;;
connect)
~/connect-repos-to-cf-pages.sh ;;
perfect)
~/perfect-all-cloudflare-projects.sh ;;
brand)
~/cloudflare-brand-audit.sh ;;
whoami)
wrangler whoami ;;
help|*)
echo -e "${AMBER}cloudflare${RESET} - Cloudflare Commands"
echo " status - List Pages projects"
echo " deploy <p> - Deploy to project"
echo " worker - Deploy worker"
echo " kv - KV namespace operations"
echo " dns - DNS setup"
echo " domains - Link domains"
echo " projects - List projects"
echo " connect - Connect repos to Pages"
echo " perfect - Perfect all projects"
echo " brand - Brand audit"
echo " whoami - Check auth"
;;
esac
}
# Stripe commands
cmd_stripe() {
case "${1:-help}" in
status)
stripe products list --limit 10 ;;
products)
stripe products list ;;
prices)
stripe prices list ;;
create)
shift; ~/create-stripe-products.sh "$@" ;;
links)
~/create-stripe-links.sh ;;
setup)
~/setup-stripe-products-now.sh ;;
deploy)
~/deploy-clerk-stripe.sh ;;
test)
~/verify-stripe-payments.sh ;;
help|*)
echo -e "${AMBER}stripe${RESET} - Stripe Commands"
echo " status - List products"
echo " products - All products"
echo " prices - All prices"
echo " create - Create products"
echo " links - Create payment links"
echo " setup - Full setup"
echo " deploy - Deploy with Clerk"
echo " test - Test payments"
;;
esac
}
# Security commands
cmd_security() {
case "${1:-help}" in
audit)
~/security-audit-automation.sh ;;
alerts)
~/check-security-alerts.sh ;;
report)
~/generate-security-report.sh ;;
prs)
~/create-security-prs.sh ;;
deploy)
~/deploy-security-workflows.sh ;;
scan)
~/security.sh ;;
compliance)
~/compliance-monitor.sh ;;
notifications)
~/security-notifications.sh ;;
help|*)
echo -e "${AMBER}security${RESET} - Security Commands"
echo " audit - Security audit"
echo " alerts - Check alerts"
echo " report - Generate report"
echo " prs - Create security PRs"
echo " deploy - Deploy workflows"
echo " scan - Security scan"
echo " compliance - Compliance monitor"
echo " notifications - Security notifications"
;;
esac
}
# Visual/Fun commands
cmd_visual() {
case "${1:-help}" in
emoji)
shift; ~/emoji_os.sh "$@" ;;
world)
~/emoji_world.sh ;;
cube)
~/cube.sh ;;
donut)
~/donut.sh ;;
fire)
~/fire.sh ;;
fireworks)
~/fireworks.sh ;;
galaxy)
~/galaxy.sh ;;
plasma)
~/plasma.sh ;;
rainbow)
~/rainbow_add.sh ;;
snake)
~/snake.sh ;;
mandelbrot)
~/mandelbrot.sh ;;
life)
~/life.sh ;;
minecraft)
~/minecraft_block.sh ;;
tornado)
~/tornado.sh ;;
waves)
~/waves3d.sh ;;
vortex)
~/vortex.sh ;;
hypercube)
~/hypercube.sh ;;
solar)
~/solar.sh ;;
dna)
~/dna.sh ;;
quantum)
~/quantum_master.sh ;;
metaverse)
~/metaverse.sh ;;
help|*)
echo -e "${AMBER}visual${RESET} - Visual/Fun Commands"
echo " emoji - Emoji OS"
echo " world - Emoji world"
echo " cube - 3D cube"
echo " donut - Spinning donut"
echo " fire - Fire animation"
echo " fireworks - Fireworks"
echo " galaxy - Galaxy simulation"
echo " plasma - Plasma effect"
echo " rainbow - Rainbow colors"
echo " snake - Snake game"
echo " mandelbrot - Mandelbrot set"
echo " life - Game of Life"
echo " minecraft - Minecraft blocks"
echo " tornado - Tornado"
echo " waves - 3D waves"
echo " vortex - Vortex animation"
echo " hypercube - 4D hypercube"
echo " solar - Solar system"
echo " dna - DNA helix"
echo " quantum - Quantum visualization"
echo " metaverse - Metaverse engine"
;;
esac
}
# Database commands
cmd_db() {
DB=~/.blackroad/blackroad.db
case "${1:-help}" in
init)
sqlite3 "$DB" "CREATE TABLE IF NOT EXISTS agents(name TEXT PRIMARY KEY,state INT DEFAULT 0,type TEXT,updated_at TEXT);CREATE TABLE IF NOT EXISTS config(key TEXT PRIMARY KEY,value TEXT);CREATE TABLE IF NOT EXISTS tasks(id INTEGER PRIMARY KEY,agent TEXT,status TEXT DEFAULT 'pending',payload TEXT,created_at TEXT);CREATE TABLE IF NOT EXISTS logs(id INTEGER PRIMARY KEY,source TEXT,message TEXT,ts TEXT DEFAULT CURRENT_TIMESTAMP);"
echo "Database initialized" ;;
agents)
sqlite3 -header -column "$DB" "SELECT * FROM agents;" ;;
config)
sqlite3 -header -column "$DB" "SELECT * FROM config;" ;;
logs)
sqlite3 -header -column "$DB" "SELECT * FROM logs ORDER BY id DESC LIMIT ${2:-20};" ;;
query)
shift; sqlite3 -header -column "$DB" "$*" ;;
registry)
shift; ~/blackroad-agent-registry.sh "$@" ;;
traffic)
shift; ~/blackroad-traffic-light.sh "$@" ;;
help|*)
echo -e "${AMBER}db${RESET} - Database Commands"
echo " init - Initialize database"
echo " agents - List agents"
echo " config - View config"
echo " logs [n] - View logs (default 20)"
echo " query - Run SQL query"
echo " registry - Agent registry"
echo " traffic - Traffic light DB"
;;
esac
}
# Analytics commands
cmd_analytics() {
case "${1:-help}" in
dashboard)
~/status-dashboard.sh ;;
metrics)
~/blackroad-metrics-api.sh ;;
mercury)
~/mercury-analytics-tracker.sh ;;
performance)
~/performance-monitoring.sh ;;
collaboration)
~/collaboration-analytics.sh ;;
stats)
~/br-stats.sh ;;
history)
~/br-stats-history.sh ;;
help|*)
echo -e "${AMBER}analytics${RESET} - Analytics Commands"
echo " dashboard - Status dashboard"
echo " metrics - Metrics API"
echo " mercury - Mercury analytics"
echo " performance - Performance monitoring"
echo " collaboration - Collaboration analytics"
echo " stats - Codebase stats"
echo " history - Stats history"
;;
esac
}
# Brand commands
cmd_brand() {
case "${1:-help}" in
colors)
echo -e "${WHITE}Official BlackRoad Brand Colors${RESET}"
echo -e "${WHITE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo -e "${AMBER}████████${RESET} 208 #FF8700 Amber"
echo -e "${ORANGE}████████${RESET} 202 #FF5F00 Orange"
echo -e "${PINK}████████${RESET} 198 #FF0087 Hot Pink"
echo -e "${MAGENTA}████████${RESET} 163 #D700AF Magenta"
echo -e "${BLUE}████████${RESET} 33 #0087FF Blue"
echo ""
echo -e "${WHITE}Gradient:${RESET}"
brand_gradient
echo ""
echo -e "${DIM}Grayscale-first design with color as intentional layer${RESET}" ;;
gradient)
brand_gradient ;;
logo)
echo ""
printf "${PINK}██████${RESET} ${BLUE}██████${RESET}\n"
printf "${PINK}██ ██${RESET} ${BLUE}██ ██${RESET}\n"
printf "${PINK}██████${RESET} ${BLUE}██████${RESET}\n"
printf "${PINK}██ ██${RESET} ${BLUE}██ ██${RESET}\n"
printf "${PINK}██████${RESET} ${BLUE}██ ██${RESET}\n"
echo ""
brand_gradient
echo "" ;;
logo-gradient)
echo ""
printf "${AMBER}█████${ORANGE}${RESET} ${MAGENTA}█████${BLUE}${RESET}\n"
printf "${AMBER}${RESET} ${PINK}██${RESET} ${MAGENTA}${RESET} ${BLUE}██${RESET}\n"
printf "${AMBER}█████${PINK}${RESET} ${MAGENTA}█████${BLUE}${RESET}\n"
printf "${ORANGE}${RESET} ${PINK}██${RESET} ${BLUE}${RESET} ${BLUE}██${RESET}\n"
printf "${PINK}█████${MAGENTA}${RESET} ${BLUE}${RESET} ${BLUE}██${RESET}\n"
echo ""
brand_gradient
echo "" ;;
logo-small)
printf "${PINK}▄▄▄${RESET} ${BLUE}▄▄▄${RESET}\n"
printf "${PINK}█▄█${RESET} ${BLUE}█▄▀${RESET}\n"
printf "${PINK}█▄█${RESET} ${BLUE}█ █${RESET}\n" ;;
mascot)
echo ""
echo -e "${WHITE} ╭───╮${RESET}"
echo -e "${WHITE}${PINK}◉ ◉${WHITE}${RESET}"
echo -e "${WHITE}${RESET} ${BLUE}${RESET} ${WHITE}${RESET}"
echo -e "${WHITE} ╰─┬─╯${RESET}"
echo -e "${WHITE} ┌┴┐${RESET}"
echo -e "${WHITE} │█│${RESET}"
echo -e "${WHITE} └┬┘${RESET}"
echo -e "${WHITE} ┌┴┐${RESET}"
echo -e "${DIM} BlackRoad Bot${RESET}"
echo "" ;;
all)
cmd_brand logo
cmd_brand colors ;;
audit)
~/brand-compliance-checker.sh ;;
docs)
cat ~/BLACKROAD_BRAND_SYSTEM.md ;;
palette)
~/build-palette.sh ;;
help|*)
echo -e "${AMBER}brand${RESET} - Brand Commands"
echo " colors - Show brand colors"
echo " gradient - Show gradient bar"
echo " logo - BR pixel logo"
echo " logo-gradient - BR logo with gradient"
echo " logo-small - Compact BR logo"
echo " mascot - BlackRoad bot mascot"
echo " all - Show logo + colors"
echo " audit - Brand compliance audit"
echo " docs - Brand documentation"
echo " palette - Build color palette"
;;
esac
}
# Traffic light commands
cmd_traffic() {
~/blackroad-traffic-light.sh "${@:-summary}"
}
# Task marketplace commands
cmd_task() {
~/memory-task-marketplace.sh "${@:-list}"
}
# BlackRoad OS / Codex search
cmd_codex() {
if [[ -f ~/blackroad-codex-verification-suite.sh ]]; then
~/blackroad-codex-verification-suite.sh "${@:-stats}"
else
echo "Codex verification suite not found"
fi
}
#═══════════════════════════════════════════════════════════════════════════════
# SSH - Quick device access
#═══════════════════════════════════════════════════════════════════════════════
cmd_ssh() {
local target="${1:-help}"
shift 2>/dev/null || true
case "$target" in
# Pi fleet
cece|cecilia) ssh -t cecilia "$@" ;;
lucidia|luc) ssh -t lucidia "$@" ;;
aria) ssh -t aria "$@" ;;
octavia|oct) ssh -t octavia "$@" ;;
alice) ssh -t alice "$@" ;;
# Cloud
shellfish|sf) ssh -t shellfish "$@" ;;
infinity|inf) ssh -t blackroadinfinity "$@" ;;
# Tailscale (remote)
cecilia-ts) ssh -t cecilia-ts "$@" ;;
lucidia-ts) ssh -t lucidia-ts "$@" ;;
aria-ts) ssh -t aria-ts "$@" ;;
octavia-ts) ssh -t octavia-ts "$@" ;;
# Special commands
all)
echo -e "${PINK}Running on all Pis:${RESET} $*"
for host in cecilia lucidia aria octavia; do
echo -e "\n${GREEN}=== $host ===${RESET}"
ssh "$host" "$@" 2>/dev/null || echo -e "${RED}Failed${RESET}"
done
;;
copy)
# Copy file to all Pis
local file="$1"
local dest="${2:-~}"
if [[ -z "$file" ]]; then
echo "Usage: br ssh copy <file> [dest]"
return 1
fi
echo -e "${PINK}Copying $file to all Pis...${RESET}"
for host in cecilia lucidia aria octavia alice; do
if pi_online "$host"; then
scp "$file" "$host:$dest" && echo -e "${GREEN}$host${RESET}"
fi
done
;;
help|*)
echo -e "${MAGENTA}ssh${RESET} - Quick Device Access"
echo ""
echo -e " ${GREEN}PI FLEET${RESET}"
echo " ssh cecilia SSH to Cecilia (Hailo-8)"
echo " ssh lucidia SSH to Lucidia"
echo " ssh aria SSH to Aria"
echo " ssh octavia SSH to Octavia"
echo " ssh alice SSH to Alice"
echo ""
echo -e " ${GREEN}CLOUD${RESET}"
echo " ssh shellfish SSH to DigitalOcean edge"
echo " ssh infinity SSH to cloud oracle"
echo ""
echo -e " ${GREEN}TAILSCALE (REMOTE)${RESET}"
echo " ssh cecilia-ts Via Tailscale"
echo " ssh lucidia-ts Via Tailscale"
echo ""
echo -e " ${GREEN}BATCH${RESET}"
echo " ssh all <cmd> Run command on all Pis"
echo " ssh copy <f> [d] Copy file to all Pis"
;;
esac
}
#═══════════════════════════════════════════════════════════════════════════════
# OLLAMA - Fleet-wide model management
#═══════════════════════════════════════════════════════════════════════════════
cmd_ollama() {
case "${1:-help}" in
ps|running)
echo -e "${WHITE}Running Models Across Fleet:${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
local running=$(ssh "$host" "ollama ps 2>/dev/null" | tail -n +2)
if [[ -n "$running" ]]; then
echo -e "\n${GREEN}$host:${RESET}"
echo "$running"
fi
fi
done
;;
list|ls)
shift
local host="${1:-all}"
if [[ "$host" == "all" ]]; then
echo -e "${WHITE}Models Across Fleet:${RESET}"
for h in cecilia lucidia aria octavia; do
if pi_online "$h"; then
echo -e "\n${GREEN}$h:${RESET}"
ssh "$h" "ollama list 2>/dev/null" | tail -n +2
fi
done
else
ssh "$host" "ollama list 2>/dev/null"
fi
;;
pull)
shift
local model="$1"
local host="${2:-cecilia}"
if [[ -z "$model" ]]; then
echo "Usage: br ollama pull <model> [host]"
return 1
fi
echo -e "${PINK}Pulling $model on $host...${RESET}"
ssh -t "$host" "ollama pull $model"
;;
pull-all)
shift
local model="$1"
if [[ -z "$model" ]]; then
echo "Usage: br ollama pull-all <model>"
return 1
fi
echo -e "${PINK}Pulling $model on all Pis...${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
echo -e "\n${GREEN}=== $host ===${RESET}"
ssh "$host" "ollama pull $model" &
fi
done
wait
echo -e "${GREEN}Done!${RESET}"
;;
run)
shift
local model="${1:-}"
local host="${2:-}"
if [[ -z "$model" ]]; then
echo "Usage: br ollama run <model> [host]"
return 1
fi
if [[ -z "$host" ]]; then
host=$(get_best_pi) || { echo -e "${RED}No Pi available${RESET}"; return 1; }
fi
echo -e "${DIM}Running $model on $host${RESET}"
ssh -t "$host" "ollama run $model"
;;
rm|remove)
shift
local model="$1"
local host="${2:-}"
if [[ -z "$model" ]]; then
echo "Usage: br ollama rm <model> [host|all]"
return 1
fi
if [[ "$host" == "all" ]]; then
echo -e "${PINK}Removing $model from all Pis...${RESET}"
for h in cecilia lucidia aria octavia; do
pi_online "$h" && ssh "$h" "ollama rm $model 2>/dev/null" && echo -e "${GREEN}$h${RESET}"
done
else
host="${host:-cecilia}"
ssh "$host" "ollama rm $model"
fi
;;
serve)
shift
local host="${1:-cecilia}"
echo -e "${PINK}Starting Ollama server on $host...${RESET}"
ssh "$host" "ollama serve"
;;
stop)
shift
local host="${1:-all}"
if [[ "$host" == "all" ]]; then
for h in cecilia lucidia aria octavia; do
pi_online "$h" && ssh "$h" "pkill ollama 2>/dev/null" && echo -e "${GREEN}Stopped $h${RESET}"
done
else
ssh "$host" "pkill ollama"
fi
;;
size|disk)
echo -e "${WHITE}Ollama Disk Usage:${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
local size=$(ssh "$host" "du -sh ~/.ollama/models 2>/dev/null | cut -f1" || echo "?")
printf " %-10s %s\n" "$host" "$size"
fi
done
;;
help|*)
echo -e "${MAGENTA}ollama${RESET} - Fleet Model Management"
echo ""
echo -e " ${GREEN}STATUS${RESET}"
echo " ollama ps Running models on all Pis"
echo " ollama list [host] List models (default: all)"
echo " ollama size Disk usage per Pi"
echo ""
echo -e " ${GREEN}MODELS${RESET}"
echo " ollama pull <m> [h] Pull model to host"
echo " ollama pull-all <m> Pull to ALL Pis (parallel)"
echo " ollama run <m> [h] Run model on host"
echo " ollama rm <m> [h|all] Remove model"
echo ""
echo -e " ${GREEN}SERVER${RESET}"
echo " ollama serve [host] Start Ollama server"
echo " ollama stop [h|all] Stop Ollama"
;;
esac
}
#═══════════════════════════════════════════════════════════════════════════════
# WATCH - Live monitoring commands
#═══════════════════════════════════════════════════════════════════════════════
cmd_watch() {
case "${1:-help}" in
status)
watch -n5 -c "bash ~/bin/blackroad status"
;;
local|fleet)
watch -n5 -c "bash ~/bin/blackroad local status"
;;
memory|mem)
watch -n10 "tail -20 ~/.blackroad/memory/journals/master-journal.jsonl | jq -c ."
;;
ollama)
watch -n3 -c "for h in cecilia lucidia aria octavia; do echo \"=== \$h ===\"; ssh -o ConnectTimeout=2 \$h 'ollama ps 2>/dev/null' 2>/dev/null; done"
;;
traffic)
watch -n10 -c "bash ~/bin/blackroad traffic summary"
;;
tasks)
watch -n30 "bash ~/memory-task-marketplace.sh list 2>/dev/null | head -30"
;;
git)
watch -n30 "git status; echo '---'; git log --oneline -5"
;;
disk)
watch -n60 "df -h / /Volumes/* 2>/dev/null"
;;
pis)
watch -n10 "for h in cecilia lucidia aria octavia alice; do echo -n \"\$h: \"; ssh -o ConnectTimeout=2 \$h 'uptime' 2>/dev/null || echo 'offline'; done"
;;
help|*)
echo -e "${MAGENTA}watch${RESET} - Live Monitoring"
echo ""
echo " watch status System status (5s)"
echo " watch fleet Local AI fleet (5s)"
echo " watch memory Memory journal (10s)"
echo " watch ollama Running models (3s)"
echo " watch traffic Traffic lights (10s)"
echo " watch tasks Task marketplace (30s)"
echo " watch git Git status (30s)"
echo " watch disk Disk usage (60s)"
echo " watch pis Pi uptime (10s)"
;;
esac
}
#═══════════════════════════════════════════════════════════════════════════════
# SYNC - Synchronize across fleet
#═══════════════════════════════════════════════════════════════════════════════
cmd_sync() {
case "${1:-help}" in
scripts)
echo -e "${PINK}Syncing scripts to all Pis...${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
echo -e "${GREEN}$host${RESET}"
rsync -avz --progress ~/bin/ "$host:~/bin/" 2>/dev/null
fi
done
;;
config)
echo -e "${PINK}Syncing configs to all Pis...${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
echo -e "${GREEN}$host${RESET}"
scp ~/.bashrc ~/.zshrc "$host:~/" 2>/dev/null
fi
done
;;
ollama-models)
shift
local source="${1:-cecilia}"
echo -e "${PINK}Syncing Ollama models from $source...${RESET}"
local models=$(ssh "$source" "ollama list 2>/dev/null | tail -n +2 | awk '{print \$1}'")
for host in cecilia lucidia aria octavia; do
[[ "$host" == "$source" ]] && continue
if pi_online "$host"; then
echo -e "\n${GREEN}=== $host ===${RESET}"
for model in $models; do
echo "Pulling $model..."
ssh "$host" "ollama pull $model 2>/dev/null" &
done
fi
done
wait
;;
file)
shift
local file="$1"
local dest="${2:-~}"
if [[ -z "$file" ]]; then
echo "Usage: br sync file <file> [dest]"
return 1
fi
echo -e "${PINK}Syncing $file to all Pis...${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
rsync -avz "$file" "$host:$dest/" && echo -e "${GREEN}$host${RESET}"
fi
done
;;
dir)
shift
local dir="$1"
local dest="${2:-~}"
if [[ -z "$dir" ]]; then
echo "Usage: br sync dir <dir> [dest]"
return 1
fi
echo -e "${PINK}Syncing $dir to all Pis...${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
rsync -avz --progress "$dir" "$host:$dest/" && echo -e "${GREEN}$host${RESET}"
fi
done
;;
time)
echo -e "${PINK}Syncing time on all Pis...${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
ssh "$host" "sudo timedatectl set-ntp true" && echo -e "${GREEN}$host${RESET}"
fi
done
;;
help|*)
echo -e "${MAGENTA}sync${RESET} - Synchronize Across Fleet"
echo ""
echo " sync scripts Push ~/bin to all Pis"
echo " sync config Push shell configs"
echo " sync ollama-models Copy models from cecilia"
echo " sync file <f> [d] Rsync file to all Pis"
echo " sync dir <d> [dest] Rsync directory"
echo " sync time Sync NTP on all Pis"
;;
esac
}
#═══════════════════════════════════════════════════════════════════════════════
# GIT - Quick git operations
#═══════════════════════════════════════════════════════════════════════════════
cmd_git() {
case "${1:-help}" in
s|status) git status ;;
d|diff) git diff ;;
l|log) git log --oneline -20 ;;
lg) git log --graph --oneline --all -20 ;;
b|branch) git branch -a ;;
co|checkout) shift; git checkout "$@" ;;
pull) git pull ;;
push) git push ;;
fetch) git fetch --all ;;
stash) shift; git stash "$@" ;;
pop) git stash pop ;;
# Quick commits
add) shift; git add "${@:-.}" ;;
commit) shift; git commit -m "$*" ;;
amend) git commit --amend --no-edit ;;
undo) git reset HEAD~1 --soft ;;
# Branch operations
new)
shift
local branch="$1"
[[ -z "$branch" ]] && { echo "Usage: br git new <branch>"; return 1; }
git checkout -b "$branch"
;;
del)
shift
local branch="$1"
[[ -z "$branch" ]] && { echo "Usage: br git del <branch>"; return 1; }
git branch -d "$branch"
;;
merge)
shift
git merge "$@"
;;
# Info
remote) git remote -v ;;
last) git log -1 --stat ;;
today) git log --since="midnight" --oneline ;;
week) git log --since="1 week ago" --oneline ;;
authors) git shortlog -sn ;;
# Cleanup
clean) git clean -fd ;;
prune) git remote prune origin ;;
gc) git gc --aggressive ;;
# Quick save
save)
shift
local msg="${*:-WIP}"
git add -A && git commit -m "$msg"
;;
ship)
shift
local msg="${*:-Update}"
git add -A && git commit -m "$msg" && git push
;;
help|*)
echo -e "${MAGENTA}git${RESET} - Quick Git Operations"
echo ""
echo -e " ${GREEN}STATUS${RESET}"
echo " git s Status"
echo " git d Diff"
echo " git l Log (20 lines)"
echo " git lg Log graph"
echo " git b Branches"
echo ""
echo -e " ${GREEN}QUICK${RESET}"
echo " git add [files] Stage (default: all)"
echo " git commit <msg> Commit"
echo " git save [msg] Add all + commit"
echo " git ship [msg] Add + commit + push"
echo " git amend Amend last commit"
echo " git undo Undo last commit (soft)"
echo ""
echo -e " ${GREEN}BRANCHES${RESET}"
echo " git new <branch> Create + checkout"
echo " git co <branch> Checkout"
echo " git del <branch> Delete branch"
echo " git merge <branch> Merge"
echo ""
echo -e " ${GREEN}INFO${RESET}"
echo " git last Last commit details"
echo " git today Commits today"
echo " git week Commits this week"
echo " git authors Commit counts"
;;
esac
}
#═══════════════════════════════════════════════════════════════════════════════
# LOGS - View and tail logs
#═══════════════════════════════════════════════════════════════════════════════
cmd_logs() {
case "${1:-help}" in
memory|mem)
tail -f ~/.blackroad/memory/journals/master-journal.jsonl | jq -c .
;;
memory-pretty)
tail -f ~/.blackroad/memory/journals/master-journal.jsonl | jq .
;;
system|sys)
if [[ -f /var/log/system.log ]]; then
tail -f /var/log/system.log
else
journalctl -f
fi
;;
pi)
shift
local host="${1:-cecilia}"
ssh -t "$host" "journalctl -f"
;;
ollama)
shift
local host="${1:-cecilia}"
ssh -t "$host" "journalctl -u ollama -f"
;;
nginx)
shift
local host="${1:-cecilia}"
ssh -t "$host" "tail -f /var/log/nginx/access.log"
;;
docker)
shift
local container="${1:-}"
if [[ -z "$container" ]]; then
docker logs --tail 100 -f "$(docker ps -q | head -1)"
else
docker logs --tail 100 -f "$container"
fi
;;
all-pis)
echo -e "${PINK}Tailing logs from all Pis...${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
ssh "$host" "journalctl -n 5 --no-pager" 2>/dev/null | sed "s/^/[$host] /"
fi
done
;;
help|*)
echo -e "${MAGENTA}logs${RESET} - View and Tail Logs"
echo ""
echo " logs memory Memory journal (json)"
echo " logs memory-pretty Memory journal (formatted)"
echo " logs system System log"
echo " logs pi [host] Pi system log"
echo " logs ollama [host] Ollama service log"
echo " logs nginx [host] Nginx access log"
echo " logs docker [name] Docker container log"
echo " logs all-pis Recent logs from all Pis"
;;
esac
}
#═══════════════════════════════════════════════════════════════════════════════
# BACKUP - Backup and restore
#═══════════════════════════════════════════════════════════════════════════════
cmd_backup() {
local backup_dir="$HOME/backups"
local timestamp=$(date +%Y%m%d_%H%M%S)
case "${1:-help}" in
scripts)
mkdir -p "$backup_dir"
local dest="$backup_dir/scripts_$timestamp.tar.gz"
tar -czf "$dest" -C ~ bin/*.sh bin/blackroad .blackroad-*.sh .blackroad-*.bash .blackroad-*.zsh 2>/dev/null
echo -e "${GREEN}Backed up scripts to:${RESET} $dest"
ls -lh "$dest"
;;
memory)
mkdir -p "$backup_dir"
local dest="$backup_dir/memory_$timestamp.tar.gz"
tar -czf "$dest" -C ~ .blackroad/memory 2>/dev/null
echo -e "${GREEN}Backed up memory to:${RESET} $dest"
ls -lh "$dest"
;;
config)
mkdir -p "$backup_dir"
local dest="$backup_dir/config_$timestamp.tar.gz"
tar -czf "$dest" -C ~ .zshrc .bashrc .tmux.conf .gitconfig .ssh/config 2>/dev/null
echo -e "${GREEN}Backed up config to:${RESET} $dest"
ls -lh "$dest"
;;
db)
mkdir -p "$backup_dir"
local dest="$backup_dir/databases_$timestamp"
mkdir -p "$dest"
cp ~/.blackroad-agent-registry.db "$dest/" 2>/dev/null
cp ~/.blackroad-traffic-light.db "$dest/" 2>/dev/null
cp ~/blackroad-codex/index/*.db "$dest/" 2>/dev/null
echo -e "${GREEN}Backed up databases to:${RESET} $dest/"
ls -la "$dest/"
;;
all)
echo -e "${PINK}Creating full backup...${RESET}"
cmd_backup scripts
cmd_backup memory
cmd_backup config
cmd_backup db
echo -e "\n${GREEN}All backups complete!${RESET}"
;;
pi)
shift
local host="${1:-cecilia}"
local dest="$backup_dir/${host}_$timestamp.tar.gz"
mkdir -p "$backup_dir"
echo -e "${PINK}Backing up $host...${RESET}"
ssh "$host" "tar -czf - ~/bin ~/.ollama/models 2>/dev/null" > "$dest"
echo -e "${GREEN}Backed up $host to:${RESET} $dest"
ls -lh "$dest"
;;
list|ls)
echo -e "${WHITE}Backups in $backup_dir:${RESET}"
ls -lht "$backup_dir" 2>/dev/null | head -20 || echo "No backups found"
;;
clean)
shift
local days="${1:-30}"
echo -e "${PINK}Removing backups older than $days days...${RESET}"
find "$backup_dir" -type f -mtime "+$days" -delete -print
;;
help|*)
echo -e "${MAGENTA}backup${RESET} - Backup and Restore"
echo ""
echo -e " ${GREEN}CREATE${RESET}"
echo " backup scripts Scripts and CLI"
echo " backup memory Memory system"
echo " backup config Shell configs"
echo " backup db SQLite databases"
echo " backup all Everything"
echo " backup pi [host] Backup Pi (default: cecilia)"
echo ""
echo -e " ${GREEN}MANAGE${RESET}"
echo " backup list List backups"
echo " backup clean [days] Remove old (default: 30)"
;;
esac
}
#═══════════════════════════════════════════════════════════════════════════════
# HEALTH - System health checks
#═══════════════════════════════════════════════════════════════════════════════
cmd_health() {
case "${1:-all}" in
local|mac)
echo -e "${WHITE}Local System Health:${RESET}"
echo -e "\n${GREEN}CPU:${RESET}"
top -l 1 | grep "CPU usage" || uptime
echo -e "\n${GREEN}Memory:${RESET}"
vm_stat | head -5 2>/dev/null || free -h
echo -e "\n${GREEN}Disk:${RESET}"
df -h / | tail -1
echo -e "\n${GREEN}Network:${RESET}"
ping -c1 google.com &>/dev/null && echo "Internet: OK" || echo "Internet: FAIL"
;;
fleet|pis)
echo -e "${WHITE}Pi Fleet Health:${RESET}"
printf "\n%-12s %-8s %-10s %-10s %s\n" "HOST" "STATUS" "LOAD" "MEM" "DISK"
echo "─────────────────────────────────────────────────────"
for host in cecilia lucidia aria octavia alice; do
if pi_online "$host"; then
local info=$(ssh -o ConnectTimeout=3 "$host" "
load=\$(uptime | awk -F'load average:' '{print \$2}' | awk '{print \$1}' | tr -d ',')
mem=\$(free | awk '/Mem:/ {printf \"%.0f%%\", \$3/\$2*100}')
disk=\$(df / | tail -1 | awk '{print \$5}')
echo \"\$load \$mem \$disk\"
" 2>/dev/null)
local load=$(echo "$info" | awk '{print $1}')
local mem=$(echo "$info" | awk '{print $2}')
local disk=$(echo "$info" | awk '{print $3}')
printf "%-12s ${GREEN}%-8s${RESET} %-10s %-10s %s\n" "$host" "online" "$load" "$mem" "$disk"
else
printf "%-12s ${RED}%-8s${RESET}\n" "$host" "offline"
fi
done
;;
ollama)
echo -e "${WHITE}Ollama Health:${RESET}"
for host in cecilia lucidia aria octavia; do
if pi_online "$host"; then
local status=$(ssh -o ConnectTimeout=3 "$host" "systemctl is-active ollama 2>/dev/null || echo 'unknown'" 2>/dev/null)
local models=$(ssh -o ConnectTimeout=3 "$host" "ollama list 2>/dev/null | tail -n +2 | wc -l" 2>/dev/null || echo "?")
if [[ "$status" == "active" ]]; then
echo -e " ${GREEN}${RESET} $host: $status ($models models)"
else
echo -e " ${RED}${RESET} $host: $status"
fi
fi
done
;;
services|svc)
echo -e "${WHITE}Service Health:${RESET}"
echo -e "\n${GREEN}Cloudflare:${RESET}"
wrangler whoami &>/dev/null && echo " Auth: OK" || echo " Auth: FAIL"
echo -e "\n${GREEN}GitHub:${RESET}"
gh auth status &>/dev/null && echo " Auth: OK" || echo " Auth: FAIL"
echo -e "\n${GREEN}Tailscale:${RESET}"
tailscale status &>/dev/null && echo " Status: Connected" || echo " Status: Disconnected"
;;
db|databases)
echo -e "${WHITE}Database Health:${RESET}"
for db in ~/.blackroad-agent-registry.db ~/.blackroad-traffic-light.db; do
if [[ -f "$db" ]]; then
local size=$(ls -lh "$db" | awk '{print $5}')
local tables=$(sqlite3 "$db" ".tables" 2>/dev/null | wc -w)
echo -e " ${GREEN}${RESET} $(basename $db): $size ($tables tables)"
else
echo -e " ${RED}${RESET} $(basename $db): missing"
fi
done
;;
all|full)
cmd_health local
echo ""
cmd_health fleet
echo ""
cmd_health ollama
echo ""
cmd_health services
echo ""
cmd_health db
;;
help|*)
echo -e "${MAGENTA}health${RESET} - System Health Checks"
echo ""
echo " health Full health check"
echo " health local Local Mac health"
echo " health fleet Pi fleet status"
echo " health ollama Ollama service status"
echo " health services External service auth"
echo " health db Database health"
;;
esac
}
#═══════════════════════════════════════════════════════════════════════════════
# QUICK - Quick one-liners
#═══════════════════════════════════════════════════════════════════════════════
cmd_quick() {
case "${1:-help}" in
ip) curl -s ifconfig.me && echo ;;
localip) ipconfig getifaddr en0 2>/dev/null || hostname -I | awk '{print $1}' ;;
weather) curl -s "wttr.in/?format=3" ;;
epoch) date +%s ;;
uuid) uuidgen | tr '[:upper:]' '[:lower:]' ;;
random) openssl rand -hex "${2:-16}" ;;
ports) lsof -i -P -n | grep LISTEN ;;
path) echo "$PATH" | tr ':' '\n' ;;
size) du -sh "${2:-.}" ;;
count) find "${2:-.}" -type f | wc -l ;;
space) df -h / ;;
top10) du -sh "${2:-.}"/* 2>/dev/null | sort -rh | head -10 ;;
processes) ps aux | head -20 ;;
whoami) echo "User: $(whoami)@$(hostname)" ;;
help|*)
echo -e "${MAGENTA}quick${RESET} - Quick One-Liners"
echo ""
echo " quick ip Public IP"
echo " quick localip Local IP"
echo " quick weather Weather"
echo " quick epoch Unix timestamp"
echo " quick uuid Generate UUID"
echo " quick random [n] Random hex (default: 16)"
echo " quick ports Listening ports"
echo " quick path PATH entries"
echo " quick size [dir] Directory size"
echo " quick count [dir] File count"
echo " quick top10 [dir] Largest items"
echo " quick whoami User info"
;;
esac
}
#═══════════════════════════════════════════════════════════════════════════════
# TMUX - Terminal Multiplexer Workspaces
#═══════════════════════════════════════════════════════════════════════════════
cmd_tmux() {
case "${1:-help}" in
# Pre-built layouts
dashboard|dash)
tmux new-session -d -s blackroad -n "status" "watch -n5 -c ~/bin/blackroad local status" \; \
split-window -h "watch -n10 -c ~/bin/blackroad status" \; \
split-window -v "htop" \; \
select-pane -t 0 \; \
split-window -v "tail -f ~/.blackroad/memory/journals/master-journal.jsonl 2>/dev/null | jq -c ." \; \
new-window -n "pis" \; \
send-keys "ssh cecilia" C-m \; \
split-window -h "ssh lucidia" \; \
split-window -v "ssh octavia" \; \
select-pane -t 0 \; \
split-window -v "ssh aria" \; \
select-window -t 0 \; \
attach
;;
fleet|pis)
echo -e "${PINK}Launching Pi Fleet Control...${RESET}"
tmux new-session -d -s pi-fleet -n "cecilia" "ssh -t cecilia 'htop'" \; \
split-window -h "ssh -t cecilia 'watch ollama ps'" \; \
new-window -n "lucidia" "ssh -t lucidia 'htop'" \; \
split-window -h "ssh -t lucidia 'watch ollama ps'" \; \
new-window -n "aria" "ssh -t aria 'htop'" \; \
split-window -h "ssh -t aria 'watch ollama ps'" \; \
new-window -n "octavia" "ssh -t octavia 'htop'" \; \
split-window -h "ssh -t octavia 'watch ollama ps'" \; \
select-window -t 0 \; \
attach
;;
ai|chat)
echo -e "${PINK}Launching AI Chat Grid...${RESET}"
local best=$(get_best_pi)
tmux new-session -d -s ai-chat -n "cece" "ssh -t cecilia 'ollama run cecilia:latest'" \; \
new-window -n "lucidia" "ssh -t lucidia 'ollama run qwen2.5:1.5b'" \; \
new-window -n "aria" "ssh -t aria 'ollama run llama3.2:3b'" \; \
new-window -n "octavia" "ssh -t octavia 'ollama run llama3:latest'" \; \
select-window -t 0 \; \
attach
;;
dev|code)
echo -e "${PINK}Launching Dev Workspace...${RESET}"
tmux new-session -d -s dev -n "code" \; \
send-keys "cd ~/blackroad-scripts && nvim ." C-m \; \
new-window -n "git" \; \
send-keys "cd ~/blackroad-scripts && git status" C-m \; \
split-window -v "cd ~/blackroad-scripts && watch -n30 'git log --oneline -10'" \; \
new-window -n "local-ai" "ssh -t cecilia 'ollama run qwen2.5-coder:3b'" \; \
new-window -n "term" \; \
select-window -t 0 \; \
attach
;;
monitor|mon)
echo -e "${PINK}Launching System Monitor...${RESET}"
tmux new-session -d -s monitor -n "system" "htop" \; \
split-window -h "watch -n5 'df -h /'" \; \
split-window -v "watch -n10 'free -h'" \; \
select-pane -t 0 \; \
split-window -v "watch -n30 '~/bin/blackroad local status'" \; \
new-window -n "network" "watch -n5 'netstat -an | head -30'" \; \
split-window -h "ping -c1000 cecilia" \; \
new-window -n "logs" "tail -f /var/log/system.log 2>/dev/null || journalctl -f" \; \
select-window -t 0 \; \
attach
;;
quad)
# 4-pane layout - all Pis
echo -e "${PINK}Launching Quad View...${RESET}"
tmux new-session -d -s quad -n "pis" \; \
send-keys "ssh cecilia" C-m \; \
split-window -h \; \
send-keys "ssh lucidia" C-m \; \
split-window -v \; \
send-keys "ssh octavia" C-m \; \
select-pane -t 0 \; \
split-window -v \; \
send-keys "ssh aria" C-m \; \
attach
;;
grid)
# 6-pane grid
echo -e "${PINK}Launching 6-Pane Grid...${RESET}"
tmux new-session -d -s grid \; \
split-window -h \; \
split-window -h \; \
select-layout even-horizontal \; \
select-pane -t 0 \; \
split-window -v \; \
select-pane -t 2 \; \
split-window -v \; \
select-pane -t 4 \; \
split-window -v \; \
select-pane -t 0 \; \
attach
;;
brady|bunch)
# Brady Bunch 9-pane grid
echo -e "${PINK}Launching Brady Bunch (3x3)...${RESET}"
tmux new-session -d -s brady \; \
split-window -v \; \
split-window -v \; \
select-layout even-vertical \; \
select-pane -t 0 \; split-window -h \; split-window -h \; \
select-pane -t 3 \; split-window -h \; split-window -h \; \
select-pane -t 6 \; split-window -h \; split-window -h \; \
select-pane -t 0 \; \
attach
;;
# Session management
ls|list|sessions)
echo -e "${WHITE}Active tmux sessions:${RESET}"
tmux list-sessions 2>/dev/null || echo -e "${DIM}No sessions running${RESET}"
;;
attach|a)
shift
local session="${1:-}"
if [[ -z "$session" ]]; then
tmux attach 2>/dev/null || echo "No sessions to attach"
else
tmux attach -t "$session" 2>/dev/null || echo "Session not found: $session"
fi
;;
kill)
shift
local session="${1:-}"
if [[ -z "$session" ]]; then
echo "Usage: br tmux kill <session-name>"
tmux list-sessions 2>/dev/null
else
tmux kill-session -t "$session" && echo -e "${GREEN}Killed:${RESET} $session"
fi
;;
killall)
tmux kill-server 2>/dev/null && echo -e "${GREEN}All tmux sessions killed${RESET}"
;;
new)
shift
local name="${1:-blackroad}"
tmux new-session -s "$name"
;;
help|*)
echo -e "${MAGENTA}tmux${RESET} - Terminal Workspaces"
echo ""
echo -e " ${GREEN}LAYOUTS${RESET}"
echo " tmux dashboard BlackRoad control center (status + pis)"
echo " tmux fleet Pi fleet control (4 windows, 8 panes)"
echo " tmux ai AI chat grid (4 models)"
echo " tmux dev Development workspace"
echo " tmux monitor System monitoring"
echo " tmux quad 4-pane Pi grid"
echo " tmux grid 6-pane grid"
echo " tmux brady Brady Bunch 3x3 grid"
echo ""
echo -e " ${GREEN}SESSIONS${RESET}"
echo " tmux list Show active sessions"
echo " tmux attach [name] Attach to session"
echo " tmux new [name] New session"
echo " tmux kill <name> Kill session"
echo " tmux killall Kill all sessions"
;;
esac
}
# Run any script directly
cmd_run() {
script="${1:-}"
if [[ -z "$script" ]]; then
echo "Usage: blackroad run <script-name> [args...]"
echo "Available scripts: $(ls ~/*.sh 2>/dev/null | wc -l)"
return 1
fi
shift
script_path=""
# Check various locations
if [[ -f ~/"${script}.sh" ]]; then
script_path=~/"${script}.sh"
elif [[ -f ~/"$script" ]]; then
script_path=~/"$script"
elif [[ -f ~/bin/"$script" ]]; then
script_path=~/bin/"$script"
elif [[ -f ~/bin/"${script}.sh" ]]; then
script_path=~/bin/"${script}.sh"
else
echo -e "${RED}Script not found:${RESET} $script"
echo "Try: blackroad list | grep $script"
return 1
fi
bash "$script_path" "$@"
}
# List all scripts
cmd_list() {
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo -e "${WHITE}ALL AVAILABLE SCRIPTS${RESET}"
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
if [[ -n "${1:-}" ]]; then
# Filter by pattern
ls ~/*.sh ~/bin/* 2>/dev/null | xargs -n1 basename 2>/dev/null | sort -u | grep -i "$1" || echo "No matches for: $1"
else
# List by category
echo -e "\n${AMBER}Memory ($(ls ~/memory-*.sh 2>/dev/null | wc -l | tr -d ' '))${RESET}"
ls ~/memory-*.sh 2>/dev/null | xargs -n1 basename | sed 's/\.sh$//' | tr '\n' ' '
echo -e "\n\n${AMBER}Agent ($(ls ~/agent-*.sh ~/claude-*.sh 2>/dev/null | wc -l | tr -d ' '))${RESET}"
ls ~/agent-*.sh ~/claude-*.sh 2>/dev/null | xargs -n1 basename | sed 's/\.sh$//' | tr '\n' ' '
echo -e "\n\n${AMBER}Deploy ($(ls ~/deploy-*.sh 2>/dev/null | wc -l | tr -d ' '))${RESET}"
ls ~/deploy-*.sh 2>/dev/null | xargs -n1 basename | sed 's/\.sh$//' | tr '\n' ' '
echo -e "\n\n${AMBER}BlackRoad ($(ls ~/blackroad-*.sh 2>/dev/null | wc -l | tr -d ' '))${RESET}"
ls ~/blackroad-*.sh 2>/dev/null | xargs -n1 basename | sed 's/\.sh$//' | tr '\n' ' '
echo -e "\n\n${AMBER}Total:${RESET} $(ls ~/*.sh ~/bin/* 2>/dev/null | wc -l | tr -d ' ') scripts"
fi
echo
}
# Quick status
cmd_status() {
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo -e "${WHITE}BLACKROAD SYSTEM STATUS${RESET}"
echo -e "${PINK}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
echo -e "\n${AMBER}Identity:${RESET} ${MY_CLAUDE:-not set}"
echo -e "${AMBER}Host:${RESET} $(hostname)"
echo -e "${AMBER}User:${RESET} $(whoami)"
echo -e "${AMBER}Git Branch:${RESET} $(git branch --show-current 2>/dev/null || echo 'n/a')"
echo -e "\n${AMBER}Memory:${RESET} $(wc -l < ~/.blackroad/memory/journals/master-journal.jsonl 2>/dev/null || echo 0) entries"
echo -e "${AMBER}Scripts:${RESET} $(ls ~/*.sh 2>/dev/null | wc -l | tr -d ' ') in home"
echo -e "${AMBER}Bin:${RESET} $(ls ~/bin/* 2>/dev/null | wc -l | tr -d ' ') commands"
# Traffic lights
if [[ -f ~/.blackroad-traffic-light.db ]]; then
green=$(sqlite3 ~/.blackroad-traffic-light.db "SELECT COUNT(*) FROM traffic_lights WHERE status='green';" 2>/dev/null || echo 0)
yellow=$(sqlite3 ~/.blackroad-traffic-light.db "SELECT COUNT(*) FROM traffic_lights WHERE status='yellow';" 2>/dev/null || echo 0)
red=$(sqlite3 ~/.blackroad-traffic-light.db "SELECT COUNT(*) FROM traffic_lights WHERE status='red';" 2>/dev/null || echo 0)
echo -e "\n${GREEN}🟢 $green${RESET} ${YELLOW}🟡 $yellow${RESET} ${RED}🔴 $red${RESET}"
fi
# Pi fleet quick check
echo -e "\n${AMBER}Pi Fleet:${RESET}"
for host in alice aria lucidia octavia cecilia; do
if ping -c1 -W1 "${host}.local" &>/dev/null 2>&1; then
echo -e " ${GREEN}${RESET} $host"
else
echo -e " ${DIM}$host${RESET}"
fi
done
}
# Main router
main() {
# If invoked as lucidia with no args, show lucidia menu
if [[ "$INVOKED_AS" == "lucidia" && $# -eq 0 ]]; then
cmd_ai menu
return
fi
case "${1:-help}" in
# Categories
ai|lucidia|llm) shift; cmd_ai "$@" ;;
memory|mem) shift; cmd_memory "$@" ;;
agent|agents) shift; cmd_agent "$@" ;;
deploy) shift; cmd_deploy "$@" ;;
infra) shift; cmd_infra "$@" ;;
network|net) shift; cmd_network "$@" ;;
pi|pis|fleet) shift; cmd_pi "$@" ;;
github|gh) shift; cmd_github "$@" ;;
cloudflare|cf) shift; cmd_cloudflare "$@" ;;
stripe) shift; cmd_stripe "$@" ;;
security|sec) shift; cmd_security "$@" ;;
visual|fun) shift; cmd_visual "$@" ;;
db|database) shift; cmd_db "$@" ;;
analytics) shift; cmd_analytics "$@" ;;
brand) shift; cmd_brand "$@" ;;
traffic) shift; cmd_traffic "$@" ;;
task|tasks) shift; cmd_task "$@" ;;
codex) shift; cmd_codex "$@" ;;
run) shift; cmd_run "$@" ;;
list|ls) shift; cmd_list "$@" ;;
# LOCAL AI - Anthropic becomes optional
local) shift; cmd_local "$@" ;;
ask) shift; cmd_ask "$@" ;;
# TMUX workspaces
tmux|tm) shift; cmd_tmux "$@" ;;
# Fleet management
ssh) shift; cmd_ssh "$@" ;;
ollama|oll) shift; cmd_ollama "$@" ;;
watch|w) shift; cmd_watch "$@" ;;
sync) shift; cmd_sync "$@" ;;
# Quick commands
status) cmd_status ;;
stats) ~/bin/br-stats 2>/dev/null || ~/github-stats.sh ;;
todos) ~/memory-infinite-todos.sh list ;;
init) ~/claude-session-init.sh ;;
micro) ~/bin/br-micro-dashboard 2>/dev/null || ~/blackroad-mega-status.sh ;;
macro) ~/bin/br-macro-dashboard 2>/dev/null || ~/blackroad-infrastructure-map.sh ;;
colors) cmd_brand colors ;;
gradient) cmd_brand gradient ;;
banner) show_banner ;;
logo) cmd_brand logo ;;
menu) cmd_menu ;;
find|search) cmd_find ;;
quick|q) shift; cmd_quick "$@" ;;
quantum|qc) shift; cmd_quantum "$@" ;;
animate|anim) shift; cmd_animate "$@" ;;
matrix) cmd_matrix ;;
boot) cmd_boot ;;
# Help
help|-h|--help) show_help ;;
# Unknown - try to run as script
*)
if [[ -f ~/"${1}.sh" ]] || [[ -f ~/bin/"$1" ]]; then
cmd_run "$@"
else
echo -e "${RED}Unknown command:${RESET} $1"
echo "Try: blackroad help"
exit 1
fi
;;
esac
}
# Interactive menu using gum
cmd_menu() {
if ! command -v gum &>/dev/null; then
echo -e "${RED}gum not installed.${RESET} Install with: brew install gum"
return 1
fi
show_banner
echo ""
local choice
choice=$(gum choose --cursor.foreground="198" --header.foreground="208" \
--header="Select a category:" \
"🧠 memory - Memory & coordination" \
"🤖 agent - AI agents & Claude" \
"🚀 deploy - Deploy everywhere" \
"🔧 infra - Infrastructure" \
"🌐 network - DNS, SSH, Tailscale" \
"🍓 pi - Raspberry Pi fleet" \
"📦 github - GitHub operations" \
"☁️ cloudflare - Pages & Workers" \
"💳 stripe - Payments" \
"🔒 security - Audits & compliance" \
"🎮 visual - Games & graphics" \
"🎨 brand - Colors & logos" \
"📊 analytics - Metrics & stats" \
"📋 status - System status" \
"❌ exit")
[[ -z "$choice" || "$choice" == "❌ exit" ]] && return 0
# Extract category name
local cat=$(echo "$choice" | awk '{print $2}')
case "$cat" in
memory) cmd_memory help; echo ""; gum input --placeholder "Enter command..." | xargs -I{} bash -c "~/bin/blackroad memory {}" ;;
agent) cmd_agent help; echo ""; gum input --placeholder "Enter command..." | xargs -I{} bash -c "~/bin/blackroad agent {}" ;;
deploy) cmd_deploy help ;;
infra) cmd_infra help ;;
network) cmd_network help ;;
pi) cmd_pi help ;;
github) cmd_github help ;;
cloudflare) cmd_cloudflare help ;;
stripe) cmd_stripe help ;;
security) cmd_security help ;;
visual) cmd_visual help ;;
brand) cmd_brand all ;;
analytics) cmd_analytics help ;;
status) cmd_status ;;
esac
}
# Fuzzy script finder using fzf
cmd_find() {
if ! command -v fzf &>/dev/null; then
echo -e "${RED}fzf not installed. Install with: brew install fzf${RESET}"
return 1
fi
local scripts
scripts=$(find ~ -maxdepth 1 -name "*.sh" -type f 2>/dev/null | sort)
scripts+=$'\n'$(find ~/bin -type f 2>/dev/null | sort)
scripts+=$'\n'$(find ~/scripts -type f -name "*.sh" 2>/dev/null | sort)
local selected
selected=$(echo "$scripts" | grep -v "^$" | fzf \
--preview 'head -30 {}' \
--preview-window=right:50%:wrap \
--header="🔍 BlackRoad Script Finder (TAB to select, ENTER to run)" \
--prompt="search> " \
--color="bg+:#1a1a1a,fg+:#FF0087,hl:#FF8700,hl+:#FF5F00,pointer:#FF0087,prompt:#0087FF")
[[ -z "$selected" ]] && return 0
echo -e "${AMBER}Selected:${RESET} $selected"
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
local choice
choice=$(gum choose "Run it" "Edit it" "View it" "Copy path" "Cancel")
case "$choice" in
"Run it")
echo -e "${GREEN}Running...${RESET}"
bash "$selected"
;;
"Edit it")
${EDITOR:-vim} "$selected"
;;
"View it")
less "$selected"
;;
"Copy path")
echo -n "$selected" | pbcopy
echo -e "${GREEN}Copied to clipboard!${RESET}"
;;
esac
}
# Quick aliases - short commands for common tasks
cmd_quick() {
case "${1:-help}" in
s|status) cmd_status ;;
m|memory) ~/memory-system.sh summary ;;
t|tasks) ~/memory-task-marketplace.sh list ;;
l|lights) ~/blackroad-traffic-light.sh summary ;;
a|agents) ~/blackroad-agent-registry.sh list 2>/dev/null || echo "No agents registered" ;;
g|github) gh repo list BlackRoad-OS --limit 10 ;;
c|cf) wrangler pages project list 2>/dev/null | head -20 ;;
d|deploy) echo -e "${AMBER}Quick deploys:${RESET}"; echo " br quick dp <dir> <name> - Deploy to Cloudflare" ;;
dp)
shift
local dir="${1:-.}"
local name="${2:-$(basename $(pwd))}"
wrangler pages deploy "$dir" --project-name="$name"
;;
help|*)
echo -e "${AMBER}Quick Commands:${RESET}"
echo " br quick s|status - System status"
echo " br quick m|memory - Memory summary"
echo " br quick t|tasks - Task list"
echo " br quick l|lights - Traffic lights"
echo " br quick a|agents - Agent list"
echo " br quick g|github - Recent repos"
echo " br quick c|cf - Cloudflare projects"
echo " br quick dp <dir> <name> - Quick deploy"
;;
esac
}
# Ollama model management
# Quantum computing commands
cmd_quantum() {
case "${1:-help}" in
status)
echo -e "${MAGENTA}╔═══════════════════════════════════════════════════════════════╗${RESET}"
echo -e "${MAGENTA}${RESET} ${WHITE}⚛️ QUANTUM STATE MONITOR${RESET} ${MAGENTA}${RESET}"
echo -e "${MAGENTA}╠═══════════════════════════════════════════════════════════════╣${RESET}"
echo -e "${MAGENTA}${RESET} Qubits: ${PINK}|ψ⟩ = α|0⟩ + β|1⟩${RESET} ${MAGENTA}${RESET}"
echo -e "${MAGENTA}${RESET} Coherence: ${GREEN}████████████░░░░${RESET} 75% ${MAGENTA}${RESET}"
echo -e "${MAGENTA}${RESET} Entangled: ${AMBER}8 pairs${RESET} ${MAGENTA}${RESET}"
echo -e "${MAGENTA}${RESET} Gates: ${BLUE}H, CNOT, T, S, X, Y, Z${RESET} ${MAGENTA}${RESET}"
echo -e "${MAGENTA}╚═══════════════════════════════════════════════════════════════╝${RESET}"
;;
simulate)
echo -e "${PINK}Initializing quantum simulation...${RESET}"
for i in {1..20}; do
local state=$((RANDOM % 2))
local amp=$(printf "%.3f" $(echo "scale=3; $RANDOM/32767" | bc))
printf "${MAGENTA}|q%02d⟩${RESET} = ${WHITE}%.3f${RESET}|${GREEN}%d${RESET}⟩ + ${WHITE}%.3f${RESET}|${RED}%d${RESET}⟩\n" \
$i $amp $state $(echo "1 - $amp" | bc) $((1-state))
sleep 0.05
done
echo -e "\n${GREEN}Simulation complete. 20 qubits initialized.${RESET}"
;;
entangle)
echo -e "${MAGENTA}Creating Bell pair...${RESET}"
sleep 0.3
echo -e " ${PINK}|Φ+⟩ = (|00⟩ + |11⟩)/√2${RESET}"
echo -e " ${WHITE}Entanglement fidelity: ${GREEN}99.7%${RESET}"
;;
measure)
echo -e "${AMBER}Collapsing quantum state...${RESET}"
sleep 0.2
local result=$((RANDOM % 2))
echo -e " Measurement result: ${WHITE}|${result}${RESET}"
echo -e " ${DIM}(Superposition destroyed)${RESET}"
;;
gate)
shift
local gate="${1:-H}"
echo -e "${BLUE}Applying ${gate} gate...${RESET}"
case "$gate" in
H) echo " Hadamard: |0⟩ → (|0⟩ + |1⟩)/√2" ;;
X) echo " Pauli-X: |0⟩ ↔ |1⟩ (NOT gate)" ;;
Y) echo " Pauli-Y: |0⟩ → i|1⟩, |1⟩ → -i|0⟩" ;;
Z) echo " Pauli-Z: |1⟩ → -|1⟩ (phase flip)" ;;
CNOT) echo " CNOT: |a,b⟩ → |a, a⊕b⟩" ;;
T) echo " T-gate: π/8 phase rotation" ;;
*) echo " Unknown gate: $gate" ;;
esac
;;
circuit)
echo -e "${WHITE}Quantum Circuit:${RESET}"
echo -e "${DIM}q0: ─${RESET}${BLUE}[H]${RESET}${DIM}───●───────${RESET}"
echo -e "${DIM} ${RESET} ${DIM}${RESET} "
echo -e "${DIM}q1: ─────${RESET}${MAGENTA}[X]${RESET}${DIM}${RESET}${AMBER}[M]${RESET}${DIM}───${RESET}"
echo -e "\n${GREEN}Bell state preparation circuit${RESET}"
;;
research)
echo -e "${AMBER}BlackRoad Quantum Research:${RESET}"
echo " • PS-SHA-∞: Quantum-resistant hashing"
echo " • Spiral Information Geometry"
echo " • SU(N) Heterogeneous Qudits"
echo " • Consciousness-Coherence Mapping"
;;
help|*)
echo -e "${MAGENTA}quantum${RESET} - Quantum Computing Commands"
echo " status - Quantum state monitor"
echo " simulate - Initialize qubit simulation"
echo " entangle - Create Bell pair"
echo " measure - Collapse superposition"
echo " gate <G> - Apply quantum gate (H,X,Y,Z,CNOT,T)"
echo " circuit - Show example circuit"
echo " research - BlackRoad quantum research"
;;
esac
}
# Matrix rain effect
cmd_matrix() {
local cols=$(tput cols)
local lines=$(tput lines)
local chars="ハミヒーウシナモニサワツオリアホテマケメエカキムユラセネスタヌヘ01234567890"
echo -e "${GREEN}"
trap "tput cnorm; echo -e '${RESET}'; exit" INT
tput civis # Hide cursor
declare -A drops
for ((i=0; i<cols; i++)); do
drops[$i]=$((RANDOM % lines))
done
for frame in {1..200}; do
for ((x=0; x<cols; x+=2)); do
local y=${drops[$x]}
local char="${chars:$((RANDOM % ${#chars})):1}"
tput cup $y $x
echo -n "$char"
# Trail
if ((y > 0)); then
tput cup $((y-1)) $x
echo -ne "\033[38;5;22m${chars:$((RANDOM % ${#chars})):1}"
fi
drops[$x]=$(( (y + 1) % lines ))
done
sleep 0.05
done
tput cnorm
echo -e "${RESET}"
}
# Spinning animation
cmd_spin() {
local duration="${1:-5}"
local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏')
local end=$((SECONDS + duration))
echo -ne "${PINK}"
while [ $SECONDS -lt $end ]; do
for frame in "${frames[@]}"; do
printf "\r%s BlackRoad processing..." "$frame"
sleep 0.1
done
done
printf "\r${GREEN}${RESET} Complete! \n"
}
# Pulse animation
cmd_pulse() {
echo -e "${AMBER}Pulse Animation${RESET}"
for i in {1..30}; do
local width=$((i % 10))
printf "\r["
for ((j=0; j<width; j++)); do printf "${PINK}${RESET}"; done
for ((j=width; j<10; j++)); do printf " "; done
printf "]"
sleep 0.1
done
echo
}
# Gradient wave
cmd_wave() {
local width=60
local colors=(208 202 198 163 33 163 198 202)
for frame in {0..50}; do
printf "\r"
for ((i=0; i<width; i++)); do
local idx=$(( (i + frame) % ${#colors[@]} ))
printf "\033[38;5;${colors[$idx]}m▄"
done
sleep 0.06
done
echo -e "${RESET}"
}
# Particle explosion
cmd_particles() {
local particles=30
declare -a px py vx vy
for ((i=0; i<particles; i++)); do
px[$i]=40
py[$i]=12
vx[$i]=$(echo "scale=2; ($RANDOM % 20 - 10) / 5" | bc)
vy[$i]=$(echo "scale=2; ($RANDOM % 20 - 10) / 5" | bc)
done
tput civis
trap "tput cnorm; echo -e '${RESET}'; clear; exit" INT
for frame in {1..40}; do
clear
for ((i=0; i<particles; i++)); do
local x=$(printf "%.0f" ${px[$i]})
local y=$(printf "%.0f" ${py[$i]})
if ((x > 0 && x < 80 && y > 0 && y < 24)); then
local colors=(198 202 208 214 220)
local color=${colors[$((i % 5))]}
tput cup $y $x
printf "\033[38;5;${color}m●${RESET}"
fi
px[$i]=$(echo "${px[$i]} + ${vx[$i]}" | bc)
py[$i]=$(echo "${py[$i]} + ${vy[$i]} + 0.1" | bc) # gravity
done
sleep 0.08
done
tput cnorm
}
# BlackRoad loading animation
cmd_loading() {
local msg="${1:-Loading BlackRoad OS}"
local width=40
echo -e "\n${WHITE}$msg${RESET}\n"
for ((i=0; i<=width; i++)); do
local pct=$((i * 100 / width))
printf "\r${DIM}[${RESET}"
for ((j=0; j<i; j++)); do
local colors=(208 202 198 163 33)
local c=${colors[$((j * 5 / width))]}
printf "\033[38;5;${c}m█"
done
for ((j=i; j<width; j++)); do
printf "${DIM}${RESET}"
done
printf "${DIM}]${RESET} ${WHITE}%3d%%${RESET}" $pct
sleep 0.03
done
echo -e "\n${GREEN}✓ Complete!${RESET}\n"
}
# Radar sweep
cmd_radar() {
local radius=10
tput civis
trap "tput cnorm; echo -e '${RESET}'; exit" INT
echo -e "${GREEN}BlackRoad Radar${RESET}"
for angle in {0..360..10}; do
clear
echo -e "${GREEN}╭────────────────────────────────────╮${RESET}"
for ((y=-radius; y<=radius; y++)); do
printf "${GREEN}${RESET}"
for ((x=-radius*2; x<=radius*2; x++)); do
local dist=$(echo "scale=2; sqrt($x*$x/4 + $y*$y)" | bc)
local a=$(echo "scale=0; a($y, $x/2) * 180 / 3.14159" | bc -l 2>/dev/null || echo "0")
if ((${dist%.*} == radius)); then
printf "${GREEN}${RESET}"
elif ((${dist%.*} < 2)); then
printf "${PINK}${RESET}"
elif ((a > angle - 30 && a < angle)); then
printf "${GREEN}·${RESET}"
else
printf " "
fi
done
printf "${GREEN}${RESET}\n"
done
echo -e "${GREEN}╰────────────────────────────────────╯${RESET}"
sleep 0.1
done
tput cnorm
}
# Boot sequence animation
cmd_boot() {
clear
echo -e "${DIM}Initializing BlackRoad OS...${RESET}\n"
sleep 0.3
local steps=(
"Loading kernel modules"
"Initializing memory system"
"Connecting to GitHub orgs"
"Syncing Cloudflare workers"
"Activating AI agents"
"Establishing Tailscale mesh"
"Loading quantum circuits"
"Calibrating neural networks"
)
for step in "${steps[@]}"; do
printf " ${DIM}[ ]${RESET} $step"
sleep 0.2
printf "\r ${AMBER}[${RESET}${DIM}...${RESET}${AMBER}]${RESET}"
sleep 0.3
printf "\r ${GREEN}[ OK ]${RESET}\n"
done
echo ""
cmd_loading "Bringing systems online"
echo ""
show_banner
}
# Add animation commands to main
cmd_animate() {
case "${1:-help}" in
matrix) cmd_matrix ;;
spin) shift; cmd_spin "$@" ;;
pulse) cmd_pulse ;;
wave) cmd_wave ;;
particles) cmd_particles ;;
loading) shift; cmd_loading "$@" ;;
radar) cmd_radar ;;
boot) cmd_boot ;;
all)
cmd_loading "Demo: All Animations"
cmd_pulse
cmd_wave
;;
help|*)
echo -e "${PINK}animate${RESET} - Terminal Animations"
echo " matrix - Matrix rain effect"
echo " spin [s] - Spinner for [s] seconds"
echo " pulse - Pulsing bar"
echo " wave - Gradient wave"
echo " particles - Particle explosion"
echo " loading - Progress bar"
echo " radar - Radar sweep"
echo " boot - Boot sequence"
;;
esac
}
main "$@"