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 ""