From 54b6e3224e333032e9b710448ba2bc33b21b134d Mon Sep 17 00:00:00 2001 From: WMJ Ismail Date: Mon, 6 Jul 2026 08:44:07 +0200 Subject: [PATCH] Add Architecture Diagram SVG+Excalidraw, Team Org Chart page+SVG+Excalidraw, update Home TOC --- Architecture-Diagram.md | 9 + FalahOS-Architecture.excalidraw | 3399 +++++++++++++++++++++++++++++ FalahOS-Architecture.svg | 161 ++ FalahOS-Team-Org-Chart.excalidraw | 2415 ++++++++++++++++++++ FalahOS-Team-Org-Chart.md | 62 + FalahOS-Team-Org-Chart.svg | 143 ++ Home.md | 14 +- 7 files changed, 6199 insertions(+), 4 deletions(-) create mode 100644 FalahOS-Architecture.excalidraw create mode 100644 FalahOS-Architecture.svg create mode 100644 FalahOS-Team-Org-Chart.excalidraw create mode 100644 FalahOS-Team-Org-Chart.md create mode 100644 FalahOS-Team-Org-Chart.svg diff --git a/Architecture-Diagram.md b/Architecture-Diagram.md index c50abbd..1818920 100644 --- a/Architecture-Diagram.md +++ b/Architecture-Diagram.md @@ -222,3 +222,12 @@ flowchart TB - **Tailscale** connects all nodes in a mesh VPN (100.x.x.x range) - **Cloudflare** proxies DNS, WAF, and CDN โ€” Traefik handles internal routing - **Imunify360** on cPanel blocks datacenter IPs โ€” MacBook Air residential IP used as bypass + +--- + +## ๐Ÿ“ Interactive Diagrams + +| Format | File | Use | +|--------|------|-----| +| ๐Ÿ–ผ๏ธ **SVG** | [FalahOS-Architecture.svg](./FalahOS-Architecture.svg) | View inline in browser | +| ๐Ÿ“ **Excalidraw** | [FalahOS-Architecture.excalidraw](./FalahOS-Architecture.excalidraw) | Drag onto [excalidraw.com](https://excalidraw.com) to zoom/edit | diff --git a/FalahOS-Architecture.excalidraw b/FalahOS-Architecture.excalidraw new file mode 100644 index 0000000..83106cf --- /dev/null +++ b/FalahOS-Architecture.excalidraw @@ -0,0 +1,3399 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "hermes-agent", + "elements": [ + { + "type": "text", + "id": "title", + "x": 1150, + "y": 10, + "width": 600, + "height": 40, + "angle": 0, + "strokeColor": "#C9A84C", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 30, + "fontFamily": 1, + "text": "FalahOS \u2014 System Architecture", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "FalahOS \u2014 System Architecture", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 1, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_1", + "x": 30, + "y": 55, + "width": 2840, + "height": 130, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "rgba(30,41,59,0.15)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_1_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 2, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_1_t", + "x": 45, + "y": 65, + "width": 2810, + "height": 30, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Users & Channels", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_1", + "originalText": "Users & Channels", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 3, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_2", + "x": 45, + "y": 103, + "width": 250, + "height": 60, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_2_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 4, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_2_t", + "x": 51, + "y": 108, + "width": 240, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 13, + "fontFamily": 1, + "text": "Telegram\nDM + Ops Chat", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_2", + "originalText": "Telegram\nDM + Ops Chat", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 5, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_3", + "x": 315, + "y": 103, + "width": 250, + "height": 60, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_3_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 6, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_3_t", + "x": 321, + "y": 108, + "width": 240, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 13, + "fontFamily": 1, + "text": "WhatsApp\n+6013-225 0691", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_3", + "originalText": "WhatsApp\n+6013-225 0691", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 7, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_4", + "x": 585, + "y": 103, + "width": 350, + "height": 60, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_4_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 8, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_4_t", + "x": 591, + "y": 108, + "width": 340, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 13, + "fontFamily": 1, + "text": "Web Browser\nfalahos.my / ummah / git / auth", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_4", + "originalText": "Web Browser\nfalahos.my / ummah / git / auth", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 9, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_5", + "x": 30, + "y": 195, + "width": 2840, + "height": 110, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "rgba(120,53,15,0.12)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_5_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 10, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_5_t", + "x": 45, + "y": 205, + "width": 2810, + "height": 30, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Cloudflare Edge", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_5", + "originalText": "Cloudflare Edge", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 11, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_6", + "x": 45, + "y": 240, + "width": 200, + "height": 50, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "#78350f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_6_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 12, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_6_t", + "x": 51, + "y": 245, + "width": 190, + "height": 40, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 13, + "fontFamily": 1, + "text": "DNS (Proxied)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_6", + "originalText": "DNS (Proxied)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 13, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_7", + "x": 265, + "y": 240, + "width": 200, + "height": 50, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "#78350f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_7_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 14, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_7_t", + "x": 271, + "y": 245, + "width": 190, + "height": 40, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 13, + "fontFamily": 1, + "text": "WAF Security", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_7", + "originalText": "WAF Security", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 15, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_8", + "x": 485, + "y": 240, + "width": 250, + "height": 50, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "#78350f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_8_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 16, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_8_t", + "x": 491, + "y": 245, + "width": 240, + "height": 40, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 13, + "fontFamily": 1, + "text": "cloudflared Tunnel", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_8", + "originalText": "cloudflared Tunnel", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 17, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_9", + "x": 30, + "y": 315, + "width": 2840, + "height": 580, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "rgba(30,58,95,0.12)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_9_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 18, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_9_t", + "x": 45, + "y": 325, + "width": 2810, + "height": 30, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Docker Swarm Cluster", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_9", + "originalText": "Docker Swarm Cluster", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 19, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_10", + "x": 45, + "y": 360, + "width": 1380, + "height": 480, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "rgba(59,7,100,0.12)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_10_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 20, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_10_t", + "x": 60, + "y": 370, + "width": 1350, + "height": 30, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Synology NAS DS3617xs (100.126.73.29) \u2014 Swarm Manager", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_10", + "originalText": "Synology NAS DS3617xs (100.126.73.29) \u2014 Swarm Manager", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 21, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_11", + "x": 60, + "y": 410, + "width": 320, + "height": 85, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_11_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 22, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_11_t", + "x": 66, + "y": 415, + "width": 352.0, + "height": 75, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Traefik v2 \u2014 Reverse Proxy\nHTTPS routing, TLS termination", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_11", + "originalText": "Traefik v2 \u2014 Reverse Proxy\nHTTPS routing, TLS termination", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 23, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_12", + "x": 395, + "y": 410, + "width": 320, + "height": 85, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_12_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 24, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_12_t", + "x": 401, + "y": 415, + "width": 310, + "height": 75, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Gitea 1.26\ngit.falahos.my (:3080)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_12", + "originalText": "Gitea 1.26\ngit.falahos.my (:3080)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 25, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_13", + "x": 730, + "y": 410, + "width": 320, + "height": 85, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_13_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 26, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_13_t", + "x": 736, + "y": 415, + "width": 310, + "height": 75, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Casdoor\nauth.falahos.my \u2014 Identity Provider", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_13", + "originalText": "Casdoor\nauth.falahos.my \u2014 Identity Provider", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 27, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_14", + "x": 1065, + "y": 410, + "width": 320, + "height": 85, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_14_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 28, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_14_t", + "x": 1071, + "y": 415, + "width": 310, + "height": 75, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "falah-mobile (Next.js)\nfalahos.my frontend", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_14", + "originalText": "falah-mobile (Next.js)\nfalahos.my frontend", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 29, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_15", + "x": 60, + "y": 515, + "width": 320, + "height": 85, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_15_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 30, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_15_t", + "x": 66, + "y": 520, + "width": 310, + "height": 75, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "falah-mobile-staging\nStaging environment", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_15", + "originalText": "falah-mobile-staging\nStaging environment", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 31, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_16", + "x": 395, + "y": 515, + "width": 320, + "height": 85, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_16_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 32, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_16_t", + "x": 401, + "y": 520, + "width": 310, + "height": 75, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "PostgreSQL 16\nMain app database", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_16", + "originalText": "PostgreSQL 16\nMain app database", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 33, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_17", + "x": 730, + "y": 515, + "width": 320, + "height": 85, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_17_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 34, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_17_t", + "x": 736, + "y": 520, + "width": 310, + "height": 75, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Redis 7\nCache layer", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_17", + "originalText": "Redis 7\nCache layer", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 35, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_18", + "x": 1065, + "y": 515, + "width": 320, + "height": 85, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_18_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 36, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_18_t", + "x": 1071, + "y": 520, + "width": 310, + "height": 75, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Casdoor DB (Postgres 16)\nAuth database", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_18", + "originalText": "Casdoor DB (Postgres 16)\nAuth database", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 37, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_19", + "x": 60, + "y": 630, + "width": 1350, + "height": 160, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "rgba(59,7,100,0.08)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_19_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 38, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_19_t", + "x": 75, + "y": 640, + "width": 1320, + "height": 30, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Synology Standalone Containers (40+)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_19", + "originalText": "Synology Standalone Containers (40+)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 39, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_20", + "x": 75, + "y": 665, + "width": 425, + "height": 45, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "#3b0764", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_20_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 40, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_20_t", + "x": 81, + "y": 670, + "width": 615.0, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Falah Umbrel: wallet, app, ramz, ummahid, istore, mocknet, carbon, faraid, halal, redis, api-gateway, postgres", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_20", + "originalText": "Falah Umbrel: wallet, app, ramz, ummahid, istore, mocknet, carbon, faraid, halal, redis, api-gateway, postgres", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 41, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_21", + "x": 515, + "y": 665, + "width": 425, + "height": 45, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "#3b0764", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_21_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 42, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_21_t", + "x": 521, + "y": 670, + "width": 415, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Halal Monitor: postgrest + postgis + nginx", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_21", + "originalText": "Halal Monitor: postgrest + postgis + nginx", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 43, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_22", + "x": 955, + "y": 665, + "width": 425, + "height": 45, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "#3b0764", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_22_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 44, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_22_t", + "x": 961, + "y": 670, + "width": 415, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Karakeep: bookmarking + meilisearch + chrome", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_22", + "originalText": "Karakeep: bookmarking + meilisearch + chrome", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 45, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_23", + "x": 75, + "y": 720, + "width": 425, + "height": 45, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "#3b0764", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_23_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 46, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_23_t", + "x": 81, + "y": 725, + "width": 415, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Mattermost: team chat + db", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_23", + "originalText": "Mattermost: team chat + db", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 47, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_24", + "x": 515, + "y": 720, + "width": 425, + "height": 45, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "#3b0764", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_24_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 48, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_24_t", + "x": 521, + "y": 725, + "width": 415, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Garage S3: Object storage", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_24", + "originalText": "Garage S3: Object storage", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 49, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_25", + "x": 955, + "y": 720, + "width": 425, + "height": 45, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "#3b0764", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_25_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 50, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_25_t", + "x": 961, + "y": 725, + "width": 415, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Falah services: desktop, backend, UI, tunnel, mobile-staging", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_25", + "originalText": "Falah services: desktop, backend, UI, tunnel, mobile-staging", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 51, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_26", + "x": 75, + "y": 775, + "width": 425, + "height": 45, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "#3b0764", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_26_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 52, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_26_t", + "x": 81, + "y": 780, + "width": 415, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Portainer / Dockge x2 / Watchtower", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_26", + "originalText": "Portainer / Dockge x2 / Watchtower", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 53, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_27", + "x": 515, + "y": 775, + "width": 425, + "height": 45, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "#3b0764", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_27_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 54, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_27_t", + "x": 521, + "y": 780, + "width": 415, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Gitea Runners x3 \u2014 CI/CD", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_27", + "originalText": "Gitea Runners x3 \u2014 CI/CD", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 55, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_28", + "x": 955, + "y": 775, + "width": 425, + "height": 45, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "#3b0764", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_28_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 56, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_28_t", + "x": 961, + "y": 780, + "width": 415, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Linkstack / Affine / iStore / Identity-layer / Auth", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_28", + "originalText": "Linkstack / Affine / iStore / Identity-layer / Auth", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 57, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_29", + "x": 75, + "y": 830, + "width": 425, + "height": 45, + "angle": 0, + "strokeColor": "#c084fc", + "backgroundColor": "#3b0764", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_29_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 58, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_29_t", + "x": 81, + "y": 835, + "width": 415, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Faraid-anvil: Foundry (blockchain dev)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_29", + "originalText": "Faraid-anvil: Foundry (blockchain dev)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 59, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_30", + "x": 1440, + "y": 360, + "width": 1450, + "height": 520, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "rgba(6,78,59,0.12)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_30_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 60, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_30_t", + "x": 1455, + "y": 370, + "width": 1420, + "height": 30, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Contabo VPS (13.140.161.244) \u2014 Swarm Worker + Edge", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_30", + "originalText": "Contabo VPS (13.140.161.244) \u2014 Swarm Worker + Edge", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 61, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_31", + "x": 1455, + "y": 410, + "width": 455, + "height": 60, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "#064e3b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_31_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 62, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_31_t", + "x": 1461, + "y": 415, + "width": 445, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Traefik Edge Node\n:80 / :443", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_31", + "originalText": "Traefik Edge Node\n:80 / :443", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 63, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_32", + "x": 1925, + "y": 410, + "width": 455, + "height": 60, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "#064e3b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_32_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 64, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_32_t", + "x": 1931, + "y": 415, + "width": 445, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Hermes Agent\nPrimary orchestrator", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_32", + "originalText": "Hermes Agent\nPrimary orchestrator", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 65, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_33", + "x": 2395, + "y": 410, + "width": 455, + "height": 60, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "#064e3b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_33_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 66, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_33_t", + "x": 2401, + "y": 415, + "width": 445, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Hermes Gateway\nTelegram / WhatsApp bridge", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_33", + "originalText": "Hermes Gateway\nTelegram / WhatsApp bridge", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 67, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_34", + "x": 1455, + "y": 485, + "width": 455, + "height": 60, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "#064e3b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_34_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 68, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_34_t", + "x": 1461, + "y": 490, + "width": 445, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "FalahOS Relay\nTelegram bus (:8088)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_34", + "originalText": "FalahOS Relay\nTelegram bus (:8088)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 69, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_35", + "x": 1925, + "y": 485, + "width": 455, + "height": 60, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "#064e3b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_35_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 70, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_35_t", + "x": 1931, + "y": 490, + "width": 445, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "SSH Tunnel\n-> Mac Mini :17860", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_35", + "originalText": "SSH Tunnel\n-> Mac Mini :17860", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 71, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_36", + "x": 2395, + "y": 485, + "width": 455, + "height": 60, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "#064e3b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_36_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 72, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_36_t", + "x": 2401, + "y": 490, + "width": 445, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "falah-auto-healer\nHourly health checks", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_36", + "originalText": "falah-auto-healer\nHourly health checks", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 73, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_37", + "x": 1455, + "y": 560, + "width": 455, + "height": 60, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "#064e3b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_37_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 74, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_37_t", + "x": 1461, + "y": 565, + "width": 445, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Cron jobs\nContent / health monitoring", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_37", + "originalText": "Cron jobs\nContent / health monitoring", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 75, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_38", + "x": 30, + "y": 905, + "width": 2840, + "height": 130, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "rgba(120,53,15,0.10)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_38_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 76, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_38_t", + "x": 45, + "y": 915, + "width": 2810, + "height": 30, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "cPanel Hosting \u2014 RoketServer (64.20.37.43)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_38", + "originalText": "cPanel Hosting \u2014 RoketServer (64.20.37.43)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 77, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_39", + "x": 45, + "y": 950, + "width": 600, + "height": 70, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "#78350f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_39_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 78, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_39_t", + "x": 51, + "y": 955, + "width": 730.0, + "height": 60, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "ummah.falahos.my \u2014 WordPress\nEDD + MailPoet + bbPress + GamiPress + Tutor LMS + falah-wallet + falah-souq + nur-ai-coach", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_39", + "originalText": "ummah.falahos.my \u2014 WordPress\nEDD + MailPoet + bbPress + GamiPress + Tutor LMS + falah-wallet + falah-souq + nur-ai-coach", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 79, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_40", + "x": 665, + "y": 950, + "width": 350, + "height": 70, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "#78350f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_40_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 80, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_40_t", + "x": 671, + "y": 955, + "width": 340, + "height": 60, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "my.falahos.my\nMonetisation subdomain", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_40", + "originalText": "my.falahos.my\nMonetisation subdomain", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 81, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_41", + "x": 1035, + "y": 950, + "width": 250, + "height": 70, + "angle": 0, + "strokeColor": "#a78bfa", + "backgroundColor": "#4c1d95", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_41_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 82, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_41_t", + "x": 1041, + "y": 955, + "width": 256.0, + "height": 60, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "MySQL (WordPress DB)\nPosts, users, orders", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_41", + "originalText": "MySQL (WordPress DB)\nPosts, users, orders", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 83, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_42", + "x": 30, + "y": 1045, + "width": 2840, + "height": 280, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "rgba(136,19,55,0.10)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_42_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 84, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_42_t", + "x": 45, + "y": 1055, + "width": 2810, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Tailscale Mesh \u2014 AI Agent Fleet", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_42", + "originalText": "Tailscale Mesh \u2014 AI Agent Fleet", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 85, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_43", + "x": 45, + "y": 1090, + "width": 600, + "height": 220, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "rgba(136,19,55,0.08)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_43_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 86, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_43_t", + "x": 60, + "y": 1100, + "width": 570, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Mac Mini (100.72.2.115)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_43", + "originalText": "Mac Mini (100.72.2.115)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 87, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_44", + "x": 60, + "y": 1140, + "width": 265, + "height": 50, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_44_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 88, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_44_t", + "x": 66, + "y": 1145, + "width": 279.5, + "height": 40, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Odysseus\n:7860 \u2014 API / AI chat / email / research", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_44", + "originalText": "Odysseus\n:7860 \u2014 API / AI chat / email / research", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 89, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_45", + "x": 340, + "y": 1140, + "width": 265, + "height": 50, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_45_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 90, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_45_t", + "x": 346, + "y": 1145, + "width": 255, + "height": 40, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Pi\n:4747 \u2014 AI assistant", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_45", + "originalText": "Pi\n:4747 \u2014 AI assistant", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 91, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_46", + "x": 60, + "y": 1200, + "width": 265, + "height": 50, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_46_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 92, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_46_t", + "x": 66, + "y": 1205, + "width": 255, + "height": 40, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "OpenHand\n:3000 \u2014 Autonomous coding agent", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_46", + "originalText": "OpenHand\n:3000 \u2014 Autonomous coding agent", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 93, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_47", + "x": 340, + "y": 1200, + "width": 265, + "height": 50, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_47_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 94, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_47_t", + "x": 346, + "y": 1205, + "width": 255, + "height": 40, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "OpenClaw\n:3100 \u2014 Model provider proxy", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_47", + "originalText": "OpenClaw\n:3100 \u2014 Model provider proxy", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 95, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_48", + "x": 60, + "y": 1260, + "width": 265, + "height": 50, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_48_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 96, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_48_t", + "x": 66, + "y": 1265, + "width": 255, + "height": 40, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Claude Code\nCLI \u2014 Coding assistant", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_48", + "originalText": "Claude Code\nCLI \u2014 Coding assistant", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 97, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_49", + "x": 665, + "y": 1090, + "width": 500, + "height": 100, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "rgba(136,19,55,0.08)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_49_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 98, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_49_t", + "x": 680, + "y": 1100, + "width": 470, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "MacBook Air (100.76.3.26)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_49", + "originalText": "MacBook Air (100.76.3.26)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 99, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_50", + "x": 680, + "y": 1140, + "width": 470, + "height": 40, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_50_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 100, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_50_t", + "x": 686, + "y": 1145, + "width": 460, + "height": 30, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "openclaw MCP (:18789) / hermes cron / pi / opencode / agy / claude", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_50", + "originalText": "openclaw MCP (:18789) / hermes cron / pi / opencode / agy / claude", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 101, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_51", + "x": 1185, + "y": 1090, + "width": 700, + "height": 220, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "rgba(30,41,59,0.12)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_51_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 102, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_51_t", + "x": 1200, + "y": 1100, + "width": 670, + "height": 30, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "External & GitHub", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_51", + "originalText": "External & GitHub", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 103, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_52", + "x": 1200, + "y": 1140, + "width": 320, + "height": 80, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_52_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 104, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_52_t", + "x": 1206, + "y": 1145, + "width": 472.0, + "height": 70, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "GitHub (maifors)\nfaraid-sandbox / falah-umbrel\nfalah-extension / falah-os-sdk", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_52", + "originalText": "GitHub (maifors)\nfaraid-sandbox / falah-umbrel\nfalah-extension / falah-os-sdk", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 105, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_53", + "x": 1535, + "y": 1140, + "width": 160, + "height": 80, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_53_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 106, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_53_t", + "x": 1541, + "y": 1145, + "width": 208.0, + "height": 70, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "PayPal Standard\nwanjauhari@me.com", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_53", + "originalText": "PayPal Standard\nwanjauhari@me.com", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 107, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_54", + "x": 1200, + "y": 1230, + "width": 320, + "height": 40, + "angle": 0, + "strokeColor": "#fb923c", + "backgroundColor": "#78350f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_54_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 108, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_54_t", + "x": 1206, + "y": 1235, + "width": 310, + "height": 30, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "OpenClaw Proxy: DeepSeek v4 / Qwen 3.6", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_54", + "originalText": "OpenClaw Proxy: DeepSeek v4 / Qwen 3.6", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 109, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_55", + "x": 1535, + "y": 1230, + "width": 160, + "height": 40, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_55_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 110, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_55_t", + "x": 1541, + "y": 1235, + "width": 153.0, + "height": 30, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "MCP Servers\n(UI/UX Tester)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_55", + "originalText": "MCP Servers\n(UI/UX Tester)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 111, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + } + ], + "appState": { + "viewBackgroundColor": "#070A0D", + "currentItemStrokeColor": "#E8E4DC", + "currentItemBackgroundColor": "#1e3a5f", + "currentItemFontFamily": 1, + "gridSize": null + } +} \ No newline at end of file diff --git a/FalahOS-Architecture.svg b/FalahOS-Architecture.svg new file mode 100644 index 0000000..2449298 --- /dev/null +++ b/FalahOS-Architecture.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + +Users & Channels + +Telegram +DM + Ops Chat + +WhatsApp ++6013-225 0691 + +Web Browser +falahos.my / ummah / git / auth + +Cloudflare Edge + +DNS (Proxied) + +WAF Security + +cloudflared Tunnel + +Docker Swarm Cluster + +Synology NAS DS3617xs (100.126.73.29) โ€” Swarm Manager + +Traefik v2 โ€” Reverse Proxy +HTTPS routing, TLS termination + +Gitea 1.26 +git.falahos.my (:3080) + +Casdoor +auth.falahos.my โ€” Identity Provider + +falah-mobile (Next.js) +falahos.my frontend + +falah-mobile-staging +Staging environment + +PostgreSQL 16 +Main app database + +Redis 7 +Cache layer + +Casdoor DB (Postgres 16) +Auth database + +Synology Standalone Containers (40+) + +Falah Umbrel: wallet, app, ramz, ummahid, +istore, mocknet, carbon, faraid, halal, +redis, api-gateway, postgres + +Halal Monitor: postgrest + postgis + nginx + +Karakeep: bookmarking + meilisearch + +chrome + +Mattermost: team chat + db + +Garage S3: Object storage + +Falah services: desktop, backend, UI, +tunnel, mobile-staging + +Portainer / Dockge x2 / Watchtower + +Gitea Runners x3 โ€” CI/CD + +Linkstack / Affine / iStore / +Identity-layer / Auth + +Faraid-anvil: Foundry (blockchain dev) + +Contabo VPS (13.140.161.244) โ€” Swarm Worker + Edge + +Traefik Edge Node +:80 / :443 + +Hermes Agent +Primary orchestrator + +Hermes Gateway +Telegram / WhatsApp bridge + +FalahOS Relay +Telegram bus (:8088) + +SSH Tunnel +-> Mac Mini :17860 + +falah-auto-healer +Hourly health checks + +Cron jobs +Content / health monitoring + +cPanel Hosting โ€” RoketServer (64.20.37.43) + +ummah.falahos.my โ€” WordPress +EDD + MailPoet + bbPress + GamiPress + +Tutor LMS + falah-wallet + falah-souq + +nur-ai-coach + +my.falahos.my +Monetisation subdomain + +MySQL (WordPress DB) +Posts, users, orders + +Tailscale Mesh โ€” AI Agent Fleet + +Mac Mini (100.72.2.115) + +Odysseus +:7860 โ€” API / AI chat / email / research + +Pi +:4747 โ€” AI assistant + +OpenHand +:3000 โ€” Autonomous coding agent + +OpenClaw +:3100 โ€” Model provider proxy + +Claude Code +CLI โ€” Coding assistant + +MacBook Air (100.76.3.26) + +openclaw MCP (:18789) / hermes cron / pi +/ opencode / agy / claude + +External & GitHub + +GitHub (maifors) +faraid-sandbox / falah-umbrel +falah-extension / falah-os-sdk + +PayPal Standard +wanjauhari@me.com + +OpenClaw Proxy: DeepSeek v4 / Qwen 3.6 + +MCP Servers +(UI/UX Tester) + \ No newline at end of file diff --git a/FalahOS-Team-Org-Chart.excalidraw b/FalahOS-Team-Org-Chart.excalidraw new file mode 100644 index 0000000..313187b --- /dev/null +++ b/FalahOS-Team-Org-Chart.excalidraw @@ -0,0 +1,2415 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "hermes-agent", + "elements": [ + { + "type": "text", + "id": "title", + "x": 1020, + "y": 10, + "width": 560, + "height": 40, + "angle": 0, + "strokeColor": "#C9A84C", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 30, + "fontFamily": 1, + "text": "FalahOS \u2014 Team & Agent Org Chart", + "textAlign": "center", + "verticalAlign": "top", + "containerId": null, + "originalText": "FalahOS \u2014 Team & Agent Org Chart", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 1, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_1", + "x": 1120, + "y": 65, + "width": 300, + "height": 60, + "angle": 0, + "strokeColor": "#070A0D", + "backgroundColor": "#C9A84C", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_1_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 2, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_1_t", + "x": 1126, + "y": 70, + "width": 290, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 16, + "fontFamily": 1, + "text": "WMJ Ismail \u2014 Founder / Lead", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_1", + "originalText": "WMJ Ismail \u2014 Founder / Lead", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 3, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_2", + "x": 30, + "y": 170, + "width": 490, + "height": 65, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_2_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 4, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_2_t", + "x": 45, + "y": 180, + "width": 460, + "height": 30, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Infrastructure", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_2", + "originalText": "Infrastructure", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 5, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_3", + "x": 40, + "y": 240, + "width": 470, + "height": 80, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_3_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 6, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_3_t", + "x": 46, + "y": 245, + "width": 460, + "height": 70, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Synology / Contabo\nDocker Swarm / Network\nTailscale / Cloudflare", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_3", + "originalText": "Synology / Contabo\nDocker Swarm / Network\nTailscale / Cloudflare", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 7, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_4", + "x": 540, + "y": 170, + "width": 490, + "height": 65, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_4_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 8, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_4_t", + "x": 555, + "y": 180, + "width": 460, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "AI Agent Fleet", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_4", + "originalText": "AI Agent Fleet", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 9, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_5", + "x": 550, + "y": 240, + "width": 470, + "height": 80, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_5_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 10, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_5_t", + "x": 556, + "y": 245, + "width": 460, + "height": 70, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Hermes / Odysseus / Pi\nOpenHand / OpenClaw\nClaude Code (8 agents)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_5", + "originalText": "Hermes / Odysseus / Pi\nOpenHand / OpenClaw\nClaude Code (8 agents)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 11, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_6", + "x": 1050, + "y": 170, + "width": 490, + "height": 65, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "#064e3b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_6_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 12, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_6_t", + "x": 1065, + "y": 180, + "width": 460, + "height": 30, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Development", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_6", + "originalText": "Development", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 13, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_7", + "x": 1060, + "y": 240, + "width": 470, + "height": 80, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "#064e3b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_7_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 14, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_7_t", + "x": 1066, + "y": 245, + "width": 460, + "height": 70, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Falah Mobile (Next.js)\nFalah OS Backend\nFalah Umbrel / Smart Contracts", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_7", + "originalText": "Falah Mobile (Next.js)\nFalah OS Backend\nFalah Umbrel / Smart Contracts", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 15, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_8", + "x": 1560, + "y": 170, + "width": 490, + "height": 65, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "#78350f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_8_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 16, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_8_t", + "x": 1575, + "y": 180, + "width": 460, + "height": 30, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Business & Content", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_8", + "originalText": "Business & Content", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 17, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_9", + "x": 1570, + "y": 240, + "width": 470, + "height": 80, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "#78350f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_9_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 18, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_9_t", + "x": 1576, + "y": 245, + "width": 460, + "height": 70, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "ummah.falahos.my (WP)\nEDD / MailPoet / Courses\nNewsletter / Monetisation", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_9", + "originalText": "ummah.falahos.my (WP)\nEDD / MailPoet / Courses\nNewsletter / Monetisation", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 19, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_10", + "x": 2070, + "y": 170, + "width": 490, + "height": 65, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_10_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 20, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_10_t", + "x": 2085, + "y": 180, + "width": 460, + "height": 30, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "External Ops", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_10", + "originalText": "External Ops", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 21, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_11", + "x": 2080, + "y": 240, + "width": 470, + "height": 80, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_11_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 22, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_11_t", + "x": 2086, + "y": 245, + "width": 460, + "height": 70, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "GitHub Mirroring\nPayPal / Cloudflare\nGitea Administration", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_11", + "originalText": "GitHub Mirroring\nPayPal / Cloudflare\nGitea Administration", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 23, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "arrow", + "id": "a_12", + "x": 1270, + "y": 130, + "width": 995, + "height": 40, + "angle": 0, + "strokeColor": "#C9A84C", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "points": [ + [ + 0, + 0 + ], + [ + -995, + 40 + ] + ], + "endArrowhead": "arrow", + "startBinding": null, + "endBinding": null, + "groupIds": [], + "frameId": null, + "seed": 24, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "arrow", + "id": "a_13", + "x": 1270, + "y": 130, + "width": 485, + "height": 40, + "angle": 0, + "strokeColor": "#C9A84C", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "points": [ + [ + 0, + 0 + ], + [ + -485, + 40 + ] + ], + "endArrowhead": "arrow", + "startBinding": null, + "endBinding": null, + "groupIds": [], + "frameId": null, + "seed": 25, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "arrow", + "id": "a_14", + "x": 1270, + "y": 130, + "width": 25, + "height": 40, + "angle": 0, + "strokeColor": "#C9A84C", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "points": [ + [ + 0, + 0 + ], + [ + 25, + 40 + ] + ], + "endArrowhead": "arrow", + "startBinding": null, + "endBinding": null, + "groupIds": [], + "frameId": null, + "seed": 26, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "arrow", + "id": "a_15", + "x": 1270, + "y": 130, + "width": 535, + "height": 40, + "angle": 0, + "strokeColor": "#C9A84C", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "points": [ + [ + 0, + 0 + ], + [ + 535, + 40 + ] + ], + "endArrowhead": "arrow", + "startBinding": null, + "endBinding": null, + "groupIds": [], + "frameId": null, + "seed": 27, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "arrow", + "id": "a_16", + "x": 1270, + "y": 130, + "width": 1045, + "height": 40, + "angle": 0, + "strokeColor": "#C9A84C", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "points": [ + [ + 0, + 0 + ], + [ + 1045, + 40 + ] + ], + "endArrowhead": "arrow", + "startBinding": null, + "endBinding": null, + "groupIds": [], + "frameId": null, + "seed": 28, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_17", + "x": 30, + "y": 340, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "rgba(136,19,55,0.12)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_17_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 29, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_17_t", + "x": 45, + "y": 350, + "width": 450, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Hermes Agent (Contabo)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_17", + "originalText": "Hermes Agent (Contabo)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 30, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_18", + "x": 40, + "y": 395, + "width": 460, + "height": 80, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_18_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 31, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_18_t", + "x": 46, + "y": 400, + "width": 466.0, + "height": 70, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Primary orchestrator\nSkills/tools/MCP system\nCron scheduler + Telegram relay", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_18", + "originalText": "Primary orchestrator\nSkills/tools/MCP system\nCron scheduler + Telegram relay", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 32, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_19", + "x": 540, + "y": 340, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "rgba(136,19,55,0.12)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_19_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 33, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_19_t", + "x": 555, + "y": 350, + "width": 450, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Odysseus (Mac Mini :7860)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_19", + "originalText": "Odysseus (Mac Mini :7860)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 34, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_20", + "x": 550, + "y": 395, + "width": 460, + "height": 80, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_20_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 35, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_20_t", + "x": 556, + "y": 400, + "width": 496.0, + "height": 70, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "API gateway + AI chat agent\nEmail/docs automation\nWeb research + image generation", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_20", + "originalText": "API gateway + AI chat agent\nEmail/docs automation\nWeb research + image generation", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 36, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_21", + "x": 1050, + "y": 340, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "rgba(136,19,55,0.12)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_21_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 37, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_21_t", + "x": 1065, + "y": 350, + "width": 450, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Pi (Mac Mini :4747)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_21", + "originalText": "Pi (Mac Mini :4747)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 38, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_22", + "x": 1060, + "y": 395, + "width": 460, + "height": 80, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_22_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 39, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_22_t", + "x": 1066, + "y": 400, + "width": 450, + "height": 70, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "AI assistant\nGeneral purpose queries\nSupport agent", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_22", + "originalText": "AI assistant\nGeneral purpose queries\nSupport agent", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 40, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_23", + "x": 30, + "y": 500, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "rgba(136,19,55,0.10)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_23_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 41, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_23_t", + "x": 45, + "y": 510, + "width": 450, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "OpenHand (Mac Mini :3000)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_23", + "originalText": "OpenHand (Mac Mini :3000)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 42, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_24", + "x": 40, + "y": 555, + "width": 460, + "height": 60, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_24_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 43, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_24_t", + "x": 46, + "y": 560, + "width": 450, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Autonomous coding agent\nMulti-step debug + fix\nPlan-write-test loop", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_24", + "originalText": "Autonomous coding agent\nMulti-step debug + fix\nPlan-write-test loop", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 44, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_25", + "x": 540, + "y": 500, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "rgba(136,19,55,0.10)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_25_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 45, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_25_t", + "x": 555, + "y": 510, + "width": 450, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "OpenClaw (Mac Mini :3100)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_25", + "originalText": "OpenClaw (Mac Mini :3100)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 46, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_26", + "x": 550, + "y": 555, + "width": 460, + "height": 60, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_26_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 47, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_26_t", + "x": 556, + "y": 560, + "width": 488.5, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Model provider proxy\n20+ LLMs via OpenAI-compatible API\nBackend for all Mac Mini agents", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_26", + "originalText": "Model provider proxy\n20+ LLMs via OpenAI-compatible API\nBackend for all Mac Mini agents", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 48, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_27", + "x": 1050, + "y": 500, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "rgba(136,19,55,0.10)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_27_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 49, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_27_t", + "x": 1065, + "y": 510, + "width": 450, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Claude Code (Mac Mini CLI)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_27", + "originalText": "Claude Code (Mac Mini CLI)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 50, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_28", + "x": 1060, + "y": 555, + "width": 460, + "height": 60, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_28_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 51, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_28_t", + "x": 1066, + "y": 560, + "width": 450, + "height": 50, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Coding assistant (CLI)\nComplex codebase tasks\nUsed via Hermes delegation", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_28", + "originalText": "Coding assistant (CLI)\nComplex codebase tasks\nUsed via Hermes delegation", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 52, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_29", + "x": 1560, + "y": 340, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "rgba(136,19,55,0.10)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_29_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 53, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_29_t", + "x": 1575, + "y": 350, + "width": 450, + "height": 30, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "MacBook Air Agents", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_29", + "originalText": "MacBook Air Agents", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 54, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_30", + "x": 1570, + "y": 395, + "width": 460, + "height": 220, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_30_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 55, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_30_t", + "x": 1576, + "y": 400, + "width": 952.0, + "height": 210, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "openclaw MCP (:18789) \u2014 Gateway\nhermes cron \u2014 Fallback scheduler\npi \u2014 AI assistant\nopencode \u2014 Premium model access\nagy \u2014 Automation\nclaude \u2014 Coding assistant", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_30", + "originalText": "openclaw MCP (:18789) \u2014 Gateway\nhermes cron \u2014 Fallback scheduler\npi \u2014 AI assistant\nopencode \u2014 Premium model access\nagy \u2014 Automation\nclaude \u2014 Coding assistant", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 56, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_31", + "x": 30, + "y": 650, + "width": 2540, + "height": 350, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "rgba(30,58,95,0.08)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_31_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 57, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_31_t", + "x": 45, + "y": 660, + "width": 2510, + "height": 30, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "Infrastructure \u2014 Machines & Roles", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_31", + "originalText": "Infrastructure \u2014 Machines & Roles", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 58, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_32", + "x": 60, + "y": 705, + "width": 820, + "height": 125, + "angle": 0, + "strokeColor": "#60a5fa", + "backgroundColor": "#1e3a5f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_32_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 59, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_32_t", + "x": 66, + "y": 710, + "width": 814.0, + "height": 115, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Synology DS3617xs\nDocker Swarm Manager\n40+ containers (prod)\nGitea / Casdoor / DBs\nGarage S3 / CI/CD runners\n100.126.73.29 (Tailscale)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_32", + "originalText": "Synology DS3617xs\nDocker Swarm Manager\n40+ containers (prod)\nGitea / Casdoor / DBs\nGarage S3 / CI/CD runners\n100.126.73.29 (Tailscale)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 60, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_33", + "x": 900, + "y": 705, + "width": 820, + "height": 125, + "angle": 0, + "strokeColor": "#34d399", + "backgroundColor": "#064e3b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_33_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 61, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_33_t", + "x": 906, + "y": 710, + "width": 810, + "height": 115, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Contabo VPS\nDocker Swarm Worker\nHermes Agent / Relay\nTraefik edge / Auto-healer\nOpenCode premium proxy\n13.140.161.244", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_33", + "originalText": "Contabo VPS\nDocker Swarm Worker\nHermes Agent / Relay\nTraefik edge / Auto-healer\nOpenCode premium proxy\n13.140.161.244", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 62, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_34", + "x": 1740, + "y": 705, + "width": 820, + "height": 125, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_34_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 63, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_34_t", + "x": 1746, + "y": 710, + "width": 810, + "height": 115, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "Mac Mini\nAgent Fleet Host\nOdysseus / Pi / OpenHand\nOpenClaw / Claude Code\n8GB RAM / macOS 12.7.6\n100.72.2.115 (Tailscale)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_34", + "originalText": "Mac Mini\nAgent Fleet Host\nOdysseus / Pi / OpenHand\nOpenClaw / Claude Code\n8GB RAM / macOS 12.7.6\n100.72.2.115 (Tailscale)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 64, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_35", + "x": 60, + "y": 845, + "width": 820, + "height": 125, + "angle": 0, + "strokeColor": "#fb7185", + "backgroundColor": "#881337", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_35_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 65, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_35_t", + "x": 66, + "y": 850, + "width": 810, + "height": 115, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "MacBook Air\nSecondary Agent Host\nopenclaw MCP / hermes cron\nFallback scheduler\nResidential IP for cPanel\n100.76.3.26 (Tailscale)", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_35", + "originalText": "MacBook Air\nSecondary Agent Host\nopenclaw MCP / hermes cron\nFallback scheduler\nResidential IP for cPanel\n100.76.3.26 (Tailscale)", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 66, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_36", + "x": 900, + "y": 845, + "width": 820, + "height": 125, + "angle": 0, + "strokeColor": "#fbbf24", + "backgroundColor": "#78350f", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_36_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 67, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_36_t", + "x": 906, + "y": 850, + "width": 810, + "height": 115, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 12, + "fontFamily": 1, + "text": "RoketServer cPanel\nWordPress Host\nummah.falahos.my\nmy.falahos.my\nImunify360 security\n64.20.37.43", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_36", + "originalText": "RoketServer cPanel\nWordPress Host\nummah.falahos.my\nmy.falahos.my\nImunify360 security\n64.20.37.43", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 68, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "z_37", + "x": 30, + "y": 1020, + "width": 2540, + "height": 100, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "rgba(30,41,59,0.10)", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "z_37_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 69, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "z_37_t", + "x": 45, + "y": 1030, + "width": 2510, + "height": 30, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 22, + "fontFamily": 1, + "text": "External Services & Platforms", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "z_37", + "originalText": "External Services & Platforms", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 70, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_38", + "x": 45, + "y": 1065, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_38_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 71, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_38_t", + "x": 51, + "y": 1070, + "width": 470, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "GitHub (maifors) \u2014 faraid-sandbox, falah-umbrel, falah-extension, falah-os-sdk", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_38", + "originalText": "GitHub (maifors) \u2014 faraid-sandbox, falah-umbrel, falah-extension, falah-os-sdk", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 72, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_39", + "x": 545, + "y": 1065, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_39_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 73, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_39_t", + "x": 551, + "y": 1070, + "width": 470, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "Cloudflare \u2014 DNS / WAF / CDN / cloudflared tunnels", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_39", + "originalText": "Cloudflare \u2014 DNS / WAF / CDN / cloudflared tunnels", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 74, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_40", + "x": 1045, + "y": 1065, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_40_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 75, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_40_t", + "x": 1051, + "y": 1070, + "width": 470, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "PayPal Standard \u2014 wanjauhari@me.com", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_40", + "originalText": "PayPal Standard \u2014 wanjauhari@me.com", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 76, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "rectangle", + "id": "r_41", + "x": 1545, + "y": 1065, + "width": 480, + "height": 45, + "angle": 0, + "strokeColor": "#94a3b8", + "backgroundColor": "#1e293b", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "id": "r_41_t", + "type": "text" + } + ], + "groupIds": [], + "frameId": null, + "seed": 77, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + }, + { + "type": "text", + "id": "r_41_t", + "x": 1551, + "y": 1070, + "width": 470, + "height": 35, + "angle": 0, + "strokeColor": "#E8E4DC", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "roughness": 1, + "opacity": 100, + "fontSize": 11, + "fontFamily": 1, + "text": "OpenCode / OpenClaw Proxy \u2014 Premium LLM access", + "textAlign": "left", + "verticalAlign": "top", + "containerId": "r_41", + "originalText": "OpenCode / OpenClaw Proxy \u2014 Premium LLM access", + "autoResize": true, + "groupIds": [], + "frameId": null, + "seed": 78, + "version": 1, + "isDeleted": false, + "updated": 1, + "customData": {} + } + ], + "appState": { + "viewBackgroundColor": "#070A0D", + "currentItemStrokeColor": "#E8E4DC", + "currentItemBackgroundColor": "#1e3a5f", + "currentItemFontFamily": 1, + "gridSize": null + } +} \ No newline at end of file diff --git a/FalahOS-Team-Org-Chart.md b/FalahOS-Team-Org-Chart.md new file mode 100644 index 0000000..577f369 --- /dev/null +++ b/FalahOS-Team-Org-Chart.md @@ -0,0 +1,62 @@ +# FalahOS โ€” Team & Agent Org Chart + +Organisational structure of the FalahOS team โ€” human founder, AI agent fleet, infrastructure divisions, and external services. + +--- + +## ๐Ÿง‘โ€๐Ÿ’ผ Leadership + +| Role | Name | Responsibility | +|------|------|---------------| +| **Founder / Lead** | WMJ Ismail | Overall direction, product vision, infrastructure decisions, monetisation strategy | + +--- + +## ๐Ÿ—๏ธ Divisions + +### Infrastructure +| Machine | Role | Key Services | +|---------|------|-------------| +| **Synology DS3617xs** | Swarm Manager + Host | 40+ containers, Gitea, Casdoor, DBs, Garage S3, CI/CD | +| **Contabo VPS** | Swarm Worker + Edge | Hermes Agent, Relay, Traefik edge, auto-healer, OpenCode proxy | +| **Mac Mini** | Agent Fleet Host | Odysseus, Pi, OpenHand, OpenClaw, Claude Code | +| **MacBook Air** | Secondary Agent Host | openclaw MCP, hermes cron, fallback scheduler | +| **RoketServer cPanel** | WordPress Host | ummah.falahos.my, my.falahos.my | + +### AI Agent Fleet (8 agents) +| Agent | Location | Role | +|-------|----------|------| +| **Hermes** | Contabo | Primary orchestrator, skills/tools/MCP, cron scheduler, Telegram relay | +| **Odysseus** | Mac Mini (:7860) | API gateway, AI chat, email, docs, web research | +| **Pi** | Mac Mini (:4747) | AI assistant, general queries | +| **OpenHand** | Mac Mini (:3000) | Autonomous coding agent, multi-step debugging | +| **OpenClaw** | Mac Mini (:3100) | Model provider proxy, 20+ LLMs via OpenAI-compatible API | +| **Claude Code** | Mac Mini (CLI) | Coding assistant, complex codebase tasks | +| **openclaw MCP** | MacBook Air (:18789) | MCP gateway, WhatsApp routing | +| **Hermes MBA** | MacBook Air | Fallback agent, cron scheduler | + +### Development +| Area | Stack | Status | +|------|-------|--------| +| **Falah Mobile** | Next.js (falahos.my) | Production | +| **Falah OS Backend** | Express/Node.js, Umbrel stack | v1.3 (QA ~10%) | +| **Smart Contracts** | Solidity + Foundry (Faraid) | In development | +| **Falah Umbrel** | Multi-container stack (Synology) | Production | + +### Business & Content +| Platform | Purpose | Status | +|----------|---------|--------| +| **ummah.falahos.my** (WordPress) | Community portal + EDD + courses | Production | +| **my.falahos.my** | Monetisation subdomain | ๐ŸŸก Setup | +| **MailPoet** | Newsletter automation | โœ… Active | +| **MemberPress** | Paid memberships | ๐ŸŸก Setup | +| **PayPal Standard** | Payment processing | โœ… Active | + +--- + +## ๐Ÿ“ Team Org Chart + +| Format | File | Use | +|--------|------|-----| +| ๐Ÿ–ผ๏ธ **SVG** | [FalahOS-Team-Org-Chart.svg](./FalahOS-Team-Org-Chart.svg) | View inline in browser | +| ๐Ÿ“ **Excalidraw** | [FalahOS-Team-Org-Chart.excalidraw](./FalahOS-Team-Org-Chart.excalidraw) | Drag onto [excalidraw.com](https://excalidraw.com) to zoom/edit | diff --git a/FalahOS-Team-Org-Chart.svg b/FalahOS-Team-Org-Chart.svg new file mode 100644 index 0000000..dae7767 --- /dev/null +++ b/FalahOS-Team-Org-Chart.svg @@ -0,0 +1,143 @@ + + + + + + + + + + +WMJ Ismail โ€” Founder / Lead + +Infrastructure + +Synology / Contabo +Docker Swarm / Network +Tailscale / Cloudflare + +AI Agent Fleet + +Hermes / Odysseus / Pi +OpenHand / OpenClaw +Claude Code (8 agents) + +Development + +Falah Mobile (Next.js) +Falah OS Backend +Falah Umbrel / Smart Contracts + +Business & Content + +ummah.falahos.my (WP) +EDD / MailPoet / Courses +Newsletter / Monetisation + +External Ops + +GitHub Mirroring +PayPal / Cloudflare +Gitea Administration + + + + + + +Hermes Agent (Contabo) + +Primary orchestrator +Skills/tools/MCP system +Cron scheduler + Telegram relay + +Odysseus (Mac Mini :7860) + +API gateway + AI chat agent +Email/docs automation +Web research + image generation + +Pi (Mac Mini :4747) + +AI assistant +General purpose queries +Support agent + +OpenHand (Mac Mini :3000) + +Autonomous coding agent +Multi-step debug + fix +Plan-write-test loop + +OpenClaw (Mac Mini :3100) + +Model provider proxy +20+ LLMs via OpenAI-compatible API +Backend for all Mac Mini agents + +Claude Code (Mac Mini CLI) + +Coding assistant (CLI) +Complex codebase tasks +Used via Hermes delegation + +MacBook Air Agents + +openclaw MCP (:18789) โ€” Gateway +hermes cron โ€” Fallback scheduler +pi โ€” AI assistant +opencode โ€” Premium model access +agy โ€” Automation +claude โ€” Coding assistant + +Infrastructure โ€” Machines & Roles + +Synology DS3617xs +Docker Swarm Manager +40+ containers (prod) +Gitea / Casdoor / DBs +Garage S3 / CI/CD runners +100.126.73.29 (Tailscale) + +Contabo VPS +Docker Swarm Worker +Hermes Agent / Relay +Traefik edge / Auto-healer +OpenCode premium proxy +13.140.161.244 + +Mac Mini +Agent Fleet Host +Odysseus / Pi / OpenHand +OpenClaw / Claude Code +8GB RAM / macOS 12.7.6 +100.72.2.115 (Tailscale) + +MacBook Air +Secondary Agent Host +openclaw MCP / hermes cron +Fallback scheduler +Residential IP for cPanel +100.76.3.26 (Tailscale) + +RoketServer cPanel +WordPress Host +ummah.falahos.my +my.falahos.my +Imunify360 security +64.20.37.43 + +External Services & Platforms + +GitHub (maifors) โ€” faraid-sandbox, +falah-umbrel, falah-extension, +falah-os-sdk + +Cloudflare โ€” DNS / WAF / CDN / +cloudflared tunnels + +PayPal Standard โ€” wanjauhari@me.com + +OpenCode / OpenClaw Proxy โ€” Premium LLM +access + \ No newline at end of file diff --git a/Home.md b/Home.md index 0ae24d4..b2158f1 100644 --- a/Home.md +++ b/Home.md @@ -8,8 +8,9 @@ Welcome to the FalahOS wiki โ€” infrastructure, architecture, design, and operat | Page | Description | Formats | |------|-------------|---------| -| **[[Architecture-Diagram]]** | Full system architecture โ€” web layer, AI agents, infrastructure, external services (Mermaid) | ๐Ÿ“„ Mermaid | +| **[[Architecture-Diagram]]** | Full system architecture โ€” web layer, AI agents, infrastructure, external services | ๐Ÿ“„ Mermaid ยท ๐Ÿ–ผ๏ธ [SVG](./FalahOS-Architecture.svg) ยท ๐Ÿ“ [Excalidraw](./FalahOS-Architecture.excalidraw) | | **[[TOGAF-Architecture]]** | Complete TOGAF architecture, layer by layer (Business โ†’ Data โ†’ Application โ†’ Technology) | ๐Ÿ“„ Mermaid ยท ๐Ÿ–ผ๏ธ [SVG](./FalahOS-TOGAF-Architecture.svg) ยท ๐Ÿ“ [Excalidraw](./FalahOS-TOGAF-Architecture.excalidraw) | +| **[[FalahOS-Team-Org-Chart]]** | Team & agent org chart โ€” founder, divisions, AI fleet, infrastructure roles | ๐Ÿ–ผ๏ธ [SVG](./FalahOS-Team-Org-Chart.svg) ยท ๐Ÿ“ [Excalidraw](./FalahOS-Team-Org-Chart.excalidraw) | ## ๐ŸŽจ Design @@ -25,8 +26,9 @@ Welcome to the FalahOS wiki โ€” infrastructure, architecture, design, and operat | Page | Summary | |------|---------| | [[Home]] | You are here | -| [[Architecture-Diagram]] | Mermaid architecture โ€” full system nodes and connections | +| [[Architecture-Diagram]] | Mermaid + SVG + Excalidraw โ€” full system nodes and connections | | [[TOGAF-Architecture]] | TOGAF layer-by-layer + SVG + Excalidraw download | +| [[FalahOS-Team-Org-Chart]] | Team & agent org chart โ€” founder, divisions, AI fleet, infrastructure | | [[Design-System]] | 595-line design spec: colors, typography, components, motion, accessibility | | [[Infrastructure-Tool-Log]] | Last-7-days tool/container/status inventory per machine | | [[Falah-OS-Backend-QA-Gap-Analysis]] | 19 critical findings, ~10% QA readiness | @@ -39,5 +41,9 @@ Welcome to the FalahOS wiki โ€” infrastructure, architecture, design, and operat | **Casdoor (Auth)** | https://auth.falahos.my | | **Falah Mobile** | https://falahos.my | | **Ummah Portal** | https://ummah.falahos.my | -| **Architecture SVG** | [FalahOS-TOGAF-Architecture.svg](./FalahOS-TOGAF-Architecture.svg) | -| **Excalidraw** | [FalahOS-TOGAF-Architecture.excalidraw](./FalahOS-TOGAF-Architecture.excalidraw) | +| **Architecture SVG** | [FalahOS-Architecture.svg](./FalahOS-Architecture.svg) | +| **Architecture Excalidraw** | [FalahOS-Architecture.excalidraw](./FalahOS-Architecture.excalidraw) | +| **TOGAF SVG** | [FalahOS-TOGAF-Architecture.svg](./FalahOS-TOGAF-Architecture.svg) | +| **TOGAF Excalidraw** | [FalahOS-TOGAF-Architecture.excalidraw](./FalahOS-TOGAF-Architecture.excalidraw) | +| **Team Org SVG** | [FalahOS-Team-Org-Chart.svg](./FalahOS-Team-Org-Chart.svg) | +| **Team Org Excalidraw** | [FalahOS-Team-Org-Chart.excalidraw](./FalahOS-Team-Org-Chart.excalidraw) |