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 |