Health Layer
OCTO runs silently. Arms reach, surfaces appear, actions complete. The health layer is the ambient signal that OCTO is alive, arms are reporting, and nothing is silently failing.
Three things. Always visible. Never intrusive.
1. OCTO is running → not crashed, not hung
2. Arms are healthy → each source reachable and reporting
3. Daily history at a glance → how did today go, any failuresSignal Vocabulary
Per Arm
| Signal | Meaning |
|---|---|
| 🟢 Healthy | Responded within expected time, data returned |
| 🟡 Degraded | Slow response, empty result, or partial data |
| 🔴 Failed | Error, timeout, or connection refused |
| ⚪ Skipped | Not scheduled for this run |
| 🔵 Running | Currently executing |
Overall OCTO
| Signal | Meaning |
|---|---|
| ● Running | Process alive, arms reporting |
| ○ Idle | Between scheduled runs, all healthy |
| ⚠ Attention | One or more arms degraded |
| ✕ Error | Run failed — check log |
Layer 1 — Windows Tray Icon
Lightest possible surface. Lives in the bottom-right corner. Color signals health. Click for detail. Zero screen real estate.
🟢 All arms healthy — last run successful
🟡 One arm slow or returned empty
🔴 Arm failed — needs attention
⚪ OCTO not runningRight-click tray menu:
OCTO ● Running
─────────────────────────────
Last run: today 08:47 ✓
─────────────────────────────
View morning brief
View arm health
Run now
─────────────────────────────
Settings
ExitThis is what a non-technical user sees. They're not monitoring infrastructure. They just need to know it worked. Green means good. Start the day.
Layer 2 — Health Panel
A small floating window. Minimizes to tray. Shows arm status live. Double-click the tray icon to show or hide.
┌─────────────────────────────────────┐
│ OCTO ● Running 08:47 │
├─────────────────────────────────────┤
│ │
│ Arms Status │
│ ───────────────────────────────── │
│ outlook.inbox 🟢 47ms │
│ outlook.calendar 🟢 23ms │
│ teams.planner 🟡 slow │
│ git.commits 🟢 12ms │
│ │
│ Last run 08:47 ✓ success │
│ Next run 17:00 scheduled │
│ │
│ Today 3 runs 0 failures │
│ │
│ [Run now] [View brief] [─] [×] │
└─────────────────────────────────────┘Layer 3 — Daily Report
End of day summary. Appears at 5pm or on request. Full picture of how OCTO performed today.
┌──────────────────────────────────────────┐
│ OCTO Daily Report — Tuesday June 17 │
├──────────────────────────────────────────┤
│ │
│ Runs today 4 │
│ Successful 4 │
│ Failed 0 │
│ Actions taken 7 │
│ │
│ Arms performance │
│ outlook.inbox ████████████ healthy │
│ outlook.calendar ████████████ healthy │
│ teams.planner ████████░░░░ slow ×2 │
│ git.commits ████████████ healthy │
│ │
│ Actions completed today │
│ ✓ Confirmation emails sent 3 │
│ ✓ Waitlist slot filled 1 │
│ ✓ Morning brief delivered 1 │
│ │
│ Arm issue detected │
│ teams.planner responded slowly twice │
│ Suggestion: check Teams connectivity │
│ │
│ [Dismiss] [Save report] [Send to me] │
└──────────────────────────────────────────┘Layer 4 — Weekly Summary Email
Every Monday morning. Practice owner's inbox. The value proof. The retention mechanism.
Subject: OCTO Weekly Summary — week of June 15
OCTO ran reliably this week.
Runs completed 28 of 28
Actions taken 94
Time saved est. ~8 hours
Confirmations sent 34 (3 cancellations caught early)
Reminders delivered 28
Waitlist slots filled 4
One arm was slow Tuesday afternoon — Teams Planner.
Resolved itself by Wednesday. No action needed.
Next week: 67 appointments scheduled.
OCTO will brief your team at 8:45 each morning.That email is why they never cancel. Every Monday they see the value in concrete numbers. Hours saved. Actions taken. Problems caught early.
Anomaly Detection
The health layer doesn't alert on every hiccup. It surfaces patterns worth attention.
Alert immediately:
Arm failed 2+ consecutive runs → tray icon red, notification
OCTO process not running at schedule → "OCTO didn't run" notification
Critical arm down (inbox, calendar) → immediate tray notification
Surface in daily report:
Arm slow 2+ times today → flagged with suggestion
Run took 2× longer than usual → noted, no alarm
Empty result where data expected → flagged for review
Surface in weekly summary:
Arm degraded 3+ times this week → trend flagged to owner
Actions count dropped vs last week → noted
New pattern detected → "Mondays are busiest"State Files — What Health Reads
The health monitor reads state written by OCTO runs. Never writes to it — clean separation.
{
"lastUpdated": "2026-06-17T08:47:23Z",
"overallHealth": "healthy",
"lastRunSuccess": true,
"lastRunAt": "2026-06-17T08:47:00Z",
"nextRunAt": "2026-06-17T17:00:00Z",
"todayRuns": 3,
"todayFailures": 0,
"arms": [
{
"name": "outlook.inbox",
"status": "healthy",
"responseMs": 47,
"lastResult": "47 items scanned"
},
{
"name": "teams.planner",
"status": "degraded",
"responseMs": 4200,
"lastResult": "partial — 3 of 8 boards loaded",
"note": "slow response — Teams connectivity may be degraded"
}
]
}Plain JSON. Human readable. Git trackable.
Run History
Every OCTO run writes a .reach-artifact to C:\reach\history\. The health monitor reads the folder to build the daily report and weekly summary.
C:\reach\history\
2026-06-17-0847-morning-brief.reach-artifact
2026-06-17-1200-midday-check.reach-artifact
2026-06-17-1700-daily-report.reach-artifactEach artifact contains: run timestamp, arms that ran, results, actions taken, errors or degraded states, the surface that was shown.
Who Sees What
End user (non-technical) → Tray icon — green means good
Morning brief surface at 8:45
Daily report at 5pm if something was slow
Practice owner → Weekly summary email every Monday
Concrete numbers: time saved, actions taken
Configurator → Full arm logs if something needs fixing
state.json and history folder — full pictureDesign Constraints
✓ Tray icon always visible — ambient, not intrusive
✓ Health panel opens on demand — never forced
✓ Daily report appears once — dismissed in one click
✓ Weekly email is the proof of value
✓ All state in flat files — no database to maintain
✓ Near-zero CPU when idle — lightweight background process
✗ No always-on monitoring agent — no continuous token burn
✗ No cloud dashboard — everything local, everything private
✗ No app to update — files don't have versions