#!/bin/bash # EvoTraders Development Startup Script # Split-service mode only set -e echo "==========================================" echo "EvoTraders Development Environment" echo "==========================================" # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Check virtual environment if [ -z "$VIRTUAL_ENV" ]; then echo -e "${YELLOW}Warning: Virtual environment not activated${NC}" echo "Activating .venv..." source .venv/bin/activate fi # Load environment variables if [ -f .env ]; then echo -e "${GREEN}Loading environment from .env${NC}" export $(grep -v '^#' .env | xargs) else echo -e "${YELLOW}Warning: .env file not found${NC}" fi # Check required environment variables if [ -z "$OPENAI_API_KEY" ]; then echo -e "${RED}Error: OPENAI_API_KEY not set${NC}" echo "Please set it in .env file or environment" exit 1 fi cd /Users/cillin/workspeace/evotraders PIDS=() start_service() { local name="$1" local app_path="$2" local port="$3" echo -e "${GREEN}Starting ${name}${NC} on port ${port}..." SERVICE_NAME="${name}" python -m uvicorn "${app_path}" \ --host 0.0.0.0 \ --port "${port}" \ --reload \ --reload-dir backend \ --log-level info & PIDS+=($!) } cleanup() { if [ "${#PIDS[@]}" -gt 0 ]; then echo "" echo -e "${YELLOW}Stopping development services...${NC}" kill "${PIDS[@]}" 2>/dev/null || true wait "${PIDS[@]}" 2>/dev/null || true fi } trap cleanup EXIT INT TERM if [ $# -gt 0 ]; then echo -e "${YELLOW}Ignoring legacy mode argument(s): $*${NC}" echo "Split-service mode is now the only supported development mode." fi export TRADING_SERVICE_URL="${TRADING_SERVICE_URL:-http://localhost:8001}" export NEWS_SERVICE_URL="${NEWS_SERVICE_URL:-http://localhost:8002}" export RUNTIME_SERVICE_URL="${RUNTIME_SERVICE_URL:-http://localhost:8003}" echo "" echo -e "${GREEN}Starting EvoTraders split services (default mode)...${NC}" echo " agent_service: http://localhost:8000" echo " runtime_service: http://localhost:8003" echo " trading_service: http://localhost:8001" echo " news_service: http://localhost:8002" echo "" echo "Exported backend preference URLs:" echo " TRADING_SERVICE_URL=${TRADING_SERVICE_URL}" echo " NEWS_SERVICE_URL=${NEWS_SERVICE_URL}" echo " RUNTIME_SERVICE_URL=${RUNTIME_SERVICE_URL}" echo "" start_service "agent_service" "backend.apps.agent_service:app" 8000 start_service "runtime_service" "backend.apps.runtime_service:app" 8003 start_service "trading_service" "backend.apps.trading_service:app" 8001 start_service "news_service" "backend.apps.news_service:app" 8002 echo -e "${GREEN}Split services are running.${NC}" echo "Use Ctrl+C to stop all services." wait