Some checks failed
PR Checklist / pr-checklist (pull_request) Failing after 1m27s
Implements the Ansible Infrastructure as Code story from KT 2026-04-08. One canonical Ansible playbook defines: - Deadman switch (snapshot good config on health, rollback+restart on death) - Golden state config deployment (Anthropic BANNED, Kimi→Gemini→Ollama) - Cron schedule (source-controlled, no manual crontab edits) - Agent startup sequence (pull→validate→start→verify) - request_log telemetry table (every inference call logged) - Thin config pattern (immutable local pointer to upstream) - Gitea webhook handler (deploy on merge) - Config validator (rejects banned providers) Fleet inventory: Timmy (Mac), Allegro (VPS), Bezalel (VPS), Ezra (VPS) Roles: wizard_base, golden_state, deadman_switch, request_log, cron_manager Addresses: timmy-config #442, #443, #444, #445, #446 References: KT Final 2026-04-08 P2, KT Bezalel 2026-04-08 #1-#5
120 lines
4.1 KiB
YAML
120 lines
4.1 KiB
YAML
# =============================================================================
|
|
# Fleet Inventory — The Timmy Foundation
|
|
# =============================================================================
|
|
# Source of truth for all machines in the fleet.
|
|
# Update this file when machines are added/removed.
|
|
# All changes go through PR review.
|
|
# =============================================================================
|
|
|
|
all:
|
|
children:
|
|
wizards:
|
|
hosts:
|
|
timmy:
|
|
ansible_host: localhost
|
|
ansible_connection: local
|
|
wizard_name: Timmy
|
|
wizard_role: "Primary wizard — soul of the fleet"
|
|
wizard_provider_primary: kimi-coding
|
|
wizard_model_primary: kimi-k2.5
|
|
hermes_port: 8081
|
|
api_port: 8645
|
|
wizard_home: "{{ ansible_env.HOME }}/wizards/timmy"
|
|
hermes_home: "{{ ansible_env.HOME }}/.hermes"
|
|
machine_type: mac
|
|
# Timmy runs on Alexander's M3 Max
|
|
ollama_available: true
|
|
|
|
allegro:
|
|
ansible_host: 167.99.126.228
|
|
ansible_user: root
|
|
wizard_name: Allegro
|
|
wizard_role: "Kimi-backed third wizard house — tight coding tasks"
|
|
wizard_provider_primary: kimi-coding
|
|
wizard_model_primary: kimi-k2.5
|
|
hermes_port: 8081
|
|
api_port: 8645
|
|
wizard_home: /root/wizards/allegro
|
|
hermes_home: /root/.hermes
|
|
machine_type: vps
|
|
ollama_available: false
|
|
|
|
bezalel:
|
|
ansible_host: 159.203.146.185
|
|
ansible_user: root
|
|
wizard_name: Bezalel
|
|
wizard_role: "Forge-and-testbed wizard — infrastructure, deployment, hardening"
|
|
wizard_provider_primary: kimi-coding
|
|
wizard_model_primary: kimi-k2.5
|
|
hermes_port: 8081
|
|
api_port: 8656
|
|
wizard_home: /root/wizards/bezalel
|
|
hermes_home: /root/.hermes
|
|
machine_type: vps
|
|
ollama_available: false
|
|
# NOTE: The awake Bezalel may be the duplicate.
|
|
# Fleet audit (the-nexus #1144) will resolve identity.
|
|
|
|
ezra:
|
|
ansible_host: 143.198.27.163
|
|
ansible_user: root
|
|
wizard_name: Ezra
|
|
wizard_role: "Infrastructure wizard — Gitea, nginx, hosting"
|
|
wizard_provider_primary: kimi-coding
|
|
wizard_model_primary: kimi-k2.5
|
|
hermes_port: 8081
|
|
api_port: 8645
|
|
wizard_home: /root/wizards/ezra
|
|
hermes_home: /root/.hermes
|
|
machine_type: vps
|
|
ollama_available: false
|
|
# NOTE: Currently DOWN — Telegram key revoked, awaiting propagation.
|
|
|
|
# Infrastructure hosts (not wizards, but managed by Ansible)
|
|
infrastructure:
|
|
hosts:
|
|
forge:
|
|
ansible_host: 143.198.27.163
|
|
ansible_user: root
|
|
# Gitea runs on the same box as Ezra
|
|
gitea_url: https://forge.alexanderwhitestone.com
|
|
gitea_org: Timmy_Foundation
|
|
|
|
vars:
|
|
# Global variables applied to all hosts
|
|
gitea_repo_url: "https://forge.alexanderwhitestone.com/Timmy_Foundation/timmy-config.git"
|
|
gitea_branch: main
|
|
config_base_path: "{{ gitea_repo_url }}"
|
|
timmy_log_dir: "~/.local/timmy/fleet-health"
|
|
request_log_db: "~/.local/timmy/request_log.db"
|
|
|
|
# Golden state provider chain — Anthropic is BANNED
|
|
golden_state_providers:
|
|
- name: kimi-coding
|
|
model: kimi-k2.5
|
|
base_url: "https://api.kimi.com/coding/v1"
|
|
timeout: 120
|
|
reason: "Primary — Kimi K2.5 (best value, least friction)"
|
|
- name: openrouter
|
|
model: google/gemini-2.5-pro
|
|
base_url: "https://openrouter.ai/api/v1"
|
|
api_key_env: OPENROUTER_API_KEY
|
|
timeout: 120
|
|
reason: "Fallback — Gemini 2.5 Pro via OpenRouter"
|
|
- name: ollama
|
|
model: "gemma4:latest"
|
|
base_url: "http://localhost:11434/v1"
|
|
timeout: 180
|
|
reason: "Terminal fallback — local Ollama (sovereign, no API needed)"
|
|
|
|
# Banned providers — hard enforcement
|
|
banned_providers:
|
|
- anthropic
|
|
- claude
|
|
banned_models_patterns:
|
|
- "claude-*"
|
|
- "anthropic/*"
|
|
- "*sonnet*"
|
|
- "*opus*"
|
|
- "*haiku*"
|