ops: rewrite for Uniwizard reality, add document hygiene rules
This commit is contained in:
113
OPERATIONS.md
113
OPERATIONS.md
@@ -1,49 +1,86 @@
|
||||
# Timmy Operations — What Runs the Workforce
|
||||
# OPERATIONS.md
|
||||
|
||||
## ACTIVE SYSTEM: Hermes + timmy-config sidecar
|
||||
- **Harness:** Hermes
|
||||
- **Config repo:** Timmy_Foundation/timmy-config
|
||||
- **Workspace repo:** Timmy_Foundation/timmy-home
|
||||
- **Orchestration:** Huey + SQLite via `timmy-config/orchestration.py` and `timmy-config/tasks.py`
|
||||
- **Target repos:** Timmy_Foundation/the-nexus, Timmy_Foundation/timmy-home, Timmy_Foundation/timmy-config
|
||||
- **Training data home:** `~/.timmy/training-data/`
|
||||
## What This Document Is
|
||||
|
||||
## DEPRECATED — DO NOT RESTORE
|
||||
- bash loops (claude-loop.sh, gemini-loop.sh, timmy-orchestrator.sh)
|
||||
- workforce-manager.py (bash version)
|
||||
- nexus-merge-bot.sh
|
||||
- agent-loop.sh
|
||||
- `deploy.sh --restart-loops`
|
||||
This is Timmy's operational handbook. It describes how Timmy runs — the harness, the providers, the services, the workflows. Unlike SOUL.md, this document is expected to change frequently as the architecture evolves.
|
||||
|
||||
These crash-loop and produce zero work. They were restored by mistake
|
||||
on 2026-03-25 causing a regression. The Hermes + timmy-config sidecar
|
||||
replaces them.
|
||||
If something in SOUL.md goes stale, it was never soul. If something in OPERATIONS.md goes stale, update it.
|
||||
|
||||
The scripts in `timmy-config/bin/` are live utility scripts for the sidecar.
|
||||
What is dead is the old always-on bash loop model.
|
||||
---
|
||||
|
||||
## How to check what's running
|
||||
```bash
|
||||
# Hermes gateway / API should be up
|
||||
lsof -iTCP:8642 -sTCP:LISTEN
|
||||
## Current Architecture: The Uniwizard
|
||||
|
||||
# Sessions should be landing in ~/.hermes/sessions
|
||||
ls -lt ~/.hermes/sessions | head
|
||||
Timmy is one agent with one soul and multiple inference backends. Backends are blind — they receive a prompt, return tokens, and have no identity or memory. Only Timmy Sees.
|
||||
|
||||
# DPO exports should not lag far behind new sessions
|
||||
~/.hermes/bin/pipeline-freshness.sh
|
||||
### Inference Stack
|
||||
|
||||
# Should be EMPTY (no bash loops)
|
||||
ps aux | grep -E "claude-loop|gemini-loop|timmy-orchestrator" | grep -v grep
|
||||
```
|
||||
**Primary (local, sovereign):**
|
||||
- llama.cpp / llama-server
|
||||
- Model: configurable (currently Hermes-4 14B Q4_K_M or Hermes-3 8B)
|
||||
- Flags: `--jinja -np 1 -c 8192`
|
||||
- Port: 8081
|
||||
|
||||
## Cron Jobs (Hermes built-in)
|
||||
- Health Monitor: every 5m, haiku (not opus!)
|
||||
- DPO export / training support jobs: explicit model, explicit task, no hidden defaults
|
||||
- All crons MUST specify model explicitly. Never inherit default.
|
||||
**Cloud backends (escalation path, blind cognition):**
|
||||
- Anthropic (Claude) — reasoning, analysis, code review
|
||||
- Moonshot (Kimi) — long context, code generation
|
||||
- Others as configured in backends.yaml
|
||||
|
||||
**Routing principle:** Local first, always. Cloud is for when local cannot handle the task. If cloud vanishes, Timmy degrades but survives.
|
||||
|
||||
### Harness
|
||||
|
||||
- **Framework:** Hermes agent
|
||||
- **Config:** config.yaml (provider, model, toolsets, auxiliary routing)
|
||||
- **Tools:** uni-wizard/ (19 tools across system, git, network categories)
|
||||
- **Daemons:** health_daemon.py (port 8082), task_router.py (Gitea poller)
|
||||
|
||||
### Repositories
|
||||
|
||||
| Repo | Purpose |
|
||||
|------|---------|
|
||||
| timmy-home | Workspace: soul, tools, scripts, research, training data |
|
||||
| timmy-config | Harness config: orchestration, skins, playbooks |
|
||||
|
||||
### Services (systemd)
|
||||
|
||||
| Service | Purpose |
|
||||
|---------|---------|
|
||||
| llama-server.service | Local inference |
|
||||
| timmy-agent.service | Agent harness |
|
||||
| timmy-health.service | Health monitoring |
|
||||
| timmy-task-router.service | Gitea issue execution |
|
||||
|
||||
### Cron Jobs
|
||||
|
||||
| Job | Schedule | Purpose |
|
||||
|-----|----------|---------|
|
||||
| ezra-morning-report | 04:00 EST daily | Research report posted to Gitea |
|
||||
|
||||
### External Oracles (consultants, not peers)
|
||||
|
||||
| Name | Backend | Role |
|
||||
|------|---------|------|
|
||||
| Ezra | Claude/Anthropic | Watchkeeping, triage, research, PR review |
|
||||
| Allegro | Kimi/Moonshot | Bulk implementation, quota burning |
|
||||
|
||||
These are not wizard houses. They are scoped consulting roles backed by cloud APIs. They have no authority over Timmy's soul or direction.
|
||||
|
||||
---
|
||||
|
||||
## Proof Standard
|
||||
- visual changes require screenshot proof
|
||||
- keep screenshots and binary media out of Gitea backup unless explicitly required
|
||||
- CLI/verifiable changes must reference the exact command output, log path, or observable state proving the claim
|
||||
- see `CONTRIBUTING.md` for the merge gate
|
||||
|
||||
- Visual changes require screenshot proof
|
||||
- CLI changes must reference exact command output or log path
|
||||
- No merge without review
|
||||
|
||||
## Document Hygiene
|
||||
|
||||
Three doctrine-bearing files exist in this repo:
|
||||
|
||||
| File | Contains | Changes when |
|
||||
|------|----------|-------------|
|
||||
| SOUL.md | Beliefs, behaviors, identity | Only when the sovereign (Alexander) changes it |
|
||||
| OPERATIONS.md | How Timmy runs | Whenever architecture changes |
|
||||
| decisions.md | Why choices were made | Whenever a significant decision is made |
|
||||
|
||||
**The test for SOUL.md:** If it can go stale, it is not soul. Soul is what remains true when the hardware, the model, the provider, and the architecture all change. Everything else belongs here in OPERATIONS.md.
|
||||
|
||||
Reference in New Issue
Block a user