2026-01-31 21:42:15 -08:00
|
|
|
#!/bin/bash
|
2026-02-02 19:01:51 -08:00
|
|
|
# ============================================================================
|
2026-01-31 21:42:15 -08:00
|
|
|
# Hermes Agent Setup Script
|
2026-02-02 19:01:51 -08:00
|
|
|
# ============================================================================
|
|
|
|
|
# Quick setup for developers who cloned the repo manually.
|
|
|
|
|
#
|
|
|
|
|
# Usage:
|
|
|
|
|
# ./setup-hermes.sh
|
|
|
|
|
#
|
|
|
|
|
# This script:
|
|
|
|
|
# 1. Creates a virtual environment (if not exists)
|
|
|
|
|
# 2. Installs dependencies
|
|
|
|
|
# 3. Creates .env from template (if not exists)
|
|
|
|
|
# 4. Installs the 'hermes' CLI command
|
|
|
|
|
# 5. Runs the setup wizard (optional)
|
|
|
|
|
# ============================================================================
|
2026-01-31 21:42:15 -08:00
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
# Colors
|
|
|
|
|
GREEN='\033[0;32m'
|
|
|
|
|
YELLOW='\033[0;33m'
|
|
|
|
|
CYAN='\033[0;36m'
|
|
|
|
|
NC='\033[0m'
|
2026-01-31 21:42:15 -08:00
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
cd "$SCRIPT_DIR"
|
2026-01-31 21:42:15 -08:00
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
echo ""
|
|
|
|
|
echo -e "${CYAN}🦋 Hermes Agent Setup${NC}"
|
2026-01-31 21:42:15 -08:00
|
|
|
echo ""
|
|
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
# ============================================================================
|
|
|
|
|
# Python check
|
|
|
|
|
# ============================================================================
|
|
|
|
|
|
|
|
|
|
echo -e "${CYAN}→${NC} Checking Python..."
|
|
|
|
|
|
|
|
|
|
PYTHON_CMD=""
|
|
|
|
|
for cmd in python3.12 python3.11 python3.10 python3 python; do
|
|
|
|
|
if command -v $cmd &> /dev/null; then
|
|
|
|
|
if $cmd -c "import sys; exit(0 if sys.version_info >= (3, 10) else 1)" 2>/dev/null; then
|
|
|
|
|
PYTHON_CMD=$cmd
|
|
|
|
|
break
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if [ -z "$PYTHON_CMD" ]; then
|
|
|
|
|
echo -e "${YELLOW}✗${NC} Python 3.10+ required"
|
|
|
|
|
exit 1
|
2026-01-31 21:42:15 -08:00
|
|
|
fi
|
|
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
PYTHON_VERSION=$($PYTHON_CMD -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
|
|
|
|
|
echo -e "${GREEN}✓${NC} Python $PYTHON_VERSION found"
|
|
|
|
|
|
|
|
|
|
# ============================================================================
|
|
|
|
|
# Virtual environment
|
|
|
|
|
# ============================================================================
|
|
|
|
|
|
|
|
|
|
echo -e "${CYAN}→${NC} Setting up virtual environment..."
|
|
|
|
|
|
|
|
|
|
if [ ! -d "venv" ]; then
|
|
|
|
|
$PYTHON_CMD -m venv venv
|
|
|
|
|
echo -e "${GREEN}✓${NC} Created venv"
|
2026-01-31 21:42:15 -08:00
|
|
|
else
|
2026-02-02 19:01:51 -08:00
|
|
|
echo -e "${GREEN}✓${NC} venv exists"
|
2026-01-31 21:42:15 -08:00
|
|
|
fi
|
|
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
source venv/bin/activate
|
|
|
|
|
pip install --upgrade pip wheel setuptools > /dev/null
|
|
|
|
|
|
|
|
|
|
# ============================================================================
|
|
|
|
|
# Dependencies
|
|
|
|
|
# ============================================================================
|
|
|
|
|
|
|
|
|
|
echo -e "${CYAN}→${NC} Installing dependencies..."
|
|
|
|
|
|
|
|
|
|
pip install -e ".[all]" > /dev/null 2>&1 || pip install -e "." > /dev/null
|
2026-01-31 21:42:15 -08:00
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
echo -e "${GREEN}✓${NC} Dependencies installed"
|
|
|
|
|
|
|
|
|
|
# ============================================================================
|
|
|
|
|
# Environment file
|
|
|
|
|
# ============================================================================
|
|
|
|
|
|
|
|
|
|
if [ ! -f ".env" ]; then
|
|
|
|
|
if [ -f ".env.example" ]; then
|
|
|
|
|
cp .env.example .env
|
|
|
|
|
echo -e "${GREEN}✓${NC} Created .env from template"
|
|
|
|
|
fi
|
2026-01-31 21:42:15 -08:00
|
|
|
else
|
2026-02-02 19:01:51 -08:00
|
|
|
echo -e "${GREEN}✓${NC} .env exists"
|
2026-01-31 21:42:15 -08:00
|
|
|
fi
|
|
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
# ============================================================================
|
|
|
|
|
# PATH setup
|
|
|
|
|
# ============================================================================
|
2026-01-31 21:42:15 -08:00
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
echo -e "${CYAN}→${NC} Setting up hermes command..."
|
2026-01-31 21:42:15 -08:00
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
BIN_DIR="$SCRIPT_DIR/venv/bin"
|
2026-01-31 21:42:15 -08:00
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
# Add to shell config if not already there
|
|
|
|
|
SHELL_CONFIG=""
|
|
|
|
|
if [ -f "$HOME/.zshrc" ]; then
|
|
|
|
|
SHELL_CONFIG="$HOME/.zshrc"
|
|
|
|
|
elif [ -f "$HOME/.bashrc" ]; then
|
|
|
|
|
SHELL_CONFIG="$HOME/.bashrc"
|
|
|
|
|
elif [ -f "$HOME/.bash_profile" ]; then
|
|
|
|
|
SHELL_CONFIG="$HOME/.bash_profile"
|
2026-01-31 21:42:15 -08:00
|
|
|
fi
|
|
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
if [ -n "$SHELL_CONFIG" ]; then
|
|
|
|
|
if ! grep -q "hermes-agent" "$SHELL_CONFIG" 2>/dev/null; then
|
|
|
|
|
echo "" >> "$SHELL_CONFIG"
|
|
|
|
|
echo "# Hermes Agent" >> "$SHELL_CONFIG"
|
|
|
|
|
echo "export PATH=\"$BIN_DIR:\$PATH\"" >> "$SHELL_CONFIG"
|
|
|
|
|
echo -e "${GREEN}✓${NC} Added to $SHELL_CONFIG"
|
|
|
|
|
else
|
|
|
|
|
echo -e "${GREEN}✓${NC} PATH already in $SHELL_CONFIG"
|
|
|
|
|
fi
|
2026-01-31 21:42:15 -08:00
|
|
|
fi
|
|
|
|
|
|
2026-02-02 19:01:51 -08:00
|
|
|
# ============================================================================
|
|
|
|
|
# Done
|
|
|
|
|
# ============================================================================
|
2026-01-31 21:42:15 -08:00
|
|
|
|
|
|
|
|
echo ""
|
2026-02-02 19:01:51 -08:00
|
|
|
echo -e "${GREEN}✓ Setup complete!${NC}"
|
2026-01-31 21:42:15 -08:00
|
|
|
echo ""
|
2026-02-02 19:01:51 -08:00
|
|
|
echo "Next steps:"
|
2026-01-31 21:42:15 -08:00
|
|
|
echo ""
|
2026-02-02 19:01:51 -08:00
|
|
|
echo " 1. Reload your shell:"
|
|
|
|
|
echo " source $SHELL_CONFIG"
|
2026-01-31 21:42:15 -08:00
|
|
|
echo ""
|
2026-02-02 19:01:51 -08:00
|
|
|
echo " 2. Run the setup wizard to configure API keys:"
|
|
|
|
|
echo " hermes setup"
|
2026-01-31 21:42:15 -08:00
|
|
|
echo ""
|
2026-02-02 19:01:51 -08:00
|
|
|
echo " 3. Start chatting:"
|
|
|
|
|
echo " hermes"
|
2026-01-31 21:42:15 -08:00
|
|
|
echo ""
|
2026-02-02 19:01:51 -08:00
|
|
|
echo "Other commands:"
|
|
|
|
|
echo " hermes status # Check configuration"
|
|
|
|
|
echo " hermes gateway # Start messaging gateway"
|
|
|
|
|
echo " hermes cron daemon # Run cron daemon"
|
|
|
|
|
echo " hermes doctor # Diagnose issues"
|
2026-01-31 21:42:15 -08:00
|
|
|
echo ""
|
2026-02-02 19:01:51 -08:00
|
|
|
|
|
|
|
|
# Ask if they want to run setup wizard now
|
|
|
|
|
read -p "Would you like to run the setup wizard now? [Y/n] " -n 1 -r
|
|
|
|
|
echo
|
|
|
|
|
if [[ $REPLY =~ ^[Yy]$ ]] || [[ -z $REPLY ]]; then
|
|
|
|
|
echo ""
|
|
|
|
|
python -m hermes_cli.main setup
|
|
|
|
|
fi
|