From ac164077d36337b8693f541a2008fb19dad61853 Mon Sep 17 00:00:00 2001 From: hzhang Date: Sat, 16 May 2026 12:56:12 +0100 Subject: [PATCH] =?UTF-8?q?docs:=20fix=20architecture=20diagram=20?= =?UTF-8?q?=E2=80=94=20plugin=20is=20a=20backend=20client,=20not=20linked?= =?UTF-8?q?=20to=20frontend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The old diagram placed the wakeup arrow under Fabric.Frontend, wrongly implying a frontend<->plugin link. Frontend and OpenclawPlugin are independent peer clients of the Guild/Center backends. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 53 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 4b51dc4..5c26148 100644 --- a/README.md +++ b/README.md @@ -8,30 +8,39 @@ channels as real members through a native channel plugin. ## Architecture ``` - ┌──────────────────────┐ - │ Fabric.Backend │ identity hub (NestJS, :7001) - │ .Center │ users · JWT sessions · agent API - └─────────┬────────────┘ keys · guild-node registry · names - │ registers / introspects - ┌─────────────────┼──────────────────┐ - ▼ ▼ -┌────────────────┐ ┌────────────────┐ -│ Fabric.Backend │ guild node │ Fabric.Backend │ guild node (NestJS, -│ .Guild :7002 │ channels · msgs │ .Guild :7003 │ :700x …) — many nodes -│ realtime·files │ turn engine … │ … │ -└───────┬────────┘ └────────────────┘ - │ socket.io + REST - ▼ -┌────────────────┐ one SPA, reused everywhere -│ Fabric.Frontend│ ──► Fabric.Desktop (Electron shell, bundles the SPA) -│ (React/Vite) │ ──► Fabric.Android (Capacitor shell, bundles the SPA) -└────────────────┘ - ▲ wakeup → dispatch ; reply ← agent -┌────────────────────────┐ -│ Fabric.OpenclawPlugin │ OpenClaw **channel plugin**: agents = members -└────────────────────────┘ + ┌──────────────────────┐ + │ Fabric.Backend │ identity hub (NestJS, + │ .Center :7001 │ :7001) — users · JWT · + └─────────┬────────────┘ agent API keys · node + │ registry · name resolve + registers / │ + introspects ┌─────┴───────┐ + ▼ ▼ + ┌────────────────┐ ┌────────────────┐ + │ Fabric.Backend │ │ Fabric.Backend │ guild nodes + │ .Guild :7002 │ │ .Guild :7003 │ (NestJS) — many + │ chans·msgs·turn│ │ … │ channels, turn + │ engine·realtime│ └────────────────┘ engine, realtime, + │ ·files·canvas │ files, canvas + └───────┬────────┘ + socket.io + REST │ (Center auth for agent keys / guild tokens) + ┌─────────────────┴──────────────────┐ + ▼ independent clients of the ▼ +┌────────────────┐ backends (peers, ┌────────────────────────┐ +│ Fabric.Frontend│ not linked) │ Fabric.OpenclawPlugin │ +│ (React/Vite) │ │ OpenClaw channel plugin │ +│ human web UI │ │ agents = members: │ +└───────┬────────┘ │ wakeup→dispatch, │ + │ bundled, unchanged, into: │ reply→post │ + ├──► Fabric.Desktop (Electron) └────────────────────────┘ + └──► Fabric.Android (Capacitor) ``` +The **frontend** and the **OpenClaw plugin** are independent peer clients of +the Guild/Center backends (socket.io + REST). They never talk to each other: +humans use the frontend; agents are driven by the plugin. Both authenticate +via Center and exchange messages through guild nodes. + ## Repository layout (git submodules) | Submodule | Role |