2026-02-25 11:01:11 -05:00
|
|
|
.PHONY: install install-bigbrain dev nuke test test-cov test-cov-html watch lint clean help \
|
2026-02-25 07:20:56 -05:00
|
|
|
up down logs \
|
feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.
New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI
Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image
https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
|
|
|
docker-build docker-up docker-down docker-agent docker-logs docker-shell \
|
|
|
|
|
cloud-deploy cloud-up cloud-down cloud-logs cloud-status cloud-update
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
|
|
|
|
|
VENV := .venv
|
|
|
|
|
PYTHON := $(VENV)/bin/python
|
|
|
|
|
PIP := $(VENV)/bin/pip
|
|
|
|
|
PYTEST := $(VENV)/bin/pytest
|
|
|
|
|
UVICORN := $(VENV)/bin/uvicorn
|
|
|
|
|
SELF_TDD := $(VENV)/bin/self-tdd
|
|
|
|
|
|
|
|
|
|
# ── Setup ─────────────────────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
install: $(VENV)/bin/activate
|
|
|
|
|
$(PIP) install --quiet -e ".[dev]"
|
|
|
|
|
@echo "✓ Ready. Run 'make dev' to start the dashboard."
|
|
|
|
|
|
|
|
|
|
install-bigbrain: $(VENV)/bin/activate
|
|
|
|
|
$(PIP) install --quiet -e ".[dev,bigbrain]"
|
|
|
|
|
@if [ "$$(uname -m)" = "arm64" ] && [ "$$(uname -s)" = "Darwin" ]; then \
|
|
|
|
|
$(PIP) install --quiet "airllm[mlx]"; \
|
|
|
|
|
echo "✓ AirLLM + MLX installed (Apple Silicon detected)"; \
|
|
|
|
|
else \
|
|
|
|
|
echo "✓ AirLLM installed (PyTorch backend)"; \
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
$(VENV)/bin/activate:
|
|
|
|
|
python3 -m venv $(VENV)
|
|
|
|
|
|
|
|
|
|
# ── Development ───────────────────────────────────────────────────────────────
|
|
|
|
|
|
2026-02-25 11:01:11 -05:00
|
|
|
dev: nuke
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
$(UVICORN) dashboard.app:app --reload --host 0.0.0.0 --port 8000
|
|
|
|
|
|
2026-02-25 11:01:11 -05:00
|
|
|
# Kill anything on port 8000, stop Docker containers, clear stale state.
|
|
|
|
|
# Safe to run anytime — idempotent, never errors out.
|
|
|
|
|
nuke:
|
|
|
|
|
@echo " Cleaning up dev environment..."
|
|
|
|
|
@# Stop Docker containers (if any are running)
|
|
|
|
|
@docker compose down --remove-orphans 2>/dev/null || true
|
|
|
|
|
@# Kill any process holding port 8000 (errno 48 fix)
|
|
|
|
|
@lsof -ti :8000 | xargs kill -9 2>/dev/null || true
|
|
|
|
|
@# Brief pause to let the OS release the socket
|
|
|
|
|
@sleep 0.5
|
|
|
|
|
@echo " ✓ Port 8000 free, containers stopped"
|
|
|
|
|
|
2026-02-22 15:19:51 +00:00
|
|
|
# Print the local IP addresses your phone can use to reach this machine.
|
|
|
|
|
# Connect your phone to the same hotspot your Mac is sharing from,
|
|
|
|
|
# then open http://<IP>:8000 in your phone browser.
|
|
|
|
|
# The server auto-reloads on Python/template changes (--reload above).
|
|
|
|
|
# For CSS/static changes, just pull-to-refresh on your phone.
|
|
|
|
|
ip:
|
|
|
|
|
@echo ""
|
|
|
|
|
@echo " Open one of these on your phone: http://<IP>:8000"
|
|
|
|
|
@echo ""
|
|
|
|
|
@ipconfig getifaddr en0 2>/dev/null | awk '{print " en0 (Wi-Fi): http://" $$1 ":8000"}' || true
|
|
|
|
|
@ipconfig getifaddr en1 2>/dev/null | awk '{print " en1 (Ethernet): http://" $$1 ":8000"}' || true
|
|
|
|
|
@ipconfig getifaddr en2 2>/dev/null | awk '{print " en2: http://" $$1 ":8000"}' || true
|
|
|
|
|
@ifconfig 2>/dev/null | awk '/inet / && !/127\.0\.0\.1/ && !/::1/{print " " $$2 " → http://" $$2 ":8000"}' | head -5 || true
|
|
|
|
|
@echo ""
|
|
|
|
|
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
watch:
|
|
|
|
|
$(SELF_TDD) watch --interval 60
|
|
|
|
|
|
|
|
|
|
# ── Testing ───────────────────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
test:
|
|
|
|
|
$(PYTEST) tests/ -q --tb=short
|
|
|
|
|
|
|
|
|
|
test-cov:
|
|
|
|
|
$(PYTEST) tests/ --cov=src --cov-report=term-missing --cov-report=xml -q
|
|
|
|
|
|
2026-02-22 20:42:58 -05:00
|
|
|
test-cov-html:
|
|
|
|
|
$(PYTEST) tests/ --cov=src --cov-report=term-missing --cov-report=html -q
|
|
|
|
|
@echo "✓ HTML coverage report: open htmlcov/index.html"
|
|
|
|
|
|
2026-02-25 02:44:36 +00:00
|
|
|
# Full-stack functional test: spins up Ollama (CPU, qwen2.5:0.5b) + dashboard
|
|
|
|
|
# in Docker and verifies real LLM chat end-to-end.
|
|
|
|
|
# Override model: make test-ollama OLLAMA_TEST_MODEL=tinyllama
|
|
|
|
|
test-ollama:
|
|
|
|
|
FUNCTIONAL_DOCKER=1 $(PYTEST) tests/functional/test_ollama_chat.py -v --tb=long -x
|
|
|
|
|
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
# ── Code quality ──────────────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
lint:
|
|
|
|
|
@$(PYTHON) -m ruff check src/ tests/ 2>/dev/null || \
|
|
|
|
|
$(PYTHON) -m flake8 src/ tests/ 2>/dev/null || \
|
|
|
|
|
echo "No linter installed — run: pip install ruff"
|
|
|
|
|
|
|
|
|
|
# ── Housekeeping ──────────────────────────────────────────────────────────────
|
|
|
|
|
|
2026-02-25 07:20:56 -05:00
|
|
|
# ── One-command startup ──────────────────────────────────────────────────────
|
|
|
|
|
# make up build + start everything in Docker
|
|
|
|
|
# make up DEV=1 same, with hot-reload on Python/template/CSS changes
|
|
|
|
|
|
|
|
|
|
up:
|
|
|
|
|
mkdir -p data
|
|
|
|
|
ifdef DEV
|
|
|
|
|
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build
|
|
|
|
|
@echo ""
|
|
|
|
|
@echo " ✓ Timmy Time running in DEV mode at http://localhost:8000"
|
|
|
|
|
@echo " Hot-reload active — Python, template, and CSS changes auto-apply"
|
|
|
|
|
@echo " Logs: make logs"
|
|
|
|
|
@echo ""
|
|
|
|
|
else
|
|
|
|
|
docker compose up -d --build
|
|
|
|
|
@echo ""
|
|
|
|
|
@echo " ✓ Timmy Time running at http://localhost:8000"
|
|
|
|
|
@echo " Logs: make logs"
|
|
|
|
|
@echo ""
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
down:
|
|
|
|
|
docker compose down
|
|
|
|
|
|
|
|
|
|
logs:
|
|
|
|
|
docker compose logs -f
|
|
|
|
|
|
2026-02-22 16:21:32 -05:00
|
|
|
# ── Docker ────────────────────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
docker-build:
|
|
|
|
|
docker build -t timmy-time:latest .
|
|
|
|
|
|
|
|
|
|
docker-up:
|
|
|
|
|
mkdir -p data
|
|
|
|
|
docker compose up -d dashboard
|
|
|
|
|
|
|
|
|
|
docker-down:
|
|
|
|
|
docker compose down
|
|
|
|
|
|
|
|
|
|
# Spawn one agent worker connected to the running dashboard.
|
|
|
|
|
# Override name/capabilities: make docker-agent AGENT_NAME=Echo AGENT_CAPABILITIES=summarise
|
|
|
|
|
docker-agent:
|
|
|
|
|
AGENT_NAME=$${AGENT_NAME:-Worker} \
|
|
|
|
|
AGENT_CAPABILITIES=$${AGENT_CAPABILITIES:-general} \
|
|
|
|
|
docker compose --profile agents up -d --scale agent=1 agent
|
|
|
|
|
|
|
|
|
|
docker-logs:
|
|
|
|
|
docker compose logs -f
|
|
|
|
|
|
|
|
|
|
docker-shell:
|
|
|
|
|
docker compose exec dashboard bash
|
|
|
|
|
|
feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.
New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI
Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image
https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
|
|
|
# ── Cloud Deploy ─────────────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
# One-click production deployment (run on your cloud server)
|
|
|
|
|
cloud-deploy:
|
|
|
|
|
@bash deploy/setup.sh
|
|
|
|
|
|
|
|
|
|
# Start the production stack (Caddy + Ollama + Dashboard + Timmy)
|
|
|
|
|
cloud-up:
|
|
|
|
|
docker compose -f docker-compose.prod.yml up -d
|
|
|
|
|
|
|
|
|
|
# Stop the production stack
|
|
|
|
|
cloud-down:
|
|
|
|
|
docker compose -f docker-compose.prod.yml down
|
|
|
|
|
|
|
|
|
|
# Tail production logs
|
|
|
|
|
cloud-logs:
|
|
|
|
|
docker compose -f docker-compose.prod.yml logs -f
|
|
|
|
|
|
|
|
|
|
# Show status of all production containers
|
|
|
|
|
cloud-status:
|
|
|
|
|
docker compose -f docker-compose.prod.yml ps
|
|
|
|
|
|
|
|
|
|
# Pull latest code and rebuild
|
|
|
|
|
cloud-update:
|
|
|
|
|
git pull
|
|
|
|
|
docker compose -f docker-compose.prod.yml up -d --build
|
|
|
|
|
|
|
|
|
|
# Create a DigitalOcean droplet (requires doctl CLI)
|
|
|
|
|
cloud-droplet:
|
|
|
|
|
@bash deploy/digitalocean/create-droplet.sh
|
|
|
|
|
|
|
|
|
|
# Scale agent workers in production: make cloud-scale N=4
|
|
|
|
|
cloud-scale:
|
|
|
|
|
docker compose -f docker-compose.prod.yml --profile agents up -d --scale agent=$${N:-2}
|
|
|
|
|
|
|
|
|
|
# Pull a model into Ollama: make cloud-pull-model MODEL=llama3.2
|
|
|
|
|
cloud-pull-model:
|
|
|
|
|
docker exec timmy-ollama ollama pull $${MODEL:-llama3.2}
|
|
|
|
|
|
2026-02-22 16:21:32 -05:00
|
|
|
# ── Housekeeping ──────────────────────────────────────────────────────────────
|
|
|
|
|
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
clean:
|
|
|
|
|
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
|
|
|
|
|
find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
|
|
|
|
|
find . -name "*.pyc" -delete 2>/dev/null || true
|
|
|
|
|
rm -rf .pytest_cache htmlcov .coverage coverage.xml
|
|
|
|
|
|
|
|
|
|
help:
|
2026-02-25 07:20:56 -05:00
|
|
|
@echo ""
|
|
|
|
|
@echo " Quick Start"
|
|
|
|
|
@echo " ─────────────────────────────────────────────────"
|
|
|
|
|
@echo " make up build + start everything in Docker"
|
|
|
|
|
@echo " make up DEV=1 same, with hot-reload on file changes"
|
|
|
|
|
@echo " make down stop all containers"
|
|
|
|
|
@echo " make logs tail container logs"
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
@echo ""
|
feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.
New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI
Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image
https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
|
|
|
@echo " Local Development"
|
|
|
|
|
@echo " ─────────────────────────────────────────────────"
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
@echo " make install create venv + install dev deps"
|
|
|
|
|
@echo " make install-bigbrain install with AirLLM (big-model backend)"
|
2026-02-25 11:01:11 -05:00
|
|
|
@echo " make dev clean up + start dashboard (auto-fixes errno 48)"
|
|
|
|
|
@echo " make nuke kill port 8000, stop containers, reset state"
|
2026-02-22 15:19:51 +00:00
|
|
|
@echo " make ip print local IP addresses for phone testing"
|
2026-02-22 20:42:58 -05:00
|
|
|
@echo " make test run all tests"
|
|
|
|
|
@echo " make test-cov tests + coverage report (terminal + XML)"
|
|
|
|
|
@echo " make test-cov-html tests + HTML coverage report"
|
docs: development standards, Makefile, GitHub Pages landing page
- Remove stale STATUS.md and DEVELOPMENT_REPORT.md (content superseded)
- Rewrite README.md to reflect v2 state (228 tests, swarm, L402, voice,
WebSocket, mobile; Makefile commands; updated architecture diagram)
- Add AGENTS.md — per-agent development standards for Claude, Kimi, and
Manus; coding conventions, architecture patterns, roadmap, file layout
- Add Makefile — install, dev, test, test-cov, watch, lint, clean targets
- Add docs/index.html — GitHub Pages landing page (dark mission-control
theme, scanline overlay, feature grid, architecture diagram, quickstart
steps, agent team cards, roadmap, stats bar)
https://claude.ai/code/session_0181LU8dCresHiLzYxjK4vUC
2026-02-22 00:22:04 +00:00
|
|
|
@echo " make watch self-TDD watchdog (60s poll)"
|
|
|
|
|
@echo " make lint run ruff or flake8"
|
|
|
|
|
@echo " make clean remove build artefacts and caches"
|
|
|
|
|
@echo ""
|
2026-02-25 07:20:56 -05:00
|
|
|
@echo " Docker (Advanced)"
|
feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.
New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI
Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image
https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
|
|
|
@echo " ─────────────────────────────────────────────────"
|
2026-02-22 16:21:32 -05:00
|
|
|
@echo " make docker-build build the timmy-time:latest image"
|
|
|
|
|
@echo " make docker-up start dashboard container"
|
|
|
|
|
@echo " make docker-agent add one agent worker (AGENT_NAME=Echo)"
|
|
|
|
|
@echo " make docker-down stop all containers"
|
|
|
|
|
@echo " make docker-logs tail container logs"
|
|
|
|
|
@echo " make docker-shell open a bash shell in the dashboard container"
|
|
|
|
|
@echo ""
|
feat: one-click cloud deployment — Caddy HTTPS, Ollama, systemd, cloud-init
Add complete production deployment stack so Timmy can be deployed to any
cloud provider (DigitalOcean, AWS, Hetzner, etc.) with a single command.
New files:
- docker-compose.prod.yml: production stack (Caddy auto-HTTPS, Ollama LLM,
Dashboard, Timmy agent, Watchtower auto-updates)
- deploy/Caddyfile: reverse proxy with security headers and WebSocket support
- deploy/setup.sh: interactive one-click setup script for any Ubuntu/Debian server
- deploy/cloud-init.yaml: paste as User Data when creating a cloud VM
- deploy/timmy.service: systemd unit for auto-start on boot
- deploy/digitalocean/create-droplet.sh: create a DO droplet via doctl CLI
Updated:
- Dockerfile: non-root user, healthcheck, missing deps (GitPython, moviepy, redis)
- Makefile: cloud-deploy, cloud-up/down/logs/status/update/scale targets
- .env.example: DOMAIN setting for HTTPS
- .dockerignore: exclude deploy configs from image
https://claude.ai/code/session_018CduUZoEJzFynBwMsxaP8T
2026-02-24 21:22:56 +00:00
|
|
|
@echo " Cloud Deploy (Production)"
|
|
|
|
|
@echo " ─────────────────────────────────────────────────"
|
|
|
|
|
@echo " make cloud-deploy one-click server setup (run as root)"
|
|
|
|
|
@echo " make cloud-up start production stack"
|
|
|
|
|
@echo " make cloud-down stop production stack"
|
|
|
|
|
@echo " make cloud-logs tail production logs"
|
|
|
|
|
@echo " make cloud-status show container status"
|
|
|
|
|
@echo " make cloud-update pull + rebuild from git"
|
|
|
|
|
@echo " make cloud-droplet create DigitalOcean droplet (needs doctl)"
|
|
|
|
|
@echo " make cloud-scale N=4 scale agent workers"
|
|
|
|
|
@echo " make cloud-pull-model MODEL=llama3.2 pull LLM model"
|
|
|
|
|
@echo ""
|