# Phase 7.2 — diagram manifest # # Machine-readable index for the templates. `alt` is copied verbatim from each # file's , so the text a screen reader gets and the text in this manifest # are the same string. version: 1 authored: 2026-10-26 viewbox: "0 0 960 540" themes: [light, dark] # both resolved from one file via prefers-color-scheme format: svg-text # real text nodes, not glyph outlines external_refs: none # no fonts, images or scripts referenced presentation: desktop: {css_width: "100%", rendered_type_px: [15, 13]} mobile: wrap: "overflow-x:auto" css: "svg{display:block;width:100%;min-width:900px;height:auto}" rendered_type_px: [14.1, 12.2] diagrams: - id: platform-homelab-topology file: 01-homelab-topology.svg area: platform level: 2 title: "Homelab topology" answers: "where it runs, and where the trust boundaries are" alt: "Three hosts with their roles and the trust boundaries between them: public internet reaches Caddy on .35, which forwards over the LAN to services bound to 127.0.0.1 on .13. .27 is build and dev with no public listeners." bytes: 7079 - id: ai-agent-architecture file: 02-agent-architecture.svg area: ai level: 2 title: "Agent architecture" answers: "how the agent estate is organised, and why there is one gateway" alt: "The operator reaches a fleet of agent sessions through one inbox. Paperclip is the control plane and delegates to peer projects, which answer the Hub read-only. Every model call in the estate passes through one gateway, OmniRoute." bytes: 6027 - id: ai-rag-pipeline file: 03-rag-pipeline.svg area: ai level: 2 title: "Retrieval pipeline" answers: "which side of the pipeline is AI and which side is not" alt: "Left, offline ingest: content files are validated, chunked with metadata, embedded and upserted into Qdrant, while the same files render to static pages with no AI in the path. Right, per-visitor query: guardrail, query graph, filtered retrieval, then a streamed answer with citations." bytes: 7010 - id: edge-architecture file: 04-edge-architecture.svg area: edge level: 2 title: "Edge architecture" answers: "why devices never talk to each other directly" alt: "Constrained devices publish over LoRa, Zigbee or WiFi to a single MQTT broker, which feeds one automation layer that drives actuation. Retained configuration, telemetry and last-will presence let devices recover unattended." bytes: 6896 - id: edge-distributed-audio file: 05-distributed-audio.svg area: edge level: 2 title: "Distributed audio" answers: "how eight endpoints stay in sync, and how voice gets in" alt: "Music and speech sources feed one Snapcast server, which streams one clock-synchronised mix to eight Pi endpoints. Voice announcements arrive as a priority lane: duck the music, speak, restore." bytes: 6833 - id: products-media-pipeline file: 06-media-pipeline.svg area: products level: 2 title: "Media pipeline" answers: "where the human gate sits in a media pipeline" alt: "Five stages from download to library: fingerprinting gives every file a natural key so re-runs converge, audit verifies the copy, and review is a deliberate human gate before anything is published." bytes: 5694 - id: platform-cost-resource-engineering file: 07-cost-resource-engineering.svg area: platform level: 2 title: "Cost and resource engineering" answers: "the memory ceiling, drawn to scale from measured caps" alt: "A bar chart of the per-service memory caps drawn to scale against the 1024 MiB ceiling, totalling 970 MiB across four containers, beside the rules that hold the ceiling: equal memory and swap limits, loopback binding, a hard container count and a cost ceiling." bytes: 6151 - id: history-era-timeline file: 08-era-timeline.svg area: history level: 2 title: "Era timeline" answers: "five platform shifts and what survived them" alt: "Five consecutive platform eras from Flash and ActionScript through jQuery and PHP, React and TypeScript, server-driven Go with HTMX, to agent systems, on an axis from 2000 to 2026. Era boundaries are approximate; the bands show order." bytes: 6039