Heru Feedback — Architecture Diagram

┌─────────────────────────────────────────────────────────┐
│                    TESTER'S DEVICE                        │
│  (Quik's phone, Vision's laptop)                         │
│                                                           │
│  ┌─────────────────────────────────┐                     │
│  │  FMO / WCR / My Voyages App    │                     │
│  │  (web or mobile)                │                     │
│  │                                 │                     │
│  │  ┌───────────────────┐          │                     │
│  │  │ Ida Widget (FAB)  │ ← tester taps this            │
│  │  │ - Screenshot      │                                │
│  │  │ - Text            │                                │
│  │  │ - Voice recording │                                │
│  │  │ - Screen record   │                                │
│  │  └────────┬──────────┘                                │
│  └───────────┼──────────────────────┘                    │
└──────────────┼──────────────────────────────────────────┘
               │ POST /api/feedback
               ▼
┌──────────────────────────────────────┐
│     CLARA BACKEND (Shared EC2)       │  ← lives on develop EC2
│     98.83.4.34                       │    (i-0c851042b3e385682)
│                                      │
│  1. Store feedback in PostgreSQL     │
│  2. Upload screenshot/audio to S3    │
│  3. Classify (Sonnet): bug/feature   │
│  4. POST to Slack #maat-agents       │
│  5. Write task to Auset Brain vault  │
│     ~/auset-brain/Feedback-Tasks/    │
│     <heru>/<id>.md                   │
└──────────┬───────────────────────────┘
           │
     ┌─────┴─────┐
     ▼           ▼
┌─────────┐  ┌──────────────────────────────────┐
│  SLACK  │  │  AUSET BRAIN VAULT (S3)           │
│ #maat-  │  │  s3://auset-brain-vault/          │
│ agents  │  │  Feedback-Tasks/fmo/001.md         │
│         │  │  Feedback-Tasks/wcr/001.md         │
│ Mo sees │  │  Feedback-Tasks/my-voyages/001.md  │
│ it here │  └──────────┬───────────────────────┘
└─────────┘             │
                        │ Haiku dispatcher reads
                        │ every 5 minutes
                        ▼
┌───────────────────────────────────────────────────┐
│              QC1 (Mac M4 Pro)                      │
│              100.113.53.80 (Tailscale)             │
│                                                    │
│  ┌──────────────────────────────────┐              │
│  │  HAIKU DISPATCHER                │              │
│  │  (haiku-dispatcher.js — cron 5m) │              │
│  │                                  │              │
│  │  Reads: vault Feedback-Tasks/    │              │
│  │  Routes based on area:           │              │
│  │    frontend → Annie/Jean-Michel  │              │
│  │    backend  → Ernest/Daniel      │              │
│  │    mobile   → Mae                │              │
│  │    auth     → Clark              │              │
│  │                                  │              │
│  │  Dispatches via:                 │              │
│  │  cursor-ssh agent --print        │              │
│  │    --trust --model auto          │              │
│  │    "<fix this bug prompt>"       │              │
│  └──────────────┬───────────────────┘              │
│                 │                                   │
│                 ▼                                   │
│  ┌──────────────────────────────────┐              │
│  │  CURSOR AGENTS (up to 6)         │              │
│  │                                  │              │
│  │  Work in: ~/worktrees/<heru>/    │              │
│  │  Fix bug → commit → push         │              │
│  │  Update feedback status: fixed    │              │
│  └──────────────┬───────────────────┘              │
└─────────────────┼──────────────────────────────────┘
                  │ git push to develop
                  ▼
┌───────────────────────────────────┐
│  GITHUB (imaginationeverywhere/)  │
│  develop branch updated           │
└──────────┬────────────────────────┘
           │ auto-deploy triggers
     ┌─────┴─────┐
     ▼           ▼
┌─────────┐  ┌─────────────────┐
│ AMPLIFY │  │ EC2 DEVELOP     │
│ (web)   │  │ (backend)       │
│ auto-   │  │ PM2 restart     │
│ deploys │  │ on push         │
└─────────┘  └─────────────────┘
     │
     ▼
  TESTER REFRESHES → SEES FIX

  (Mobile: EAS build → TestFlight/Play Store Internal)

Where Agents Live

QC1 (Mac M4 Pro) at Quik’s house, 100.113.53.80 via Tailscale.

  • Cursor agents run there using cursor-ssh wrapper (~/.local/bin/cursor-ssh)
  • Haiku dispatcher (haiku-dispatcher.js) runs on QC1 cron every 5 minutes
  • Reads new feedback tasks from the vault (synced from S3)
  • Dispatches the right Cursor agent based on area (frontend/backend/mobile/auth)
  • Up to 6 concurrent agents

The Flow (End to End)

  1. Tester taps Ida widget → submits bug with screenshot/text/voice
  2. Clara Backend (EC2) receives POST /api/feedback → stores in DB → uploads media to S3
  3. Sonnet classifies: bug / feature / question
  4. Slack maat-agents gets notification (Mo sees it)
  5. Vault gets task file at ~/auset-brain/Feedback-Tasks/<heru>/<id>.md
  6. Haiku dispatcher (QC1 cron) reads new task → routes to correct agent
  7. Cursor agent (QC1) fixes the bug on develop branch → commits → pushes
  8. Amplify auto-deploys web; EC2 restarts backend; EAS builds mobile
  9. Tester refreshes → sees fix. Widget shows “Fixed” status.

Models Used

ComponentModelWhereCost
ClassificationSonnet 4.6Clara Backend (EC2)Max plan
Dispatch routingHaiku 4.5QC1 (haiku-dispatcher.js)Max plan
Code fixesCursor agent (auto)QC1 (cursor-ssh)Cursor subscription
Slack formatNone (template)Clara Backend$0