🎯 Icarus Phase 8 — 'Silent Observer' (Ambient Coordination)
Status: Planned — Entry after HBM maturity (Phase 7)
Director: Matt
Theme: Zero-UI household coordination via ambient message monitoring
The Vision
The Holy Grail: Family coordination without apps, forms, or explicit commands. The conversation is the interface.
Implementation: Telegram Group Chat "Family Logistics"
- Members: Matt, Aundrea, Icarus (bot)
- Icarus reads every message (Privacy Mode disabled via BotFather)
- Silent extraction of coordination state
- Speaks up only on conflicts
Architecture: Two-Tier Router Pattern
The Compute Trap: Feeding every message ("How was your day?", memes, jokes) into an 8B model = 100% GPU, hallucinated events, wasted electricity.
The Solution:
┌─────────────────────────────────────────────────────────────┐
│ INCOMING MESSAGE STREAM (Telegram Group Chat) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ TIER 1: The Tripwire (Python/Regex or Sub-1B Model) │
│ • Latency: <10ms │
│ • Resource: Near-zero (CPU only) │
│ • Pattern match: dates, times, keywords │
│ "pick up", "tomorrow", "schedule", "cover", "June 4th" │
│ • Confidence threshold: 0.7 │
└─────────────────────────────────────────────────────────────┘
│
┌─────────┴─────────┐
▼ ▼
NO MATCH MATCH (0.7+)
(95% of messages) │
Drop silently ▼
┌─────────────────────────────┐
│ TIER 2: The Heavy Lifter │
│ (8B LLM - llama3.1:8b) │
│ • Latency: 1-3s │
│ • Resource: Gaming PC GPU │
│ • Full Coordination State │
│ extraction │
│ • Event Graph updates │
└─────────────────────────────┘
│
▼
┌─────────────────────────────┐
│ CONFLICT? │
│ • Yes → Speak up in chat │
│ • No → Silent update │
└─────────────────────────────┘
Tier 1: Tripwire Implementation
Option A: Python + Regex
_TRIPWIRE_PATTERNS = [
r'\b(pick up|drop off|cover|schedule)\b',
r'\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]* \d{1,2}\b',
r'\b(tomorrow|next week|Monday|Tuesday|Wednesday|Thursday|Friday)\b',
r'\b(\d{1,2}:\d{2}|\d{1,2} (am|pm))\b',
r'\b(Sully|Harper|kids?|children)\b',
]
def tripwire_check(message: str) -> float:
score = 0.0
for pattern in _TRIPWIRE_PATTERNS:
if re.search(pattern, message, re.IGNORECASE):
score += 0.15
return min(score, 1.0)
Option B: Sub-1B Model (phi-1.5 or similar)
- Load: ~500MB VRAM
- Speed: 100+ tokens/sec on CPU
- Task: Binary classification (coordination_yes/no)
Tier 2: Heavy Lifter Prompt
You are the Silent Observer's Coordination Extractor.
CONTEXT:
- Message from family group chat
- Tripwire detected: potential coordination content
- Current date: {today}
- Family: Matt (father), Aundrea (mother), Sully (son, 1st grade), Harper (daughter)
MESSAGE:
{message}
TASK:
Extract structured coordination state if present.
OUTPUT FORMAT:
{
"is_coordination": true | false,
"coordination_type": "transport" | "care_coverage" | "schedule_change" | "other" | null,
"dates": ["YYYY-MM-DD"],
"assigned_to": ["matt" | "aundrea" | "unspecified"],
"child": ["sully" | "harper" | "both" | null],
"details": string | null,
"needs_confirmation": boolean,
"blocking": boolean,
"confidence": 0.0-1.0
}
If not coordination, return {"is_coordination": false, "confidence": 0.0}
Conflict Detection & Speaking Up
Silent by default. Icarus only speaks when:
| Trigger | Icarus Response |
|---|---|
| Double-booking detected | "🚨 Conflict: Matt assigned pickup Thursday 3pm, but Aundrea said same time. Who's covering?" |
| Unconfirmed blocking item | "⏳ Awaiting: Aundrea asked about June 4th care 2 days ago. Schedule still pending?" |
| State change contradiction | "⚠️ Harper's OT moved to Tuesday? Previous schedule said Thursday." |
| High-penalty forgetting risk | "🎯 Reminder: Sully's field trip permission due tomorrow — no confirmation seen." |
Sovereign Constraints
| Constraint | Implementation |
|---|---|
| Local-first | Tripwire on Beelink (CPU), Heavy Lifter on Gaming PC |
| No cloud | All processing via Tailscale to Gaming PC |
| Privacy | No message storage beyond Event Graph extraction |
| Opt-out | /pause command mutes Icarus for 1 hour |
Platform Exploration: iMessage Skills
Future expansion beyond Telegram:
| Platform | Approach | Status |
|---|---|---|
| iMessage | macOS Bridge + AppleScript / Private API | Research phase |
| SMS | Android bridge or carrier forwarding | Conceptual |
iMessage technical options:
1. macOS Bridge: Mac running 24/7, AppleScript message monitoring
2. Private API: Reverse-engineered (risky, breaks with updates)
3. Focus Mode + Shortcuts: iOS automation forwarding to webhook
Recommendation: Telegram first (stable API), iMessage research parallel, SMS if family adoption requires.
Phase 8 Entry Requirements
| Requirement | Source Phase | Validation |
|---|---|---|
| Event Graph mature | Phase 6-7 | 90 days stable, conflict detection proven |
| Coordination type stable | Phase 7 HBM | type: "coordination" extraction validated |
| Tripwire accuracy | Phase 8 prep | >95% precision, <5% false positive rate |
| Family adoption | Phase 7 | Both Matt and Aundrea active in system |
Success Criteria
| Metric | Target |
|---|---|
| Tripwire precision | >95% (minimal false positives) |
| Tripwire recall | >90% (catch real coordination) |
| Heavy Lifter confidence | >0.85 for Event Graph writes |
| Conflict detection latency | <5 minutes from message |
| User interruptions | <2 per day (only true conflicts) |
| Family chat naturalness | No "Icarus, schedule..." commands needed |
File References
shared/project-docs/phase8-silent-observer-spec.md(this file)shared/project-docs/phase7-hbm-spec.md— Coordination type foundationshared/project-docs/icarus-phase-6-roadmap.md— Event Graph maturity
The conversation is the interface. The appliance listens, learns, and speaks only when necessary.