File size: 6,865 Bytes
5196bf2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | #!/bin/bash
# ============================================================
# Project Friday β Full Setup Script
# Run this once to install all dependencies and download models.
# ============================================================
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
BACKEND_DIR="$PROJECT_DIR/backend"
VENV_DIR="$BACKEND_DIR/venv"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
echo ""
echo -e "${PURPLE}ββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
echo -e "${PURPLE}β PROJECT FRIDAY β Setup Script β${NC}"
echo -e "${PURPLE}β Sovereign Intelligence Suite β${NC}"
echo -e "${PURPLE}ββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
echo ""
# ββ Step 1: Check Prerequisites ββββββββββββββββββββββββββββββ
echo -e "${CYAN}[1/8] Checking prerequisites...${NC}"
# Check macOS
if [[ "$(uname)" != "Darwin" ]]; then
echo -e "${RED}Error: This script is designed for macOS only.${NC}"
exit 1
fi
echo -e " ${GREEN}β${NC} macOS detected"
# Check Xcode CLI tools
if ! xcode-select -p &>/dev/null; then
echo -e " ${YELLOW}Installing Xcode Command Line Tools...${NC}"
xcode-select --install
echo -e " ${YELLOW}Please wait for Xcode CLI tools to finish installing, then re-run this script.${NC}"
exit 1
fi
echo -e " ${GREEN}β${NC} Xcode CLI tools installed"
# Check Python 3
if ! command -v python3 &>/dev/null; then
echo -e "${RED}Error: Python 3 is not installed. Install it via: brew install python${NC}"
exit 1
fi
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}')
echo -e " ${GREEN}β${NC} Python $PYTHON_VERSION"
# ββ Step 2: Install Homebrew Packages ββββββββββββββββββββββββ
echo ""
echo -e "${CYAN}[2/8] Installing system dependencies via Homebrew...${NC}"
if ! command -v brew &>/dev/null; then
echo -e " ${YELLOW}Installing Homebrew...${NC}"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
# Install required packages
for pkg in ffmpeg portaudio; do
if brew list "$pkg" &>/dev/null; then
echo -e " ${GREEN}β${NC} $pkg already installed"
else
echo -e " ${YELLOW}Installing $pkg...${NC}"
brew install "$pkg"
echo -e " ${GREEN}β${NC} $pkg installed"
fi
done
# ββ Step 3: Install Ollama ββββββββββββββββββββββββββββββββββ
echo ""
echo -e "${CYAN}[3/8] Setting up Ollama (local LLM)...${NC}"
if command -v ollama &>/dev/null; then
echo -e " ${GREEN}β${NC} Ollama already installed"
else
echo -e " ${YELLOW}Installing Ollama via Homebrew...${NC}"
brew install ollama
echo -e " ${GREEN}β${NC} Ollama installed"
fi
# Start Ollama service if not running
if ! pgrep -x "ollama" &>/dev/null; then
echo -e " ${YELLOW}Starting Ollama service...${NC}"
ollama serve &>/dev/null &
sleep 3
fi
echo -e " ${GREEN}β${NC} Ollama service running"
# ββ Step 4: Pull LLM Model ββββββββββββββββββββββββββββββββββ
echo ""
echo -e "${CYAN}[4/8] Downloading LLM model (llama3:8b)...${NC}"
echo -e " ${YELLOW}This may take a while on first run (~4.7GB download)...${NC}"
if ollama list 2>/dev/null | grep -q "llama3:8b"; then
echo -e " ${GREEN}β${NC} llama3:8b model already downloaded"
else
ollama pull llama3:8b
echo -e " ${GREEN}β${NC} llama3:8b model downloaded"
fi
# ββ Step 5: Create Python Virtual Environment βββββββββββββββ
echo ""
echo -e "${CYAN}[5/8] Setting up Python virtual environment...${NC}"
if [ -d "$VENV_DIR" ]; then
echo -e " ${GREEN}β${NC} Virtual environment already exists"
else
python3 -m venv "$VENV_DIR"
echo -e " ${GREEN}β${NC} Virtual environment created"
fi
# Activate venv
source "$VENV_DIR/bin/activate"
echo -e " ${GREEN}β${NC} Virtual environment activated"
# Upgrade pip
pip install --upgrade pip --quiet
echo -e " ${GREEN}β${NC} pip upgraded"
# ββ Step 6: Install Python Dependencies βββββββββββββββββββββ
echo ""
echo -e "${CYAN}[6/8] Installing Python dependencies...${NC}"
echo -e " ${YELLOW}This includes PyTorch, Whisper, and other ML packages...${NC}"
pip install -r "$BACKEND_DIR/requirements.txt" --quiet 2>&1 | tail -5
echo -e " ${GREEN}β${NC} Python dependencies installed"
# ββ Step 7: Download Whisper Model ββββββββββββββββββββββββββ
echo ""
echo -e "${CYAN}[7/8] Pre-downloading Whisper STT model (base)...${NC}"
python3 -c "
import whisper
print(' Downloading Whisper base model...')
model = whisper.load_model('base')
print(' β Whisper base model ready')
" 2>&1 | grep -v "FP16\|UserWarning"
# ββ Step 8: Create .env file ββββββββββββββββββββββββββββββββ
echo ""
echo -e "${CYAN}[8/8] Creating configuration...${NC}"
if [ ! -f "$BACKEND_DIR/.env" ]; then
cp "$PROJECT_DIR/.env.example" "$BACKEND_DIR/.env"
echo -e " ${GREEN}β${NC} .env file created from template"
else
echo -e " ${GREEN}β${NC} .env file already exists"
fi
# Create data directories
mkdir -p "$PROJECT_DIR/data" "$PROJECT_DIR/models" "$PROJECT_DIR/data/recordings"
echo -e " ${GREEN}β${NC} Data directories created"
# ββ Done βββββββββββββββββββββββββββββββββββββββββββββββββββββ
echo ""
echo -e "${GREEN}ββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
echo -e "${GREEN}β SETUP COMPLETE! π β${NC}"
echo -e "${GREEN}ββββββββββββββββββββββββββββββββββββββββββββββββββββ${NC}"
echo ""
echo -e " To start Friday:"
echo -e " ${CYAN}cd $PROJECT_DIR && bash scripts/start.sh${NC}"
echo ""
echo -e " Or use the CLI directly:"
echo -e " ${CYAN}cd $BACKEND_DIR && source venv/bin/activate && python cli.py${NC}"
echo ""
echo -e " Dashboard will be at: ${BLUE}http://localhost:7777${NC}"
echo ""
|