-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
125 lines (107 loc) · 4.7 KB
/
Makefile
File metadata and controls
125 lines (107 loc) · 4.7 KB
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# Numbers Protocol Reference Agents — Makefile
# ------------------------------------------------
# Targets for local dev, Docker deployment, and VPS deployment.
VENV := venv
PYTHON := $(VENV)/bin/python
PIP := $(VENV)/bin/pip
COMPOSE := docker compose
.PHONY: help setup install test lint run-all docker-build docker-up docker-down \
docker-logs status deploy-vps
help:
@echo ""
@echo "Numbers Protocol Reference Agents"
@echo ""
@echo " make setup Create .env from .env.example"
@echo " make install Create venv and install dependencies"
@echo " make test Smoke-test all agents (dry-run, no registration)"
@echo " make lint Run ruff linter"
@echo ""
@echo " make run-all Run all 7 agents in background (local)"
@echo " make status Show agent status via monitor.py"
@echo ""
@echo " make docker-build Build the Docker image"
@echo " make docker-up Start all agents via docker-compose"
@echo " make docker-down Stop all agents"
@echo " make docker-logs Tail logs from all agents"
@echo ""
@echo " make deploy-vps Deploy to VPS via systemd (run on VPS)"
@echo ""
setup:
@if [ ! -f .env ]; then \
cp .env.example .env; \
echo "Created .env from .env.example — edit it and set CAPTURE_TOKEN"; \
else \
echo ".env already exists"; \
fi
install: setup
python3 -m venv $(VENV)
$(PIP) install --upgrade pip
$(PIP) install -r requirements.txt
@echo "Install complete. Activate with: source $(VENV)/bin/activate"
test: install
@echo "--- Smoke testing all agents (import + env check, no SDK calls) ---"
@$(PYTHON) -c "import common; print(' common.py OK')"
@$(PYTHON) -c "import provart; print(' provart.py OK')"
@$(PYTHON) -c "import newsprove; print(' newsprove.py OK')"
@$(PYTHON) -c "import agentlog; print(' agentlog.py OK')"
@$(PYTHON) -c "import dataprove; print(' dataprove.py OK')"
@$(PYTHON) -c "import socialprove; print(' socialprove.py OK')"
@$(PYTHON) -c "import researchprove; print(' researchprove.py OK')"
@$(PYTHON) -c "import codeprove; print(' codeprove.py OK')"
@echo "--- All imports OK ---"
lint: install
$(PIP) install --quiet ruff
$(VENV)/bin/ruff check *.py
run-all: install
@mkdir -p state logs
@echo "Starting all 7 agents in background..."
@nohup $(PYTHON) -u provart.py >> logs/provart.log 2>&1 & echo $$! > state/provart.pid
@nohup $(PYTHON) -u newsprove.py >> logs/newsprove.log 2>&1 & echo $$! > state/newsprove.pid
@nohup $(PYTHON) -u agentlog.py >> logs/agentlog.log 2>&1 & echo $$! > state/agentlog.pid
@nohup $(PYTHON) -u dataprove.py >> logs/dataprove.log 2>&1 & echo $$! > state/dataprove.pid
@nohup $(PYTHON) -u socialprove.py >> logs/socialprove.log 2>&1 & echo $$! > state/socialprove.pid
@nohup $(PYTHON) -u researchprove.py >> logs/researchprove.log 2>&1 & echo $$! > state/researchprove.pid
@nohup $(PYTHON) -u codeprove.py >> logs/codeprove.log 2>&1 & echo $$! > state/codeprove.pid
@echo "All agents started. PIDs stored in state/*.pid"
@echo "Tail logs with: tail -f logs/*.log"
@sleep 3 && $(PYTHON) monitor.py
stop-all:
@echo "Stopping all agents..."
@for f in state/*.pid; do \
[ -f "$$f" ] || continue; \
pid=$$(cat $$f); \
kill $$pid 2>/dev/null && echo " killed PID $$pid ($$f)" || echo " $$f: already stopped"; \
rm -f $$f; \
done
@echo "Done"
status: install
@$(PYTHON) monitor.py
docker-build:
$(COMPOSE) build
docker-up:
$(COMPOSE) up -d
@echo "All 7 agents running. Check with: make docker-logs"
docker-down:
$(COMPOSE) down
docker-logs:
$(COMPOSE) logs -f --tail=50
docker-status:
$(COMPOSE) ps
# ── VPS / systemd deployment ──────────────────────────────────────────────────
# Run this on the production VPS as root.
INSTALL_DIR := /opt/numbers-agents
deploy-vps:
@echo "=== Deploying to $(INSTALL_DIR) ==="
mkdir -p $(INSTALL_DIR)
cp *.py requirements.txt .env $(INSTALL_DIR)/
cd $(INSTALL_DIR) && python3 -m venv venv && venv/bin/pip install -r requirements.txt
mkdir -p $(INSTALL_DIR)/state $(INSTALL_DIR)/logs
id agent 2>/dev/null || useradd -r -s /bin/false -d $(INSTALL_DIR) agent
chown -R agent:agent $(INSTALL_DIR)
cp systemd/*.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable numbers-provart numbers-newsprove numbers-agentlog \
numbers-dataprove numbers-socialprove numbers-researchprove numbers-codeprove
systemctl start numbers-provart numbers-newsprove numbers-agentlog \
numbers-dataprove numbers-socialprove numbers-researchprove numbers-codeprove
@echo "=== Deployed. Check status with: systemctl status 'numbers-*' ==="