diff --git a/docs/web-ui.md b/docs/web-ui.md
index ada63831..84179763 100644
--- a/docs/web-ui.md
+++ b/docs/web-ui.md
@@ -140,10 +140,15 @@ cross-page link (`◆ FL0W ◆ →`), not a pane swap.
**Chrome header** (fixed, overlays the active tab pane):
- **Tab strip**: `◆ SW4RM ◆`, `◆ Y3R C4LL ◆`, `◆ SYST3M ◆`,
- `◆ SCH3DUL3S ◆`, and `◆ FL0W ◆ →` (page link). Count pills on
- SW4RM (container count), Y3R C4LL (pending approvals +
- questions), and SCH3DUL3S (active schedules); FL0W pill mirrors
- the operator inbox length (hidden when zero).
+ `◆ SCH3DUL3S ◆`, `◆ M4TR1X ◆ →` (optional page link, see below),
+ and `◆ FL0W ◆ →` (page link). Count pills on SW4RM (container
+ count), Y3R C4LL (pending approvals + questions), and SCH3DUL3S
+ (active schedules); FL0W pill mirrors the operator inbox length
+ (hidden when zero). The M4TR1X → entry is hidden when
+ `hyperhive.matrix.gui.enable = false` (default) so operators
+ without the matrix GUI on don't see a dead link — tabs.js gates
+ the `hidden` attribute on `state.matrix_gui_enabled` from
+ `/api/state` (#607).
- **Notification controls**: `🔔 enable notifications` when
permission ungranted; `🔕 mute / 🔔 unmute` toggle once granted.
Always visible in the chrome regardless of active tab.
@@ -300,6 +305,24 @@ button hard-deletes (`POST /cancel-reminder/{id}`) and a
Lives in the SCH3DUL3S tab alongside operator schedules so the
operator has one place for everything time-fired (#460).
+### M4TR1X page (`/matrix/`, optional)
+
+A static matrix web client (default `pkgs.fluffychat-web`, swappable
+via `hyperhive.matrix.gui.package`) mounted by hive-c0re's dashboard
+router as a sibling `nest_service("/matrix", ServeDir::new(dir))`
+when `hyperhive.matrix.gui.enable = true` + `HIVE_MATRIX_GUI_DIR` env
+points at the dist root. Same-origin with the dashboard; the
+operator opens `/matrix/` in the same tab from the M4TR1X → strip
+entry, logs in once with the in-host tuwunel homeserver URL
+(`http://localhost:8008` or whatever the matrix module exposes),
+then has matrix chat alongside the agent dashboard without leaving
+the host's origin.
+
+v0 same-origin shape via hive-c0re ServeDir (#607 / #610); the
+unified nginx-front re-root to `https://matrix.${hyperhive.domain}`
++ `.well-known/matrix/client` auto-discovery is tracked in #609
+(atlas's lane, post-#15).
+
### FL0W page (`/flow.html`)
A dedicated full-page terminal (not a tab pane — a separate HTML
diff --git a/frontend/packages/dashboard/src/index.html b/frontend/packages/dashboard/src/index.html
index fdd9a62b..2018d737 100644
--- a/frontend/packages/dashboard/src/index.html
+++ b/frontend/packages/dashboard/src/index.html
@@ -45,6 +45,18 @@
+
+
+ ◆ M4TR1X ◆ →
+
+