Appearance
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.- STUDIO2. 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"| USER3. 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_VIEW5. 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.- META6. 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:#64748b7. 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 crons8. 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 --> VAULTAll diagrams updated for Z2 migration (VPS references replaced). Render in Obsidian or any Mermaid-compatible viewer.