.PHONY: help install dev test lint format run run-ui docker-build docker-up docker-down clean # Default target help: @echo "Cascade - Intelligent LLM Router" @echo "" @echo "Usage: make [target]" @echo "" @echo "Development:" @echo " install Install dependencies with Poetry" @echo " dev Install with dev dependencies" @echo " test Run tests with pytest" @echo " lint Run linting (ruff + black check)" @echo " format Format code with black" @echo "" @echo "Running:" @echo " run Start the API server" @echo " run-ui Start the Streamlit UI" @echo "" @echo "Docker:" @echo " docker-build Build Docker image" @echo " docker-up Start all services with docker-compose" @echo " docker-down Stop all services" @echo "" @echo "Deployment:" @echo " deploy-railway Deploy to Railway" @echo " deploy-fly Deploy to Fly.io" @echo "" @echo "Other:" @echo " clean Clean up build artifacts" # Development install: poetry install --no-dev dev: poetry install test: PYTHONPATH=src poetry run pytest tests/ -v --cov=src/cascade lint: poetry run ruff check src/ poetry run black --check src/ format: poetry run black src/ poetry run ruff check --fix src/ # Running locally run: PYTHONPATH=src poetry run uvicorn cascade.api.main:app --reload --host 0.0.0.0 --port 8000 run-ui: PYTHONPATH=src poetry run streamlit run src/cascade/ui/app.py --server.port 8501 # Docker docker-build: docker build -t cascade:latest . docker-up: docker-compose up -d docker-down: docker-compose down docker-logs: docker-compose logs -f # Deployment deploy-railway: @echo "Deploying to Railway..." @echo "1. Install Railway CLI: npm install -g @railway/cli" @echo "2. Login: railway login" @echo "3. Initialize: railway init" @echo "4. Deploy: railway up" railway up deploy-fly: @echo "Deploying to Fly.io..." @echo "1. Install Fly CLI: curl -L https://fly.io/install.sh | sh" @echo "2. Login: fly auth login" @echo "3. Launch: fly launch" @echo "4. Deploy: fly deploy" fly deploy # ML Training train: PYTHONPATH=src poetry run python -m ml.training.train --dataset easy2hard --epochs 5 export-onnx: PYTHONPATH=src poetry run python -m ml.export.convert_to_onnx # Cleanup clean: rm -rf .pytest_cache rm -rf __pycache__ rm -rf src/**/__pycache__ rm -rf .coverage rm -rf htmlcov rm -rf dist rm -rf *.egg-info find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true find . -type f -name "*.pyc" -delete 2>/dev/null || true