File size: 2,550 Bytes
cd4eb30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
.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