- Updated `.env.example` to include `BROWSER_INACTIVITY_TIMEOUT` for auto-cleanup of inactive sessions. - Enhanced `cli.py` to load the new inactivity timeout configuration into environment variables. - Added background thread functionality in `browser_tool.py` to periodically clean up inactive browser sessions based on the configured timeout. - Improved session management by tracking last activity timestamps and ensuring cleanup occurs when sessions exceed inactivity limits.
150 lines
4.2 KiB
Bash
Executable File
150 lines
4.2 KiB
Bash
Executable File
#!/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 ""
|