#!/usr/bin/env bash # ───────────────────────────────────────────────────────────────────────────── # GENESIS Auto-Installer # Tested on: Ubuntu 22.04 LTS # Usage: bash install.sh # ───────────────────────────────────────────────────────────────────────────── set -e RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' BOLD='\033[1m' NC='\033[0m' INSTALL_DIR="/opt/hermes-agent" VENV="$INSTALL_DIR/.venv-hermes" PYTHON="$VENV/bin/python3" PIP="$VENV/bin/pip" echo "" echo -e "${CYAN}${BOLD}" echo " ██████ ███████ ███ ██ ███████ ███████ ██ ███████ " echo " ██ ██ ████ ██ ██ ██ ██ ██ " echo " ██ ███ █████ ██ ██ ██ █████ ███████ ██ ███████ " echo " ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ " echo " ██████ ███████ ██ ████ ███████ ███████ ██ ███████ " echo "" echo -e "${NC}${BOLD} Autonomous Forex Trading System — Auto Installer${NC}" echo -e " Powered by ${CYAN}API2TRADE${NC} (https://app.api2trade.com)" echo "" echo "─────────────────────────────────────────────────────" # ── Step 1: System packages ─────────────────────────────────────────────────── echo -e "\n${YELLOW}[1/8] Installing system packages...${NC}" sudo apt-get update -qq sudo apt-get install -y -qq python3.11 python3.11-venv python3-pip git curl wget unzip # ── Step 2: Create install directory ───────────────────────────────────────── echo -e "\n${YELLOW}[2/8] Creating install directory at $INSTALL_DIR...${NC}" sudo mkdir -p "$INSTALL_DIR" sudo chown "$USER":"$USER" "$INSTALL_DIR" # Copy all repo files into install dir SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cp -r "$SCRIPT_DIR"/. "$INSTALL_DIR/" echo -e " ${GREEN}✓${NC} Files copied to $INSTALL_DIR" # ── Step 3: Python virtual environment ─────────────────────────────────────── echo -e "\n${YELLOW}[3/8] Creating Python virtual environment...${NC}" python3.11 -m venv "$VENV" "$PIP" install --upgrade pip -q "$PIP" install -r "$INSTALL_DIR/requirements.txt" -q echo -e " ${GREEN}✓${NC} Virtual environment ready at $VENV" # ── Step 4: Log directories ─────────────────────────────────────────────────── echo -e "\n${YELLOW}[4/8] Creating log directories...${NC}" for strat in hermes ares apollo athena artemis zeus hephaestus; do sudo mkdir -p "/var/log/$strat" sudo chown "$USER":"$USER" "/var/log/$strat" echo -e " ${GREEN}✓${NC} /var/log/$strat" done # ── Step 5: Environment file ────────────────────────────────────────────────── echo -e "\n${YELLOW}[5/8] Setting up environment variables...${NC}" ENV_FILE="$INSTALL_DIR/.env" if [ -f "$ENV_FILE" ]; then echo -e " ${CYAN}ℹ${NC} .env already exists — skipping (edit manually if needed)" else cp "$INSTALL_DIR/.env.example" "$ENV_FILE" echo "" echo -e " ${BOLD}You need to fill in your credentials.${NC}" echo -e " Get your API2TRADE UUID + API Key at: ${CYAN}https://app.api2trade.com${NC}" echo "" read -p " API2TRADE Account UUID: " uuid read -p " API2TRADE API Key: " apikey read -p " Telegram Bot Token: " tgtoken read -p " Telegram Chat ID: " tgchat read -p " OpenRouter API Key: " openkey sed -i "s/YOUR_API2TRADE_ACCOUNT_UUID/$uuid/g" "$ENV_FILE" sed -i "s/YOUR_API2TRADE_API_KEY/$apikey/g" "$ENV_FILE" sed -i "s/YOUR_TELEGRAM_BOT_TOKEN/$tgtoken/g" "$ENV_FILE" sed -i "s/YOUR_TELEGRAM_CHAT_ID/$tgchat/g" "$ENV_FILE" sed -i "s/YOUR_OPENAI_OR_OPENROUTER_KEY/$openkey/g" "$ENV_FILE" chmod 600 "$ENV_FILE" echo -e " ${GREEN}✓${NC} .env created and secured (chmod 600)" fi # ── Step 6: Config files — inject env values ────────────────────────────────── echo -e "\n${YELLOW}[6/8] Linking config files...${NC}" ln -sf "$INSTALL_DIR/configs" "$INSTALL_DIR/configs_active" 2>/dev/null || true echo -e " ${GREEN}✓${NC} Configs ready at $INSTALL_DIR/configs/" echo -e " ${CYAN}ℹ${NC} Edit configs/_config.yaml to tune each strategy" # ── Step 7: CLI shortcuts ───────────────────────────────────────────────────── echo -e "\n${YELLOW}[7/8] Installing CLI shortcuts...${NC}" install_shortcut() { local name=$1 local tool=$2 cat > "/usr/local/bin/$name" << EOF #!/usr/bin/env bash $PYTHON $INSTALL_DIR/$tool "\$@" EOF sudo chmod +x "/usr/local/bin/$name" } sudo bash -c "cat > /usr/local/bin/ares << 'EOF' #!/usr/bin/env bash $PYTHON $INSTALL_DIR/strategies/ares/ares_tool.py \"\$@\" EOF" sudo bash -c "cat > /usr/local/bin/apollo << 'EOF' #!/usr/bin/env bash $PYTHON $INSTALL_DIR/strategies/apollo/apollo_tool.py \"\$@\" EOF" sudo bash -c "cat > /usr/local/bin/athena << 'EOF' #!/usr/bin/env bash $PYTHON $INSTALL_DIR/strategies/athena/athena_tool.py \"\$@\" EOF" sudo bash -c "cat > /usr/local/bin/artemis << 'EOF' #!/usr/bin/env bash $PYTHON $INSTALL_DIR/strategies/artemis/artemis_tool.py \"\$@\" EOF" sudo bash -c "cat > /usr/local/bin/zeus << 'EOF' #!/usr/bin/env bash $PYTHON $INSTALL_DIR/strategies/zeus/zeus_tool.py \"\$@\" EOF" sudo bash -c "cat > /usr/local/bin/hephaestus << 'EOF' #!/usr/bin/env bash $PYTHON $INSTALL_DIR/strategies/hephaestus/hephaestus_tool.py \"\$@\" EOF" sudo bash -c "cat > /usr/local/bin/genesis-scan << 'EOF' #!/usr/bin/env bash SYMBOL=\${1:-EURUSDxx} echo \"\" echo \"=== GENESIS FULL SCAN: \$SYMBOL ===\" echo \"\" for bot in ares apollo athena artemis zeus; do echo \"--- \$bot ---\" \$bot analyze \$SYMBOL 2>/dev/null | python3 -c \"import sys,json; d=json.load(sys.stdin); print(f' Action: {d.get(\\\"action\\\",\\\"?\\\")}' + (f' | {d.get(\\\"direction\\\",\\\"?\\\")} | R:R {d.get(\\\"rr_ratio\\\",\\\"?\\\")}' if d.get(\\\"action\\\")==\\\"trade\\\" else f' — {str(d.get(\\\"reason\\\",\\\"\\\"))[:80]}'))\" 2>/dev/null || echo \" (scan error)\" done echo \"\" EOF" sudo chmod +x /usr/local/bin/ares /usr/local/bin/apollo /usr/local/bin/athena \ /usr/local/bin/artemis /usr/local/bin/zeus /usr/local/bin/hephaestus \ /usr/local/bin/genesis-scan echo -e " ${GREEN}✓${NC} CLI shortcuts: ares, apollo, athena, artemis, zeus, hephaestus, genesis-scan" # ── Step 8: Cron jobs ───────────────────────────────────────────────────────── echo -e "\n${YELLOW}[8/8] Installing cron jobs...${NC}" CRON_TMP=$(mktemp) crontab -l 2>/dev/null > "$CRON_TMP" || true # Only add if not already present add_cron() { local entry=$1 grep -qF "$entry" "$CRON_TMP" || echo "$entry" >> "$CRON_TMP" } add_cron "*/5 * * * * cd $INSTALL_DIR && $PYTHON $INSTALL_DIR/core/genesis_autonomous.py >> /var/log/hermes/autonomous.log 2>&1" add_cron "0 * * * * cd $INSTALL_DIR && $PYTHON $INSTALL_DIR/core/trading_cycle.py >> /var/log/hermes/trading_cycle.log 2>&1" add_cron "30 * * * * cd $INSTALL_DIR && $PYTHON $INSTALL_DIR/core/genesis_brain_feed.py >> /var/log/hermes/autonomous.log 2>&1" add_cron "0 7 * * 1-5 cd $INSTALL_DIR && $PYTHON $INSTALL_DIR/core/genesis_market_open.py >> /var/log/hermes/autonomous.log 2>&1" add_cron "0 6 * * * cd $INSTALL_DIR && $PYTHON $INSTALL_DIR/core/genesis_daily_report.py >> /var/log/hermes/autonomous.log 2>&1" add_cron "*/10 * * * * cd $INSTALL_DIR && $PYTHON $INSTALL_DIR/core/heartbeat.py >> /var/log/hermes/autonomous.log 2>&1" crontab "$CRON_TMP" rm "$CRON_TMP" echo -e " ${GREEN}✓${NC} Cron jobs installed" # ── Done ────────────────────────────────────────────────────────────────────── echo "" echo "─────────────────────────────────────────────────────" echo -e "${GREEN}${BOLD} ✓ GENESIS installed successfully!${NC}" echo "─────────────────────────────────────────────────────" echo "" echo -e " ${BOLD}Quick test:${NC}" echo -e " ares analyze EURUSDxx" echo -e " zeus analyze GBPUSDxx" echo -e " genesis-scan EURUSDxx" echo "" echo -e " ${BOLD}Logs:${NC}" echo -e " tail -f /var/log/hermes/autonomous.log" echo -e " tail -f /var/log/hermes/trading_cycle.log" echo "" echo -e " ${BOLD}Docs:${NC}" echo -e " ${CYAN}https://app.api2trade.com${NC}" echo "" echo -e " ${YELLOW}⚠ Hephaestus (Grid/Martingale) is DISABLED by default.${NC}" echo -e " Read configs/hephaestus_config.yaml risk warning before enabling." echo ""