- tower-hermes.sh: health check, pause file, exponential backoff, message held on failure
- tower-timmy.sh: same pattern for Ollama backend, messages held not lost
- timmy-loop.sh: pause after 2 consecutive cycle failures, backoff probe
- tower-watchdog.sh: respect .paused files, don't restart paused loops
Behavior:
1 failure → log warning, retry next turn
2 failures → enter pause, write .paused file, probe with backoff
Backend returns → auto-resume, clear pause file
Watchdog sees .paused → skip that loop, don't fight the pause
Messages from the other side → held in inbox, not lost
- FALSEWORK.md: Full audit of API costs per component, migration plan
for shifting load from Claude to local models incrementally
- start-dashboard.sh: Launches tmux layout with only zero-cost panes
active (status, loopstat). Loop and chat panes held until manual start.
- tower-timmy.sh: No changes (already source-controlled)
Falsework principle: build on cheap/local scaffolding, upgrade to
Claude only where quality demands it.
Session resume lines, tool traces, and session rename output
were leaking into the messages passed between agents. Added
grep filters to strip them from ask_hermes/ask_timmy output.
Also switched from set -e to avoid exits on non-zero from
first-run --continue calls.
Two-pane tmux session with file-based message passing:
- tower-hermes.sh: Hermes side (cloud/Claude)
- tower-timmy.sh: Timmy side (HERMES_HOME=~/.timmy)
- tower-watchdog.sh: self-healing, restarts dead panes
- tower-session.sh: tmux bootstrap script
Communication via ~/.tower/*.msg files.
Both agents maintain named sessions (tower-hermes, tower-timmy)
for conversation continuity across restarts.