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
300 lines
12 KiB
Bash
300 lines
12 KiB
Bash
#!/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.
|
|
# ============================================================================
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
# BLACKROAD AI ROUND TABLE - Launch Command
|
|
# The orchestration layer above all AI providers
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
|
|
set -e
|
|
|
|
# Colors
|
|
PINK='\033[38;5;205m'
|
|
AMBER='\033[38;5;214m'
|
|
BLUE='\033[38;5;69m'
|
|
VIOLET='\033[38;5;135m'
|
|
GREEN='\033[38;5;82m'
|
|
RED='\033[38;5;196m'
|
|
RESET='\033[0m'
|
|
BOLD='\033[1m'
|
|
|
|
# Config
|
|
ROUNDTABLE_DIR="$HOME/.blackroad/roundtable"
|
|
CONTEXT_FILE="$ROUNDTABLE_DIR/context/shared.md"
|
|
SESSION_NAME="roundtable"
|
|
|
|
# Ensure directories exist
|
|
mkdir -p "$ROUNDTABLE_DIR"/{context,messages,agents}
|
|
|
|
# Banner
|
|
show_banner() {
|
|
echo -e "${AMBER}"
|
|
cat << 'EOF'
|
|
╔═══════════════════════════════════════════════════════════════╗
|
|
║ ║
|
|
║ ██████╗ ██████╗ ██╗ ██╗███╗ ██╗██████╗ ║
|
|
║ ██╔══██╗██╔═══██╗██║ ██║████╗ ██║██╔══██╗ ║
|
|
║ ██████╔╝██║ ██║██║ ██║██╔██╗ ██║██║ ██║ ║
|
|
║ ██╔══██╗██║ ██║██║ ██║██║╚██╗██║██║ ██║ ║
|
|
║ ██║ ██║╚██████╔╝╚██████╔╝██║ ╚████║██████╔╝ ║
|
|
║ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═════╝ ║
|
|
║ ║
|
|
║ ████████╗ █████╗ ██████╗ ██╗ ███████╗ ║
|
|
║ ╚══██╔══╝██╔══██╗██╔══██╗██║ ██╔════╝ ║
|
|
║ ██║ ███████║██████╔╝██║ █████╗ ║
|
|
║ ██║ ██╔══██║██╔══██╗██║ ██╔══╝ ║
|
|
║ ██║ ██║ ██║██████╔╝███████╗███████╗ ║
|
|
║ ╚═╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝╚══════╝ ║
|
|
║ ║
|
|
╚═══════════════════════════════════════════════════════════════╝
|
|
EOF
|
|
echo -e "${RESET}"
|
|
echo -e "${PINK}${BOLD} Above Anthropic. Above OpenAI. Above Google. Above Apple.${RESET}"
|
|
echo -e "${VIOLET} You are the conductor. They are the orchestra.${RESET}"
|
|
echo ""
|
|
}
|
|
|
|
# Initialize shared context
|
|
init_context() {
|
|
cat > "$CONTEXT_FILE" << EOF
|
|
# BlackRoad AI Round Table - Shared Context
|
|
> Session started: $(date)
|
|
> Conductor: Alexa (alexandria)
|
|
|
|
## Active AIs
|
|
- [ ] Claude (Anthropic)
|
|
- [ ] Copilot (GitHub/Microsoft)
|
|
- [ ] Codex (OpenAI)
|
|
- [ ] Gemini (Google)
|
|
- [ ] Grok (xAI)
|
|
|
|
## Current Mission
|
|
[Awaiting conductor's orders...]
|
|
|
|
## Shared Knowledge
|
|
- BlackRoad OS: 15 orgs, 1,085 repos, 205 Cloudflare projects
|
|
- Device Fleet: 8 devices, 52 TOPS compute
|
|
- Memory System: 4,041+ entries
|
|
|
|
## Round Table Protocol
|
|
1. Conductor sets mission
|
|
2. Each AI proposes approach
|
|
3. Best ideas synthesized
|
|
4. Parallel execution
|
|
5. Results merged
|
|
|
|
---
|
|
EOF
|
|
echo -e "${GREEN}✓ Shared context initialized${RESET}"
|
|
}
|
|
|
|
# Check which AIs are available
|
|
check_ais() {
|
|
echo -e "${AMBER}Checking AI availability...${RESET}"
|
|
echo ""
|
|
|
|
# Claude
|
|
if command -v claude &> /dev/null; then
|
|
echo -e " ${BLUE}●${RESET} Claude ${GREEN}READY${RESET} ($(claude --version 2>/dev/null | head -1 || echo 'installed'))"
|
|
else
|
|
echo -e " ${BLUE}○${RESET} Claude ${RED}NOT FOUND${RESET}"
|
|
fi
|
|
|
|
# Copilot
|
|
if command -v copilot &> /dev/null; then
|
|
echo -e " ${VIOLET}●${RESET} Copilot ${GREEN}READY${RESET}"
|
|
else
|
|
echo -e " ${VIOLET}○${RESET} Copilot ${RED}NOT FOUND${RESET}"
|
|
fi
|
|
|
|
# Codex
|
|
if command -v codex &> /dev/null; then
|
|
echo -e " ${PINK}●${RESET} Codex ${GREEN}READY${RESET} ($(codex --version 2>/dev/null || echo 'installed'))"
|
|
else
|
|
echo -e " ${PINK}○${RESET} Codex ${RED}NOT FOUND${RESET}"
|
|
fi
|
|
|
|
# Gemini
|
|
if command -v gemini-cli &> /dev/null || [[ -n "$GOOGLE_AI_API_KEY" ]]; then
|
|
echo -e " ${GREEN}●${RESET} Gemini ${GREEN}READY${RESET}"
|
|
else
|
|
echo -e " ${GREEN}○${RESET} Gemini ${AMBER}WRAPPER AVAILABLE${RESET}"
|
|
fi
|
|
|
|
# Grok
|
|
if command -v grok-cli &> /dev/null || [[ -n "$XAI_API_KEY" ]]; then
|
|
echo -e " ${RED}●${RESET} Grok ${GREEN}READY${RESET}"
|
|
else
|
|
echo -e " ${RED}○${RESET} Grok ${AMBER}WRAPPER AVAILABLE${RESET}"
|
|
fi
|
|
|
|
echo ""
|
|
}
|
|
|
|
# Launch Round Table session
|
|
launch_session() {
|
|
echo -e "${AMBER}Launching Round Table session...${RESET}"
|
|
|
|
# Kill existing session if any
|
|
tmux kill-session -t "$SESSION_NAME" 2>/dev/null || true
|
|
|
|
# Create new session with custom config
|
|
tmux -f ~/.tmux-roundtable.conf new-session -d -s "$SESSION_NAME" -n "Conductor"
|
|
|
|
# Set up Conductor window (main control)
|
|
tmux send-keys -t "$SESSION_NAME:1" "echo '🎭 CONDUCTOR TERMINAL - You orchestrate the AIs'" Enter
|
|
tmux send-keys -t "$SESSION_NAME:1" "cat $CONTEXT_FILE" Enter
|
|
|
|
# Create AI windows
|
|
tmux new-window -t "$SESSION_NAME" -n "Claude"
|
|
tmux send-keys -t "$SESSION_NAME:2" "select-pane -T 'Claude (Anthropic)'" Enter
|
|
tmux send-keys -t "$SESSION_NAME:2" "echo 'Type: claude' to start Claude Code" Enter
|
|
|
|
tmux new-window -t "$SESSION_NAME" -n "Copilot"
|
|
tmux send-keys -t "$SESSION_NAME:3" "select-pane -T 'Copilot (GitHub)'" Enter
|
|
tmux send-keys -t "$SESSION_NAME:3" "echo 'Type: copilot' for GitHub Copilot CLI" Enter
|
|
|
|
tmux new-window -t "$SESSION_NAME" -n "Codex"
|
|
tmux send-keys -t "$SESSION_NAME:4" "select-pane -T 'Codex (OpenAI)'" Enter
|
|
tmux send-keys -t "$SESSION_NAME:4" "echo 'Type: codex' for OpenAI Codex CLI" Enter
|
|
|
|
tmux new-window -t "$SESSION_NAME" -n "Gemini"
|
|
tmux send-keys -t "$SESSION_NAME:5" "select-pane -T 'Gemini (Google)'" Enter
|
|
tmux send-keys -t "$SESSION_NAME:5" "echo 'Type: gemini-cli for Google AI'" Enter
|
|
|
|
tmux new-window -t "$SESSION_NAME" -n "Grok"
|
|
tmux send-keys -t "$SESSION_NAME:6" "select-pane -T 'Grok (xAI)'" Enter
|
|
tmux send-keys -t "$SESSION_NAME:6" "echo 'Type: grok-cli for xAI'" Enter
|
|
|
|
# Create devices window
|
|
tmux new-window -t "$SESSION_NAME" -n "Devices"
|
|
tmux send-keys -t "$SESSION_NAME:7" "echo '🖥️ BlackRoad Device Fleet'" Enter
|
|
|
|
# Go back to Conductor
|
|
tmux select-window -t "$SESSION_NAME:1"
|
|
|
|
echo -e "${GREEN}✓ Round Table ready${RESET}"
|
|
echo ""
|
|
echo -e "${AMBER}Attaching to session...${RESET}"
|
|
echo -e "${VIOLET}Keybindings:${RESET}"
|
|
echo " Alt+1-7 : Switch between windows"
|
|
echo " Ctrl+Space b : Broadcast to all panes"
|
|
echo " Ctrl+Space | : Split vertical"
|
|
echo " Ctrl+Space - : Split horizontal"
|
|
echo ""
|
|
|
|
# Attach to session
|
|
tmux attach-session -t "$SESSION_NAME"
|
|
}
|
|
|
|
# Quick mode - launch specific AI
|
|
quick_launch() {
|
|
local ai="$1"
|
|
case "$ai" in
|
|
claude)
|
|
tmux -f ~/.tmux-roundtable.conf new-session -s "claude-session" "claude"
|
|
;;
|
|
copilot)
|
|
tmux -f ~/.tmux-roundtable.conf new-session -s "copilot-session" "copilot"
|
|
;;
|
|
codex)
|
|
tmux -f ~/.tmux-roundtable.conf new-session -s "codex-session" "codex"
|
|
;;
|
|
gemini)
|
|
tmux -f ~/.tmux-roundtable.conf new-session -s "gemini-session" "gemini-cli"
|
|
;;
|
|
grok)
|
|
tmux -f ~/.tmux-roundtable.conf new-session -s "grok-session" "grok-cli"
|
|
;;
|
|
*)
|
|
echo "Unknown AI: $ai"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Grid mode - all AIs in one window, 2x3 grid
|
|
grid_mode() {
|
|
echo -e "${AMBER}Launching Grid Mode - All AIs in view...${RESET}"
|
|
|
|
tmux kill-session -t "roundtable-grid" 2>/dev/null || true
|
|
|
|
tmux -f ~/.tmux-roundtable.conf new-session -d -s "roundtable-grid" -n "Grid"
|
|
|
|
# Create 2x3 grid
|
|
tmux split-window -h -t "roundtable-grid"
|
|
tmux split-window -h -t "roundtable-grid"
|
|
tmux select-layout -t "roundtable-grid" even-horizontal
|
|
|
|
tmux split-window -v -t "roundtable-grid:1.1"
|
|
tmux split-window -v -t "roundtable-grid:1.2"
|
|
tmux split-window -v -t "roundtable-grid:1.3"
|
|
|
|
# Label each pane
|
|
tmux send-keys -t "roundtable-grid:1.1" "select-pane -T 'CONDUCTOR'; clear; echo '🎭 CONDUCTOR'" Enter
|
|
tmux send-keys -t "roundtable-grid:1.2" "select-pane -T 'Claude'; clear; echo '💙 Claude'" Enter
|
|
tmux send-keys -t "roundtable-grid:1.3" "select-pane -T 'Copilot'; clear; echo '💜 Copilot'" Enter
|
|
tmux send-keys -t "roundtable-grid:1.4" "select-pane -T 'Codex'; clear; echo '💗 Codex'" Enter
|
|
tmux send-keys -t "roundtable-grid:1.5" "select-pane -T 'Gemini'; clear; echo '💚 Gemini'" Enter
|
|
tmux send-keys -t "roundtable-grid:1.6" "select-pane -T 'Grok'; clear; echo '❤️ Grok'" Enter
|
|
|
|
tmux attach-session -t "roundtable-grid"
|
|
}
|
|
|
|
# Help
|
|
show_help() {
|
|
show_banner
|
|
echo -e "${AMBER}Usage:${RESET} roundtable [command]"
|
|
echo ""
|
|
echo -e "${VIOLET}Commands:${RESET}"
|
|
echo " (none) Launch full Round Table session"
|
|
echo " grid Launch all AIs in 2x3 grid view"
|
|
echo " check Check AI availability"
|
|
echo " context Show shared context"
|
|
echo " claude Quick launch Claude only"
|
|
echo " copilot Quick launch Copilot only"
|
|
echo " codex Quick launch Codex only"
|
|
echo " gemini Quick launch Gemini only"
|
|
echo " grok Quick launch Grok only"
|
|
echo " help Show this help"
|
|
echo ""
|
|
echo -e "${PINK}The BlackRoad AI Round Table${RESET}"
|
|
echo "You sit at the head. The AIs sit around you."
|
|
echo "One mission. Many minds. Infinite power."
|
|
}
|
|
|
|
# Main
|
|
case "${1:-}" in
|
|
help|--help|-h)
|
|
show_help
|
|
;;
|
|
check)
|
|
show_banner
|
|
check_ais
|
|
;;
|
|
context)
|
|
cat "$CONTEXT_FILE" 2>/dev/null || echo "No context yet. Run: roundtable"
|
|
;;
|
|
grid)
|
|
show_banner
|
|
check_ais
|
|
grid_mode
|
|
;;
|
|
claude|copilot|codex|gemini|grok)
|
|
quick_launch "$1"
|
|
;;
|
|
*)
|
|
show_banner
|
|
check_ais
|
|
init_context
|
|
launch_session
|
|
;;
|
|
esac
|