Skip to content

System Architecture — Mermaid Diagrams

Extracted from the retired Studio ⬡ System Architecture panel. 8 diagrams covering full information flow.


1. Overall Architecture

Full information flow: capture → routing → processing → memory → surface.

mermaid
flowchart TB
    subgraph CAPTURE["CAPTURE LAYER"]
        TG["Telegram bot"]
        WC["Obsidian Web Clipper"]
        SIRI["Apple Shortcut + Siri"]
        MANUAL["Manual file drop"]
        EXCEL["Excel · OneDrive<br/>bodybuilding input"]
    end
    INBOX[("Inbox")]
    TG --> INBOX
    WC --> INBOX
    SIRI --> INBOX
    MANUAL --> INBOX
    EXCEL -->|"update-bodybuilding.py"| BB_JSON["logs/bodybuilding-latest.json"]
    subgraph ROUTING["ROUTING LAYER · Canary (Tier-H)"]
        ORG["canary-organiser<br/>Robin · Nami · Vegapunk · Jinbe"]
    end
    INBOX -->|"process-inbox"| ORG
    subgraph PROCESSING["PROCESSING LAYER · Tier-S per Commander"]
        KAKASHI["kakashi-work"]
        ZORO["zoro-fitness"]
        BULMA["bulma-finances"]
        SQUID["squidward-music"]
        ZUKO["zuko-career"]
    end
    ORG --> KAKASHI & ZORO & BULMA & SQUID & ZUKO
    subgraph MEMORY["MEMORY LAYER"]
        MEM["memory/MEMORY.md"]
        SESSIONS["session-logs/"]
    end
    KAKASHI -.session end.- MEM
    ZUKO -.session end.- MEM
    MEM -.archive.- SESSIONS
    subgraph Z2["Z2 LAYER · Proxmox · 192.168.1.191"]
        VAULT_SYNC["vault-sync · every 15 min"]
        BRIEFING_SVC["morning-briefing · 07:00"]
        ORC_SVC["orochimaru · 08:30 + 21:00<br/>full scout Sun"]
        TG_DAEMON["telegram-bot · CT106<br/>persistent daemon"]
    end
    SESSIONS --> ORC_SVC
    ORC_SVC --> BRIEFING_SVC
    subgraph CF["CLOUDFLARE LAYER"]
        WORKER["hinata-studio-api Worker"]
        D1[("D1 database")]
        PAGES["Hinata Studio · Pages"]
    end
    subgraph SURFACE["SURFACE LAYER"]
        STUDIO["Hinata Studio<br/>local dev · localhost:5173"]
        TG_OUT["Telegram · briefing + replies"]
        BRIEFINGS["briefings/ YYYY-MM-DD.md"]
    end
    BRIEFING_SVC --> TG_OUT
    BRIEFING_SVC --> BRIEFINGS
    BB_JSON -->|"/api/bodybuilding"| STUDIO
    WORKER --> D1
    WORKER -.prod.- PAGES
    ORC_SVC -.scout findings.- STUDIO

2. Orchestrator–Worker

How the General delegates to Commanders — each in its own context window.

mermaid
flowchart LR
    USER(["You"]) -->|"task"| HINATA["Hinata · General<br/>main context window"]
    subgraph CANARY["Canary context · Tier-H routing only"]
        ORG["canary-organiser"]
        ORG_T["Robin · Nami · Vegapunk<br/>Jinbe · Rick"]
        ORG --- ORG_T
    end
    HINATA -->|"/process-inbox"| ORG
    INBOX[("Inbox")]
    CONTEXTS[("Commander<br/>context.md files")]
    ORG -->|"reads"| INBOX
    ORG -->|"reads"| CONTEXTS
    subgraph KAKASHI_CTX["kakashi-work context · Tier-S"]
        KA["kakashi-work"]
        KA_T["Read · Write · Edit · Glob · Grep"]
        KA --- KA_T
    end
    subgraph ZUKO_CTX["zuko-career context · Tier-S"]
        ZU["zuko-career"]
        ZU_T["Read · Write · Edit · Glob · Grep"]
        ZU --- ZU_T
    end
    subgraph JIMMY_CTX["jimmy-neutron context · Tier-S"]
        JN["jimmy-neutron-brain-ops"]
        JN_T["Read · Write · Edit · Glob · Grep"]
        JN --- JN_T
    end
    subgraph TOOLS_CTX["tools-ops context · Bash"]
        TO["tools-ops"]
        TO_T["Bash · Read · Write · Glob"]
        TO --- TO_T
    end
    ORG -->|"work item"| KA
    ORG -->|"career item"| ZU
    HINATA -->|"vault scripts"| JN
    HINATA -->|"transforms"| TO
    KA -.summary only.- HINATA
    ZU -.summary only.- HINATA
    JN -.summary only.- HINATA
    TO -.result only.- HINATA
    HINATA -->|"reply"| USER

3. Tools & Scout Loop

How Orochimaru closes the optimisation loop — Mac LaunchAgents + Z2 timers.

mermaid
flowchart TB
    subgraph MAC["MAC LAYER · LaunchAgents"]
        LA_ORO["com.hinata.orochimaru-evening<br/>21:00 daily"]
        LA_BRIEF["com.hinata.morning-briefing<br/>07:00 daily"]
        LA_NORM["com.hinata.normalise-inbox<br/>07:05 daily"]
    end
    subgraph Z2_CRON["Z2 LAYER · systemd timers"]
        Z2_SYNC["vault-sync · every 15 min"]
        Z2_BRIEF["morning-briefing · 07:00"]
        Z2_ORO_AM["orochimaru-morning · 08:30"]
        Z2_ORO_PM["orochimaru-evening · 21:00"]
        Z2_SCOUT["full-scout · Sun 21:00"]
    end
    SESSIONS[("session-logs/<br/>chat-history-learnings.md")]
    subgraph OROCHI["Orochimaru · orochimaru-scout agent"]
        OR_AGENT["reads 7 days of session logs"]
        OR_WEB["Sunday · web search<br/>tooling ecosystem scan"]
        OR_AGENT --> OR_WEB
    end
    LA_ORO --> OR_AGENT
    Z2_ORO_PM --> OR_AGENT
    Z2_SCOUT --> OR_AGENT
    OR_AGENT -->|"reads"| SESSIONS
    SCOUT_OUT["orochimaru-scout/weekly-scout-DATE.md<br/>costly patterns · scripts to propose"]
    OR_AGENT --> SCOUT_OUT
    BRIEFING["Morning briefing · Tool Opportunities section"]
    SCOUT_OUT --> BRIEFING
    LA_BRIEF --> BRIEFING
    Z2_BRIEF --> BRIEFING
    DECISIONS{"Implement / Defer / Reject"}
    BRIEFING --> DECISIONS
    DECISIONS -->|"implement"| JIMMY["Jimmy Neutron<br/>builds LaunchAgent or script"]
    JIMMY -.new tool.- MAC
    DECISIONS --> MEM["MEMORY.md open loop"]

4. Gym & Health Pipeline

Excel input → Python → Studio. Google Fit sessions + routes. PostureViewer 3D.

mermaid
flowchart TB
    subgraph INPUT["INPUT · phone"]
        EXCEL_IN(["Excel · OneDrive<br/>Full Body tab — 1 input tab"])
        HEVY(["Hevy app · future"])
    end
    subgraph PIPELINE["PIPELINE · Mac daily script"]
        UPDATE["update-bodybuilding.py<br/>runs daily"]
        BB_JSON["logs/bodybuilding-latest.json<br/>14d metrics · weekly reps · drift · recommendation"]
        EXCEL_IN --> UPDATE --> BB_JSON
    end
    subgraph FIT["GOOGLE FIT · OAuth2 REST API"]
        FIT_DAILY["/api/google-fit<br/>30-day daily aggregate<br/>steps · calories · heart rate"]
        FIT_SESS["/api/google-fit/sessions<br/>90-day activity sessions"]
        FIT_ROUTE["/api/google-fit/route<br/>GPS polyline · Leaflet map"]
        FIT_TOKEN["fit_token.json · Itachi"]
        FIT_TOKEN -.auth.- FIT_DAILY
    end
    subgraph POSTURE["POSTURE · local API"]
        POSE_SNAP["/api/posture-snapshots<br/>MediaPipe landmarks JSON"]
        POSE_GLB["/api/posture-skeleton<br/>human-skeleton-decimated.glb"]
    end
    subgraph STUDIO_ZORO["STUDIO · Zoro tab · Gym Analytics view"]
        BB_VIEW["BodybuildingView<br/>4wk MA donut · drift table<br/>stacked weekly bars · recommendation"]
        FIT_VIEW["GoogleFitView<br/>steps chart · sessions list · Leaflet route map"]
        POSTURE_VIEW["PostureViewer<br/>Three.js 3D · stick figure overlay<br/>OrbitControls · metrics panel"]
        BODY_VIEW["BodyViewer · measurements"]
        BB_VIEW --> FIT_VIEW
    end
    BB_JSON -->|"/api/bodybuilding"| BB_VIEW
    FIT_DAILY -->|"fetch"| FIT_VIEW
    FIT_SESS -->|"fetch"| FIT_VIEW
    FIT_ROUTE -->|"fetch on select"| FIT_VIEW
    POSE_SNAP -->|"fetch"| POSTURE_VIEW
    POSE_GLB -->|"fetch"| POSTURE_VIEW
    HEVY -.future /api/hevy.- BB_VIEW

5. Layered Architecture

Seven-layer model — Mac + Z2 + Cloudflare.

mermaid
flowchart TB
    subgraph L1["LAYER 1 — SCHEMA · most stable"]
        L1A["CLAUDE.md · vault constitution"]
        L1B["Commander context.md files · 25 Commanders"]
        L1C["Skills in ~/.claude/skills/"]
    end
    subgraph L2["LAYER 2 — CAPTURE · high churn"]
        L2A["Inbox/ permissive catch-all"]
        L2B["Telegram two-way · CT106 daemon"]
        L2C["Apple Shortcuts + Siri · audio + text"]
        L2D["Excel OneDrive · bodybuilding input"]
    end
    subgraph L3["LAYER 3 — ROUTING · stateless"]
        L3A["Canary organiser · Tier-H"]
        L3B["normalise-inbox · 07:05 LaunchAgent"]
    end
    subgraph L4["LAYER 4 — PROCESSING · transforms"]
        L4A["5-Colonel Commanders · Tier-S"]
        L4B["tools-ops · Bash"]
        L4C["Python scripts · deterministic · Sandpit/hinata/scripts/"]
    end
    subgraph L5["LAYER 5 — MEMORY · continuity"]
        L5A["memory/MEMORY.md"]
        L5B["the-government/ · Diataxis-classified output"]
    end
    subgraph L6["LAYER 6 — INFRASTRUCTURE · always-on"]
        L6A["Z2 Proxmox · 192.168.1.191<br/>34 systemd timers · CT100-CT107"]
        L6B["Cloudflare Worker · hinata-studio-api<br/>D1 database · 17 endpoints"]
        L6C["LaunchAgents · Mac · 21 irreducibly Mac-locked"]
    end
    subgraph L7["LAYER 7 — SURFACE · consumption"]
        L7A["Hinata Studio · localhost:5173 / Cloudflare Pages"]
        L7B["Telegram · briefings + on-demand replies"]
        L7C["the-government/ reference docs · Obsidian"]
    end
    L1 -.shapes.- L3 & L4
    L2 --> L3 --> L4 --> L5
    L4 --> L7
    L5 -.read at start.- L4
    L6 -.runs.- L4
    L6 --> L7
    META["Orochimaru · watches L4+L5<br/>recommends L1+L4 changes"]
    L4 -.patterns.- META
    L5 -.usage.- META

6. Maturity Sequence

Actual build sequence — named stages, current position Jun 2026 (~68% complete).

mermaid
flowchart TB
    S0["Foundation · Apr 2026 · 8%<br/>Vault structure · Commander hierarchy · CLAUDE.md"]:::done
    S1["Commander System · May 2026 · +12%<br/>25 Commanders · 5-Colonel structure · context.md per agent"]:::done
    S2["Canary Pipeline · May 2026 · +10%<br/>Inbox routing · Vegapunk · Nami scoring · Jinbe hold"]:::done
    S3["Session Memory · May 2026 · +8%<br/>MEMORY.md · file-based memory · session logs"]:::done
    S4["Music and Creative · May 2026 · +7%<br/>Squidward · chord charts · study pipeline · hinata-theory"]:::done
    S5["Hinata Studio · May 2026 · +8%<br/>React SPA · Dashboard · Mastery · Skill Trees"]:::done
    S6["Career and Work Pipeline · May 2026 · +10%<br/>Kakashi VMO2 · Zuko career · EE products · job applications"]:::done
    S7["Orochimaru Intelligence · May 2026 · +5%<br/>Daily/weekly/monthly cadence · session-reader · growth-filter"]:::done
    S8A["Tools and Automation · May–Sep 2026 · +8%<br/>Z2 Proxmox live · LaunchAgents migrated · voice capture<br/>Cloudflare Tunnel · 7 response templates · French SRS"]:::active
    S8B["Career Acceleration Sprint · May–Sep 2026 · +4%<br/>dbt cert · portfolio deploy · salary benchmarking<br/>michael_context.md"]:::active
    S9["Health and Biometric Pipeline · Sep 2026–Jan 2027 · +7%<br/>Apple Health HealthKit · fatigue analytics · sleep tracking<br/>gym progression model · PostureScreen baseline"]:::planned
    S10["Financial Intelligence · Jan–May 2027 · +6%<br/>Open banking · savings tracker · salary model · Finance dashboard"]:::planned
    S11["Social and Relationship Graph · speculative<br/>Killua map · Lelouch CRM · outreach cadence"]:::spec
    S12["Studio Backend + API · speculative<br/>Node API · Postgres · Vault-DB sync · WebSocket"]:::spec
    S13["End State · speculative<br/>Mobile app · Minato live · speaker ID · autonomous briefings"]:::spec
    S0 --> S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 --> S8A & S8B
    S8A --> S9
    S8B --> S9
    S9 --> S10 --> S11 --> S12 --> S13
    classDef done    fill:#1a2e1a,stroke:#22c55e,color:#86efac
    classDef active  fill:#1a2334,stroke:#3b82f6,color:#93c5fd
    classDef planned fill:#1e1a2e,stroke:#6366f1,color:#a5b4fc
    classDef spec    fill:#1a1a1a,stroke:#475569,color:#64748b

7. Telegram Two-Way Flow

Phone → Z2 daemon → vault → Commander → reply.

mermaid
sequenceDiagram
    actor You as You (phone)
    participant TG as Telegram
    participant Z2 as Z2 CT106 daemon
    participant POLLER as hinata-bot-poller.py
    participant HINATA as Hinata · the CLI
    participant VAULT as Obsidian vault
    participant CMDR as Commander subagent

    You->>TG: voice note or text
    TG->>Z2: polling every 30s
    Z2->>VAULT: vault-sync pulls latest
    Z2->>TG: routes to inbox or replies direct

    alt session is active on Mac
        TG->>POLLER: Mac poller also polls
        POLLER->>HINATA: inject as inbox item
        HINATA->>VAULT: read CLAUDE.md + memory
        HINATA->>VAULT: read relevant context.md
    end

    alt domain-specific task
        HINATA->>CMDR: invoke Commander
        CMDR->>VAULT: read domain files
        CMDR-->>HINATA: summary only
    end

    HINATA->>VAULT: write session log
    HINATA->>TG: reply via send-telegram.sh
    TG->>You: response on phone

    Note over Z2,VAULT: Z2 owns always-on briefings and Orochimaru crons

8. Z2 Infrastructure Stack

Z2 Proxmox · 192.168.1.191 · Debian 12.

mermaid
flowchart TB
    subgraph Z2["Z2 · Proxmox · 192.168.1.191"]
        subgraph SECRETS["/etc/hinata/secrets.env · 640 root:hinata"]
            SEC["TELEGRAM_BOT_TOKEN<br/>TELEGRAM_CHAT_ID<br/>ANTHROPIC_API_KEY"]
        end
        subgraph TIMERS["systemd timers · Europe/London TZ"]
            T1["vault-sync.timer<br/>every 15 min"]
            T2["morning-briefing.timer<br/>07:00 daily"]
            T3["orochimaru-morning.timer<br/>08:30 daily"]
            T4["orochimaru-evening.timer<br/>21:00 daily"]
            T5["orochimaru-full-scout.timer<br/>Sun 21:00"]
        end
        subgraph DAEMON["persistent service · CT106"]
            BOT["telegram-bot.service<br/>Restart=on-failure · RestartSec=15s"]
        end
        subgraph CONTAINERS["LXC Containers"]
            CT100["CT100 · jimmy-postgres"]
            CT102["CT102 · mail-poller"]
            CT103["CT103 · itachi-security · Vaultwarden"]
            CT106["CT106 · telegram-bot"]
            CT107["CT107 · memory fold"]
        end
    end
    GITHUB[("mnnamah/hinata-v2<br/>GitHub · read-only")]
    TELEGRAM(["Telegram<br/>Michael phone"])
    T1 --> GITHUB
    T2 --> TELEGRAM
    BOT --> TELEGRAM
    VAULT["/opt/vault/<br/>bind-mounted read-only"]
    T1 --> VAULT

All diagrams updated for Z2 migration (VPS references replaced). Render in Obsidian or any Mermaid-compatible viewer.