2025-10-24 18:37:19 -05:00
|
|
|
#!/bin/bash
|
|
|
|
|
set -e
|
|
|
|
|
|
2025-10-31 16:54:28 -05:00
|
|
|
echo "🚀 Claude OS Setup - NATIVE (SQLite + Ollama)"
|
2025-10-24 18:37:19 -05:00
|
|
|
echo "=================================================="
|
|
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
# Step 1: Check if we're on macOS
|
|
|
|
|
if [[ "$OSTYPE" != "darwin"* ]]; then
|
|
|
|
|
echo "❌ This script is for macOS only"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2025-10-27 17:41:44 -05:00
|
|
|
echo "Step 1: Checking Ollama installation..."
|
|
|
|
|
if ! command -v ollama &> /dev/null; then
|
|
|
|
|
echo " ❌ Ollama not found. Please install it first:"
|
2025-10-24 18:41:37 -05:00
|
|
|
echo ""
|
|
|
|
|
echo " Option A: Via Homebrew (recommended)"
|
2025-10-27 17:41:44 -05:00
|
|
|
echo " brew install ollama"
|
|
|
|
|
echo " brew services start ollama"
|
2025-10-24 18:41:37 -05:00
|
|
|
echo ""
|
2025-10-27 17:41:44 -05:00
|
|
|
echo " Option B: Download from https://ollama.ai"
|
2025-10-24 18:41:37 -05:00
|
|
|
echo ""
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2025-10-27 17:41:44 -05:00
|
|
|
OLLAMA_VERSION=$(ollama --version 2>/dev/null | cut -d' ' -f2)
|
|
|
|
|
echo " ✅ Ollama found"
|
2025-10-24 18:41:37 -05:00
|
|
|
|
2025-10-27 17:41:44 -05:00
|
|
|
# Check if Ollama is running
|
|
|
|
|
echo " Checking if Ollama is running..."
|
|
|
|
|
if ! curl -s http://localhost:11434/api/tags &> /dev/null; then
|
|
|
|
|
echo " ⚠️ Ollama is not running. Starting..."
|
|
|
|
|
brew services start ollama 2>/dev/null || true
|
|
|
|
|
sleep 3
|
2025-10-24 18:41:37 -05:00
|
|
|
fi
|
|
|
|
|
|
2025-10-27 17:41:44 -05:00
|
|
|
if curl -s http://localhost:11434/api/tags &> /dev/null; then
|
|
|
|
|
echo " ✅ Ollama is running on port 11434"
|
2025-10-24 18:41:37 -05:00
|
|
|
else
|
2025-10-27 17:41:44 -05:00
|
|
|
echo " ⚠️ Could not verify Ollama is running"
|
2025-10-24 18:41:37 -05:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo ""
|
2025-10-27 17:41:44 -05:00
|
|
|
echo "Step 2: Pulling required models..."
|
|
|
|
|
echo " This may take a few minutes (first time only)..."
|
2025-10-24 18:37:19 -05:00
|
|
|
|
2025-10-27 17:41:44 -05:00
|
|
|
# Pull llama3.1 model
|
|
|
|
|
if ! ollama list | grep -q "llama3.1"; then
|
|
|
|
|
echo " 📥 Pulling llama3.1:latest (8B model)..."
|
|
|
|
|
ollama pull llama3.1:latest
|
2025-10-24 18:37:19 -05:00
|
|
|
else
|
2025-10-27 17:41:44 -05:00
|
|
|
echo " ✅ llama3.1:latest already available"
|
2025-10-24 18:37:19 -05:00
|
|
|
fi
|
|
|
|
|
|
2025-10-27 17:41:44 -05:00
|
|
|
# Pull embedding model
|
|
|
|
|
if ! ollama list | grep -q "nomic-embed-text"; then
|
|
|
|
|
echo " 📥 Pulling nomic-embed-text (embeddings)..."
|
|
|
|
|
ollama pull nomic-embed-text:latest
|
2025-10-24 18:37:19 -05:00
|
|
|
else
|
2025-10-27 17:41:44 -05:00
|
|
|
echo " ✅ nomic-embed-text already available"
|
2025-10-24 18:37:19 -05:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo " ✅ Models ready"
|
|
|
|
|
|
|
|
|
|
echo ""
|
2025-10-27 17:41:44 -05:00
|
|
|
echo "Step 3: Setting up Python environment..."
|
2025-10-24 18:37:19 -05:00
|
|
|
|
|
|
|
|
# Check Python version
|
|
|
|
|
if ! command -v python3 &> /dev/null; then
|
|
|
|
|
echo " ❌ Python 3 not found. Please install Python 3.11+ first"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
PYTHON_VERSION=$(python3 --version | cut -d' ' -f2)
|
|
|
|
|
echo " ✅ Python $PYTHON_VERSION found"
|
|
|
|
|
|
|
|
|
|
# Create virtual environment if needed
|
|
|
|
|
if [ ! -d "venv" ]; then
|
|
|
|
|
echo " Creating virtual environment..."
|
|
|
|
|
python3 -m venv venv
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Activate venv
|
|
|
|
|
source venv/bin/activate
|
|
|
|
|
|
|
|
|
|
echo " Installing Python dependencies..."
|
2025-10-27 17:41:44 -05:00
|
|
|
pip install -q --upgrade pip setuptools wheel
|
2025-10-24 18:37:19 -05:00
|
|
|
pip install -q -r requirements.txt
|
|
|
|
|
|
|
|
|
|
echo " ✅ Python environment ready"
|
|
|
|
|
|
|
|
|
|
echo ""
|
2025-10-27 17:41:44 -05:00
|
|
|
echo "Step 4: Creating data directory..."
|
2025-10-24 18:37:19 -05:00
|
|
|
|
2025-10-27 17:41:44 -05:00
|
|
|
# Create data directory for SQLite database
|
|
|
|
|
if [ ! -d "data" ]; then
|
|
|
|
|
mkdir -p data
|
|
|
|
|
echo " ✅ Created data/ directory"
|
|
|
|
|
else
|
|
|
|
|
echo " ✅ data/ directory already exists"
|
|
|
|
|
fi
|
2025-10-24 18:37:19 -05:00
|
|
|
|
2025-10-27 17:41:44 -05:00
|
|
|
# Create logs directory
|
|
|
|
|
if [ ! -d "logs" ]; then
|
|
|
|
|
mkdir -p logs
|
|
|
|
|
echo " ✅ Created logs/ directory"
|
|
|
|
|
else
|
|
|
|
|
echo " ✅ logs/ directory already exists"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
echo "Step 5: Initializing SQLite database..."
|
|
|
|
|
|
|
|
|
|
# The database will be created automatically on first run
|
|
|
|
|
# But we can verify the schema will be set up
|
|
|
|
|
if [ -f "app/db/schema.sqlite" ]; then
|
|
|
|
|
echo " ✅ SQLite schema file found"
|
|
|
|
|
echo " 💾 Database will be created at: data/claude-os.db"
|
|
|
|
|
else
|
|
|
|
|
echo " ⚠️ Schema file not found, but database will auto-initialize"
|
|
|
|
|
fi
|
2025-10-24 18:37:19 -05:00
|
|
|
|
2025-10-27 17:41:44 -05:00
|
|
|
echo ""
|
|
|
|
|
echo "Step 6: Setting up Node.js frontend..."
|
|
|
|
|
|
|
|
|
|
# Check if Node is installed
|
|
|
|
|
if ! command -v node &> /dev/null; then
|
|
|
|
|
echo " ⚠️ Node.js not found. Install from https://nodejs.org"
|
|
|
|
|
echo " Frontend setup skipped (you can set it up later)"
|
|
|
|
|
else
|
|
|
|
|
NODE_VERSION=$(node --version)
|
|
|
|
|
echo " ✅ Node.js $NODE_VERSION found"
|
|
|
|
|
|
|
|
|
|
if [ -d "frontend" ]; then
|
|
|
|
|
echo " Installing frontend dependencies..."
|
|
|
|
|
cd frontend
|
|
|
|
|
npm install > /dev/null 2>&1 || true
|
|
|
|
|
cd ..
|
|
|
|
|
echo " ✅ Frontend dependencies ready"
|
|
|
|
|
fi
|
|
|
|
|
fi
|
2025-10-24 18:37:19 -05:00
|
|
|
|
|
|
|
|
echo ""
|
|
|
|
|
echo "=================================================="
|
2025-10-27 17:41:44 -05:00
|
|
|
echo "✅ Claude OS Setup Complete!"
|
2025-10-24 18:37:19 -05:00
|
|
|
echo "=================================================="
|
|
|
|
|
echo ""
|
2025-10-27 17:41:44 -05:00
|
|
|
echo "🎯 Next Steps:"
|
|
|
|
|
echo ""
|
|
|
|
|
echo "1. Start Claude OS:"
|
|
|
|
|
echo " ./start_all_services.sh"
|
|
|
|
|
echo ""
|
|
|
|
|
echo "2. Access the UI:"
|
|
|
|
|
echo " Frontend: http://localhost:5173"
|
|
|
|
|
echo " API: http://localhost:8051"
|
2025-10-24 18:37:19 -05:00
|
|
|
echo ""
|
2025-10-27 17:41:44 -05:00
|
|
|
echo "3. Manage services:"
|
|
|
|
|
echo " Restart: ./restart_services.sh"
|
|
|
|
|
echo " Stop: ./stop_all_services.sh"
|
2025-10-24 18:37:19 -05:00
|
|
|
echo ""
|
2025-10-27 17:41:44 -05:00
|
|
|
echo "📚 Database:"
|
|
|
|
|
echo " Type: SQLite (single file)"
|
|
|
|
|
echo " Location: data/claude-os.db"
|
|
|
|
|
echo " Backup: cp data/claude-os.db data/claude-os.db.backup"
|
2025-10-24 18:37:19 -05:00
|
|
|
echo ""
|
2025-10-27 17:41:44 -05:00
|
|
|
echo "🚀 You're all set! Let's build something amazing!"
|
2025-10-24 18:37:19 -05:00
|
|
|
echo ""
|