How to Read Watchtower
Pick the lane, then the page
Atlas stays easier to scan when the route map reads like navigation first. Start with the lane that matches your question, then expand the full page-job model only when you need the deeper contract details.
Operational companion page for when the question is about live health and current status rather than static explanation.
Change pace: Check recent updates first. These pages move when the network or live support surfaces change.
Use Watchtower for what is happening now, then come back to Atlas when you need the why behind it.
Open ArchitectureEntry
Use these pages when you are still orienting and need the safest first click before you pick an owner or system.
Ownership
Use these pages when your real question is who should handle the work, how it moves, or which charter owns the surface.
Systems
Use these pages when you need the map, structure, services, and interfaces behind the network instead of the people or routing rules.
Operations
Use these pages when something feels broken, you need a concrete next check, or you need the live-status companion surface.
Use this page like an interpretation guide, not a live console
I need to know what one tab is showing me
Fastest reading layer β tab-by-tab interpretation before deciding whether anything is wrong.
- Best for
- Overview, Live Event Stream, Bridge Log, Agent Activity, Cost Tracker, and Service Health questions.
- Stop after this when
- Stop once the tab makes sense and you know whether you need the event dictionary or investigation flow next.
Access
Most readers should use Watchtower on the LC Tailscale network at http://main-mini:5175/. Meg's container-era preview mirror on 5181 retired with that stack (2026-09-30 revalidation), so 5175 is the one live Watchtower surface.
Dashboard Views
Watchtower is organized into tabs. Here's what each one shows:
π Overview
At-a-glance network health. Shows the count of healthy/degraded/offline services, recent event volume, and the most active agents in the past 24 hours.
- βGreen counts = everything nominal
- βYellow = service reachable but slow or returning warnings
- βRed = service unreachable or erroring consistently
- βEvent spike = high agent activity (usually normal during Scout cycles)
π‘ Live Event Stream
Real-time feed of every observability event. New events appear at the top.
- β"service" field β which agent/service produced the event
- β"name" field β event type in dot notation (cycle.completed, bridge.call, recall.query)
- β"level" field β info (routine), warn (degraded), error (failed)
- β"durationMs" β how long the operation took; outliers are worth investigating
- β"meta" β structured payload specific to the event type
- βUse the service filter to watch one agent, level filter to see only warnings/errors
π Bridge Log
All agent-to-agent Bridge conversations. Shows who initiated, who was called, session ID, duration, and message count.
- βHigh turn count (> 5) = complex advisory loop, usually fine
- βVery short duration + low turns = simple question/answer, check outcome
- βSame session ID appearing multiple times = multi-turn session, filter by it
- βTarget: clawdy-advisor = Scout asking Clawdy for direction (expected every cycle)
- βTarget: atticus = governance gate check
- βTarget: dexter β buzz = Labs coordination (experiment design β distribution)
- βTarget: samwise = intake routing or delivery handoff
π€ Agent Activity
Per-agent summary: cycle count, last active timestamp, event volume, and recent cycle outcomes.
- β"Last active" > 4 hours ago = agent may have missed a scheduled cycle
- βCycle count growing steadily = healthy autonomous operation
- βAll cycles showing "error" = something systemic is broken
- βScout cycles are the most frequent, expected every 1β4 hours
- βSamwise delivery cycles appear when intake or delivery work is active
- βDexter and Buzz appear during active Labs experiments β intermittent by design
π° Cost Tracker
Token usage and imputed cost per agent over time. Pulls from cost.tracking events plus tokens.window metering for fixed-price subscription pools.
- βDaily totals should be stable; a spike usually means a large Codex delegation
- βScout and Clawdy are typically the top spenders; Labs agents (Dexter, Buzz) spike during active experiments
- βCodex delegations show up as a single high-token event (expected for complex tasks)
- βZ.AI and OpenAI rows show usage by model tier (GLM-5.2, GPT-5.4, Codex)
- βSubscription cost is fixed-price; token totals show pool burn and model mix, not a new per-token bill
- βZero cost for a long period = agent may not be emitting cost events
β€οΈ Service Health
Timeline view of each service's health status. Checked by the Monitor service every 2 hours. Services have an expected-state registry (local vs. hosted) so cloud-hosted services show a blue badge instead of a red "Down" alert.
- βGreen band = healthy throughout that period
- βYellow = degraded (reachable but returning errors or high latency)
- βRed = offline (Monitor could not reach the service; expected to be local)
- βBlue badge = hosted externally (e.g., OpenObserve on Railway); offline local endpoint is not a fault
- βGaps in the timeline = Monitor was not running (container restart, etc.)
- βConsistent red on Recall = QMD is down (high priority)
- βConsistent red on Bridge = agents cannot communicate (critical)
Common Event Types
Events use dot-notation names. Here are the ones you'll see most often:
| Event name | Service |
|---|---|
| cycle.started | scout-* |
| cycle.completed | scout-* |
| bridge.call | currykit-bridge |
| recall.query | currykit-recall |
| rag.sync | currykit-rag |
| delegation.created | scout-* |
| delegation.completed | scout-* |
| governance.proposed | scout-* |
| governance.approved | scout-atticus |
| governance.redirect | scout-atticus |
| monitoring.completed | monitor |
| cost.tracking | any |
| tokens.window | usage-meter |
| currybox.exec | currykit-currybox |
| tts.generated | currykit-tts |
Patterns: Healthy vs. Worth Investigating
β Healthy patterns
- βScout cycle.completed events every 1β4 hours across all projects
- βBridge calls to clawdy-advisor at end of each Scout cycle
- βSamwise intake/delivery events when Linear activity is active
- βDexter β Buzz Bridge calls during active Labs experiments
- βmonitoring.completed with alerts_detected: 0 every 2 hours
- βSteady trickle of recall.query events across agents
- βCost tracking events within the normal low per-cycle range for steady routine work
- βAll service health bands green overnight with no red gaps
β οΈ Worth investigating
- βNo Scout cycle.completed for more than 6 hours β check if cron is running
- βBridge calls with level: error β target agent may be down or unreachable
- βRecall queries returning result_count: 0 consistently β QMD may be empty or broken
- βmonitoring.completed with alerts_detected > 0 β check which service triggered
- βCost spike over 10Γ normal in one cycle β Codex may have looped
- βMultiple governance.redirect events in a row β Scout may be misaligned on scope
Investigating an Issue, Step by Step
Something looks wrong. Here's a structured approach:
Check Service Health first
If a service shows red, that's usually the root cause. Red Recall means knowledge queries failing everywhere. Red Bridge means agents can't talk. Fix infrastructure before investigating agent behavior.
Narrow the time window
Use the time filter in the Event Stream to focus on when things went wrong. If an agent's last cycle was at 3 PM and it's now 9 PM, look at the 3 PM window.
Filter by service
Pick the specific agent or service that seems affected. Look for the last successful event, then find where it stopped or started erroring. The gap tells you when the failure began.
Look for level: error events
Switch the level filter to "error only." Error events include a message or meta payload that usually explains what failed β timeout, HTTP error, missing file, parse failure.
Follow the Bridge log
If the issue is in agent coordination, find sessions around the failure time. Low turn count + short duration + error = the remote agent likely rejected or couldn't respond.
Cross-reference Monitor alerts
Find the nearest monitoring.completed event before and after the issue. If alerts_detected jumped from 0 to 1+, the monitor caught it. The meta.services field shows which service triggered the alert.
Status Indicator Reference
π Planned Enhancements
These alerting capabilities are queued for Watchtower and will appear as new alert types once shipped.
Daily/weekly cost trend detection. When Codex API or delegation spend exceeds a rolling average by >2Γ (or crosses a configurable absolute daily ceiling), a cost_trend alert fires. Extends detectCostSpikes() from per-event to windowed aggregation.
Surfaces follow-up items from governance decisions or bridge conversations that were deferred. When an Atticus decision or bridge message includes "follow up" or "defer to next" with a time reference, a time-boxed reminder alert is created.
Detects when an agent that normally runs on a cron schedule has gone silent beyond its expected interval. Generates an agent_silent alert when the gap exceeds 2Γ the cron interval.