|
|
.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 |
|
|
|