diff --git a/flow.html b/flow.html new file mode 100644 index 0000000..b19bbb0 --- /dev/null +++ b/flow.html @@ -0,0 +1,91 @@ + + + + + + NxM Agent Architecture + + + +

NxM Agent Architecture

+

Communication flow between agents and services  ·  ← home

+
+
+%%{init: {'theme': 'dark', 'themeVariables': {'primaryColor': '#21262d', 'primaryTextColor': '#c9d1d9', 'primaryBorderColor': '#30363d', 'lineColor': '#58a6ff', 'secondaryColor': '#161b22', 'tertiaryColor': '#0d1117', 'edgeLabelBackground': '#0d1117'}}}%%
+flowchart TD
+    subgraph sched ["Scheduler"]
+        cron_bran["⏰ cron 06:00 daily"]
+        cron_varys["⏰ cron every 15 min"]
+    end
+
+    subgraph agents ["One-Shot Agents"]
+        bran["bran-changelog"]
+        varys["varys-monitor"]
+    end
+
+    subgraph external ["External Sources"]
+        github["GitHub API"]
+        opnsense["OPNsense changelog"]
+    end
+
+    subgraph llm ["LLM Layer"]
+        hodor["hodor-gateway :8200"]
+        ollama["Ollama :11434"]
+    end
+
+    subgraph infra ["Infrastructure — 12 services"]
+        svc["portainer · gitea · open-webui · npm\nuptime-kuma · headscale · vaultwarden\nplane · homarr · netbox · hodor · citadel"]
+    end
+
+    subgraph storage ["Shared Storage — /opt/"]
+        sites["sites/\nchangelog/  varys/  bran/"]
+        agentOS["agent-os/logs/\nbran-changelog/  varys-monitor/"]
+    end
+
+    subgraph serving ["Serving Layer"]
+        nginx["agent-sites nginx"]
+        citadel["citadel-mcp :8300"]
+    end
+
+    subgraph gui ["User Interface"]
+        web["agents.nxm.co.za"]
+        openwebui["Open WebUI :3010"]
+    end
+
+    cron_bran --> bran
+    cron_varys --> varys
+
+    bran -->|fetch releases| github
+    bran -->|fetch changelog| opnsense
+    github --> bran
+    opnsense --> bran
+    bran -->|POST /ask| hodor
+    hodor <-->|api/chat| ollama
+    hodor --> bran
+
+    varys -->|HTTP GET| svc
+
+    bran -->|index.html + last-output.md| sites
+    bran -->|last-run.json| agentOS
+    varys -->|index.html + last-output.md| sites
+    varys -->|last-run.json| agentOS
+
+    sites --> nginx
+    nginx -->|NPM proxy| web
+
+    agentOS -->|list_agents / get_agent_status| citadel
+    sites -->|get_agent_output| citadel
+    citadel -->|MCP tools| openwebui
+    
+
+ + + +