Diagrams
The published architecture diagram for Hermes-Relay.
Files
| File | Role |
|---|---|
architecture-homepage.svg |
Published asset — scalable, dependency-free. Embedded at the top of the docs Architecture page; a copy lives at user-docs/public/architecture-homepage.svg. |
architecture-homepage.png |
2× raster fallback — used in the root README.md (GitHub renders PNG reliably; relative SVG can be sanitized). |
architecture-homepage.excalidraw |
Editable source in Excalidraw format. Open at excalidraw.com or the VS Code Excalidraw extension to tweak and export. |
One model, three representations — keep them in sync
The same connection/capability model is drawn for three audiences. When the architecture changes, update all three, then re-copy the SVG and refresh the PNG:
docs/path-architecture.html— full engineering reference (transport resolution, the build-flavor axis). Source of truth for detail.user-docs/.vitepress/theme/components/CombineModel.vue— the interactive "how the pieces combine" tiers in the docs site.docs/diagrams/architecture-homepage.{svg,excalidraw}— the at-a-glance overview (this folder), mirrored touser-docs/public/and the README PNG.
Canonical gating facts they all derive from: app/src/main/kotlin/com/hermesandroid/relay/data/FeatureFlags.kt (BuildFlavor) and docs/upstream-surface-matrix.md.
Regenerating
- Edit the SVG directly (plain SVG, system fonts) — or edit the
.excalidrawin Excalidraw and export to SVG. - Refresh the PNG the easy way: open the SVG in a browser and "save/export as image." Or reproducibly, via the excalidraw-diagram skill's Chromium (no network needed for a local SVG):
REPO=/path/to/hermes-relay cd ~/.agents/skills/excalidraw-diagram/references uv run python - "$REPO/docs/diagrams/architecture-homepage.svg" <<'PY' import sys from pathlib import Path from playwright.sync_api import sync_playwright svg = Path(sys.argv[1]).resolve(); out = svg.with_suffix(".png") with sync_playwright() as p: b = p.chromium.launch(headless=True) pg = b.new_page(viewport={"width": 1240, "height": 596}, device_scale_factor=2) pg.goto(svg.as_uri()); pg.wait_for_timeout(500); pg.screenshot(path=str(out)); b.close() print(out) PY - Render the
.excalidraw→ PNG via the skill (needs the headless browser to reachesm.sh, i.e. a network-capable terminal):cd ~/.agents/skills/excalidraw-diagram/references uv run python render_excalidraw.py "$REPO/docs/diagrams/architecture-homepage.excalidraw" - After changing the SVG, re-copy it to
user-docs/public/architecture-homepage.svg.