150 lines
4.2 KiB
Bash
150 lines
4.2 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
# Hermes Agent Setup Script
|
||
|
|
# Automated setup for all dependencies and configuration
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
echo "========================================="
|
||
|
|
echo "Hermes Agent Setup"
|
||
|
|
echo "========================================="
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Change to hermes-agent directory
|
||
|
|
cd /home/teknium/hermes-agent
|
||
|
|
|
||
|
|
# Check Python version
|
||
|
|
echo "[1/10] Checking Python version..."
|
||
|
|
python_version=$(python3 --version | cut -d' ' -f2 | cut -d'.' -f1,2)
|
||
|
|
echo "✓ Python $python_version detected"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Install uv
|
||
|
|
echo "[2/10] Installing uv (fast Python package installer)..."
|
||
|
|
if ! command -v uv &> /dev/null; then
|
||
|
|
echo "Installing uv..."
|
||
|
|
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||
|
|
export PATH="$HOME/.cargo/bin:$PATH"
|
||
|
|
echo "✓ uv installed"
|
||
|
|
else
|
||
|
|
echo "✓ uv already installed: $(uv --version)"
|
||
|
|
fi
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Install Node.js 20 using NodeSource
|
||
|
|
echo "[3/10] Installing Node.js 20..."
|
||
|
|
if ! command -v node &> /dev/null || [[ $(node --version | cut -d'v' -f2 | cut -d'.' -f1) -lt 20 ]]; then
|
||
|
|
echo "Installing Node.js 20 LTS..."
|
||
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
||
|
|
sudo apt-get install -y nodejs
|
||
|
|
echo "✓ Node.js installed"
|
||
|
|
else
|
||
|
|
echo "✓ Node.js 20+ already installed: $(node --version)"
|
||
|
|
fi
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Initialize git submodules
|
||
|
|
echo "[4/10] Initializing git submodules..."
|
||
|
|
git submodule update --init --recursive
|
||
|
|
echo "✓ Submodules initialized"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Create Python virtual environment with uv
|
||
|
|
echo "[5/10] Creating Python virtual environment with uv..."
|
||
|
|
if [ -d "venv" ]; then
|
||
|
|
echo "Virtual environment already exists, skipping..."
|
||
|
|
else
|
||
|
|
uv venv venv
|
||
|
|
echo "✓ Virtual environment created with uv"
|
||
|
|
fi
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Activate virtual environment and install Python packages with uv
|
||
|
|
echo "[6/10] Installing Python dependencies with uv..."
|
||
|
|
source venv/bin/activate
|
||
|
|
uv pip install -r requirements.txt
|
||
|
|
echo "✓ Python packages installed"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Install mini-swe-agent with uv
|
||
|
|
echo "[7/10] Installing mini-swe-agent..."
|
||
|
|
uv pip install -e ./mini-swe-agent
|
||
|
|
echo "✓ mini-swe-agent installed"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Install Node.js dependencies
|
||
|
|
echo "[8/10] Installing Node.js dependencies..."
|
||
|
|
npm install
|
||
|
|
echo "✓ Node.js packages installed"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Set up environment file
|
||
|
|
echo "[9/10] Setting up environment configuration..."
|
||
|
|
if [ -f ".env" ]; then
|
||
|
|
echo ".env file already exists, creating backup..."
|
||
|
|
cp .env .env.backup.$(date +%Y%m%d_%H%M%S)
|
||
|
|
fi
|
||
|
|
cp .env.example .env
|
||
|
|
echo "✓ .env file created from .env.example"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Set up CLI config
|
||
|
|
echo "[10/10] Setting up CLI configuration..."
|
||
|
|
if [ ! -f "cli-config.yaml" ]; then
|
||
|
|
cp cli-config.yaml.example cli-config.yaml
|
||
|
|
echo "✓ cli-config.yaml created from example"
|
||
|
|
else
|
||
|
|
echo "cli-config.yaml already exists, skipping..."
|
||
|
|
fi
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Show Node.js and Python versions
|
||
|
|
echo "========================================="
|
||
|
|
echo "Setup Complete!"
|
||
|
|
echo "========================================="
|
||
|
|
echo ""
|
||
|
|
echo "Installed versions:"
|
||
|
|
echo " Node.js: $(node --version)"
|
||
|
|
echo " npm: $(npm --version)"
|
||
|
|
echo " Python: $(python3 --version)"
|
||
|
|
echo " uv: $(uv --version)"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
echo "========================================="
|
||
|
|
echo "Next Steps:"
|
||
|
|
echo "========================================="
|
||
|
|
echo ""
|
||
|
|
echo "1. Configure API Keys in .env file:"
|
||
|
|
echo " nano .env"
|
||
|
|
echo ""
|
||
|
|
echo " Required API keys:"
|
||
|
|
echo " - OPENROUTER_API_KEY (https://openrouter.ai/keys)"
|
||
|
|
echo " - FIRECRAWL_API_KEY (https://firecrawl.dev/)"
|
||
|
|
echo " - NOUS_API_KEY (https://inference-api.nousresearch.com/)"
|
||
|
|
echo " - FAL_KEY (https://fal.ai/)"
|
||
|
|
echo ""
|
||
|
|
echo " Optional API keys:"
|
||
|
|
echo " - BROWSERBASE_API_KEY (https://browserbase.com/)"
|
||
|
|
echo " - BROWSERBASE_PROJECT_ID"
|
||
|
|
echo ""
|
||
|
|
echo "2. Activate the virtual environment:"
|
||
|
|
echo " source venv/bin/activate"
|
||
|
|
echo ""
|
||
|
|
echo "3. Run the CLI:"
|
||
|
|
echo " ./hermes"
|
||
|
|
echo ""
|
||
|
|
echo "4. Or run a single query:"
|
||
|
|
echo " python run_agent.py --query \"your question here\""
|
||
|
|
echo ""
|
||
|
|
echo "5. List available tools:"
|
||
|
|
echo " python run_agent.py --list_tools"
|
||
|
|
echo ""
|
||
|
|
echo "========================================="
|
||
|
|
echo "Configuration Files:"
|
||
|
|
echo "========================================="
|
||
|
|
echo " .env - API keys and environment variables"
|
||
|
|
echo " cli-config.yaml - CLI settings and preferences"
|
||
|
|
echo ""
|
||
|
|
echo "For more information, see README.md"
|
||
|
|
echo ""
|