{ "type": "excalidraw", "version": 2, "source": "hermes-agent", "elements": [ { "type": "text", "id": "title_1", "x": 1100, "y": 10, "width": 600, "height": 40, "angle": 0, "strokeColor": "#C9A84C", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 32, "fontFamily": 1, "text": "FalahOS \u2014 TOGAF Architecture Diagram", "textAlign": "center", "verticalAlign": "top", "containerId": null, "originalText": "FalahOS \u2014 TOGAF Architecture Diagram", "autoResize": true, "groupIds": [], "frameId": null, "seed": 1, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "zone_2", "x": 10, "y": 60, "width": 2780, "height": 520, "angle": 0, "strokeColor": "#fbbf24", "backgroundColor": "rgba(120,53,15,0.08)", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_zone_3", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 2, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_zone_3", "x": 30, "y": 72, "width": 234, "height": 30, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 24, "fontFamily": 1, "text": "L1 \u2014 Business Architecture", "textAlign": "left", "verticalAlign": "top", "containerId": "zone_2", "originalText": "L1 \u2014 Business Architecture", "autoResize": true, "groupIds": [], "frameId": null, "seed": 3, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_4", "x": 40, "y": 110, "width": 2720, "height": 44, "angle": 0, "strokeColor": "#fbbf24", "backgroundColor": "#78350f", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_5", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 4, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_5", "x": 45, "y": 115, "width": 2710, "height": 34, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 15, "fontFamily": 1, "text": "Vision: Shariah-compliant digital economy platform | Mission: Democratise Islamic finance, halal certification, inheritance planning", "textAlign": "left", "verticalAlign": "top", "containerId": "node_4", "originalText": "Vision: Shariah-compliant digital economy platform | Mission: Democratise Islamic finance, halal certification, inheritance planning", "autoResize": true, "groupIds": [], "frameId": null, "seed": 5, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_6", "x": 40, "y": 170, "width": 620, "height": 90, "angle": 0, "strokeColor": "#fb7185", "backgroundColor": "#881337", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_7", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 6, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_7", "x": 45, "y": 175, "width": 1107.5, "height": 80, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 15, "fontFamily": 1, "text": "Faraid Tokenisation (Solidity+Foundry)\nHalal Certification (ASEAN)\nFalah Mobile (Next.js)\nIslamic Finance Education\nFLH Token Wallet | Falah Souq", "textAlign": "left", "verticalAlign": "top", "containerId": "node_6", "originalText": "Faraid Tokenisation (Solidity+Foundry)\nHalal Certification (ASEAN)\nFalah Mobile (Next.js)\nIslamic Finance Education\nFLH Token Wallet | Falah Souq", "autoResize": true, "groupIds": [], "frameId": null, "seed": 7, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_8", "x": 680, "y": 170, "width": 620, "height": 90, "angle": 0, "strokeColor": "#60a5fa", "backgroundColor": "#1e3a5f", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_9", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 8, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_9", "x": 685, "y": 175, "width": 1017.5, "height": 80, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 15, "fontFamily": 1, "text": "ummah.falahos.my (WordPress)\nmy.falahos.my | falahos.my (Next.js)\nTelegram (@FalahOS_opsbot)\nWhatsApp (+6013-225-0691)\nGitea | GitHub", "textAlign": "left", "verticalAlign": "top", "containerId": "node_8", "originalText": "ummah.falahos.my (WordPress)\nmy.falahos.my | falahos.my (Next.js)\nTelegram (@FalahOS_opsbot)\nWhatsApp (+6013-225-0691)\nGitea | GitHub", "autoResize": true, "groupIds": [], "frameId": null, "seed": 9, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_10", "x": 1320, "y": 170, "width": 620, "height": 90, "angle": 0, "strokeColor": "#34d399", "backgroundColor": "#064e3b", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_11", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 10, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_11", "x": 1325, "y": 175, "width": 860.0, "height": 80, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 15, "fontFamily": 1, "text": "EDD Digital Products (RM0-299)\nPayPal Standard\nMemberPress Memberships\nTutor LMS Course Fees\nMailPoet Newsletter", "textAlign": "left", "verticalAlign": "top", "containerId": "node_10", "originalText": "EDD Digital Products (RM0-299)\nPayPal Standard\nMemberPress Memberships\nTutor LMS Course Fees\nMailPoet Newsletter", "autoResize": true, "groupIds": [], "frameId": null, "seed": 11, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "zone_12", "x": 10, "y": 600, "width": 2780, "height": 480, "angle": 0, "strokeColor": "#a78bfa", "backgroundColor": "rgba(76,29,149,0.08)", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_zone_13", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 12, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_zone_13", "x": 30, "y": 612, "width": 198, "height": 30, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 24, "fontFamily": 1, "text": "L2 \u2014 Data Architecture", "textAlign": "left", "verticalAlign": "top", "containerId": "zone_12", "originalText": "L2 \u2014 Data Architecture", "autoResize": true, "groupIds": [], "frameId": null, "seed": 13, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_14", "x": 40, "y": 650, "width": 380, "height": 90, "angle": 0, "strokeColor": "#a78bfa", "backgroundColor": "#4c1d95", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_15", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 14, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_15", "x": 45, "y": 655, "width": 391.0, "height": 80, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "PostgreSQL 16 (Swarm)\nMain app: falah-mobile, Casdoor", "textAlign": "left", "verticalAlign": "top", "containerId": "node_14", "originalText": "PostgreSQL 16 (Swarm)\nMain app: falah-mobile, Casdoor", "autoResize": true, "groupIds": [], "frameId": null, "seed": 15, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_16", "x": 435, "y": 650, "width": 380, "height": 90, "angle": 0, "strokeColor": "#a78bfa", "backgroundColor": "#4c1d95", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_17", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 16, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_17", "x": 440, "y": 655, "width": 412.0, "height": 80, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "PostgreSQL 16 (Synology)\nCasdoor DB, Mattermost, PostGIS", "textAlign": "left", "verticalAlign": "top", "containerId": "node_16", "originalText": "PostgreSQL 16 (Synology)\nCasdoor DB, Mattermost, PostGIS", "autoResize": true, "groupIds": [], "frameId": null, "seed": 17, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_18", "x": 830, "y": 650, "width": 380, "height": 90, "angle": 0, "strokeColor": "#a78bfa", "backgroundColor": "#4c1d95", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_19", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 18, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_19", "x": 835, "y": 655, "width": 370, "height": 80, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "MySQL 8 (cPanel)\nWordPress: posts, users, orders", "textAlign": "left", "verticalAlign": "top", "containerId": "node_18", "originalText": "MySQL 8 (cPanel)\nWordPress: posts, users, orders", "autoResize": true, "groupIds": [], "frameId": null, "seed": 19, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_20", "x": 1225, "y": 650, "width": 380, "height": 90, "angle": 0, "strokeColor": "#a78bfa", "backgroundColor": "#4c1d95", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_21", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 20, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_21", "x": 1230, "y": 655, "width": 370, "height": 80, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "Redis 7\nCache: sessions, queues, real-time", "textAlign": "left", "verticalAlign": "top", "containerId": "node_20", "originalText": "Redis 7\nCache: sessions, queues, real-time", "autoResize": true, "groupIds": [], "frameId": null, "seed": 21, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_22", "x": 40, "y": 760, "width": 380, "height": 90, "angle": 0, "strokeColor": "#a78bfa", "backgroundColor": "#4c1d95", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_23", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 22, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_23", "x": 45, "y": 765, "width": 377.0, "height": 80, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "Garage S3 (Synology)\nObject storage: files, backups", "textAlign": "left", "verticalAlign": "top", "containerId": "node_22", "originalText": "Garage S3 (Synology)\nObject storage: files, backups", "autoResize": true, "groupIds": [], "frameId": null, "seed": 23, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_24", "x": 435, "y": 760, "width": 380, "height": 90, "angle": 0, "strokeColor": "#a78bfa", "backgroundColor": "#4c1d95", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_25", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 24, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_25", "x": 440, "y": 765, "width": 370.0, "height": 80, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "Meilisearch (Synology)\nFull-text search (Karakeep)", "textAlign": "left", "verticalAlign": "top", "containerId": "node_24", "originalText": "Meilisearch (Synology)\nFull-text search (Karakeep)", "autoResize": true, "groupIds": [], "frameId": null, "seed": 25, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_26", "x": 830, "y": 760, "width": 380, "height": 90, "angle": 0, "strokeColor": "#a78bfa", "backgroundColor": "#4c1d95", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_27", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 26, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_27", "x": 835, "y": 765, "width": 370, "height": 80, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "Gitea / GitHub\nSource code, wiki, artifacts", "textAlign": "left", "verticalAlign": "top", "containerId": "node_26", "originalText": "Gitea / GitHub\nSource code, wiki, artifacts", "autoResize": true, "groupIds": [], "frameId": null, "seed": 27, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_28", "x": 40, "y": 880, "width": 600, "height": 150, "angle": 0, "strokeColor": "#94a3b8", "backgroundColor": "#1e293b", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_29", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 28, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_29", "x": 45, "y": 885, "width": 867.0, "height": 140, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "Content Library:\n12 SEO blog posts \u00b7 7 EDD products\n10 MailPoet sequences \u00b7 Lead magnet\nFaraid whitepapers \u00b7 Falah Letter", "textAlign": "left", "verticalAlign": "top", "containerId": "node_28", "originalText": "Content Library:\n12 SEO blog posts \u00b7 7 EDD products\n10 MailPoet sequences \u00b7 Lead magnet\nFaraid whitepapers \u00b7 Falah Letter", "autoResize": true, "groupIds": [], "frameId": null, "seed": 29, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_30", "x": 660, "y": 880, "width": 900, "height": 150, "angle": 0, "strokeColor": "#94a3b8", "backgroundColor": "#1e293b", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_31", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 30, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_31", "x": 665, "y": 885, "width": 1378.0, "height": 140, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "Code & Config:\nfalah-os-master \u00b7 falah-mobile \u00b7 war-room \u00b7 cpanel-db-backups\nfaraid-sandbox \u00b7 falah-umbrel \u00b7 falah-extension \u00b7 falah-os-sdk\nHermes memory+sessions \u00b7 OpenClaw config \u00b7 Stack files", "textAlign": "left", "verticalAlign": "top", "containerId": "node_30", "originalText": "Code & Config:\nfalah-os-master \u00b7 falah-mobile \u00b7 war-room \u00b7 cpanel-db-backups\nfaraid-sandbox \u00b7 falah-umbrel \u00b7 falah-extension \u00b7 falah-os-sdk\nHermes memory+sessions \u00b7 OpenClaw config \u00b7 Stack files", "autoResize": true, "groupIds": [], "frameId": null, "seed": 31, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "zone_32", "x": 10, "y": 1100, "width": 2780, "height": 720, "angle": 0, "strokeColor": "#22d3ee", "backgroundColor": "rgba(8,51,68,0.08)", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_zone_33", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 32, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_zone_33", "x": 30, "y": 1112, "width": 261, "height": 30, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 24, "fontFamily": 1, "text": "L3 \u2014 Application Architecture", "textAlign": "left", "verticalAlign": "top", "containerId": "zone_32", "originalText": "L3 \u2014 Application Architecture", "autoResize": true, "groupIds": [], "frameId": null, "seed": 33, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_34", "x": 40, "y": 1150, "width": 620, "height": 130, "angle": 0, "strokeColor": "#60a5fa", "backgroundColor": "#1e3a5f", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_35", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 34, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_35", "x": 45, "y": 1155, "width": 811.0, "height": 120, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "Docker Swarm Services:\nTraefik v2 \u00b7 Gitea 1.26 \u00b7 Casdoor\ntalah-mobile (Next.js) \u00b7 Staging\nPostgreSQL 16 \u00b7 Redis 7", "textAlign": "left", "verticalAlign": "top", "containerId": "node_34", "originalText": "Docker Swarm Services:\nTraefik v2 \u00b7 Gitea 1.26 \u00b7 Casdoor\ntalah-mobile (Next.js) \u00b7 Staging\nPostgreSQL 16 \u00b7 Redis 7", "autoResize": true, "groupIds": [], "frameId": null, "seed": 35, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_36", "x": 680, "y": 1150, "width": 620, "height": 130, "angle": 0, "strokeColor": "#60a5fa", "backgroundColor": "#1e3a5f", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_37", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 36, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_37", "x": 685, "y": 1155, "width": 1346.0, "height": 120, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 13, "fontFamily": 1, "text": "Synology Standalone (40+ containers):\nFalah Umbrel (9) \u00b7 Halal Monitor (3)\nKarakeep (3) \u00b7 Mattermost (2)\nGitea Runners (3) \u00b7 Garage S3\nPortainer \u00b7 Dockge (2) \u00b7 Watchtower\nFalah services (7) \u00b7 Faraid-anvil", "textAlign": "left", "verticalAlign": "top", "containerId": "node_36", "originalText": "Synology Standalone (40+ containers):\nFalah Umbrel (9) \u00b7 Halal Monitor (3)\nKarakeep (3) \u00b7 Mattermost (2)\nGitea Runners (3) \u00b7 Garage S3\nPortainer \u00b7 Dockge (2) \u00b7 Watchtower\nFalah services (7) \u00b7 Faraid-anvil", "autoResize": true, "groupIds": [], "frameId": null, "seed": 37, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_38", "x": 1320, "y": 1150, "width": 620, "height": 130, "angle": 0, "strokeColor": "#fbbf24", "backgroundColor": "#78350f", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_39", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 38, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_39", "x": 1325, "y": 1155, "width": 1034.0, "height": 120, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 13, "fontFamily": 1, "text": "cPanel / WordPress:\nummah.falahos.my + my.falahos.my\nEDD \u00b7 MailPoet \u00b7 bbPress \u00b7 GamiPress\nTutor LMS \u00b7 falah-wallet \u00b7 falah-souq\nnur-ai-coach \u00b7 islamic-tools", "textAlign": "left", "verticalAlign": "top", "containerId": "node_38", "originalText": "cPanel / WordPress:\nummah.falahos.my + my.falahos.my\nEDD \u00b7 MailPoet \u00b7 bbPress \u00b7 GamiPress\nTutor LMS \u00b7 falah-wallet \u00b7 falah-souq\nnur-ai-coach \u00b7 islamic-tools", "autoResize": true, "groupIds": [], "frameId": null, "seed": 39, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_40", "x": 40, "y": 1300, "width": 820, "height": 130, "angle": 0, "strokeColor": "#fb7185", "backgroundColor": "#881337", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_41", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 40, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_41", "x": 45, "y": 1305, "width": 1736.0, "height": 120, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 13, "fontFamily": 1, "text": "AI Agent Fleet:\nHermes Agent (Contabo) \u2014 Orchestrator\nOdysseus (Mac Mini :7860) \u2014 API/AI/Email\nPi (:4747) \u2014 Assistant\nOpenHand (:3000) \u2014 Coding\nOpenClaw (:3100) \u2014 Model Proxy\nClaude Code (CLI) \u2014 Coding\nopenclaw (MBA :18789) \u2014 MCP Gateway\nHermes MBA \u2014 Fallback/Cron", "textAlign": "left", "verticalAlign": "top", "containerId": "node_40", "originalText": "AI Agent Fleet:\nHermes Agent (Contabo) \u2014 Orchestrator\nOdysseus (Mac Mini :7860) \u2014 API/AI/Email\nPi (:4747) \u2014 Assistant\nOpenHand (:3000) \u2014 Coding\nOpenClaw (:3100) \u2014 Model Proxy\nClaude Code (CLI) \u2014 Coding\nopenclaw (MBA :18789) \u2014 MCP Gateway\nHermes MBA \u2014 Fallback/Cron", "autoResize": true, "groupIds": [], "frameId": null, "seed": 41, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_42", "x": 880, "y": 1300, "width": 820, "height": 130, "angle": 0, "strokeColor": "#94a3b8", "backgroundColor": "#1e293b", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_43", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 42, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_43", "x": 885, "y": 1305, "width": 1463.0, "height": 120, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 13, "fontFamily": 1, "text": "Infrastructure:\nFalahOS Relay (Contabo :8088) \u2014 Telegram bus\nCloudflare \u2014 DNS / WAF / CDN / tunnel\nTraefik \u2014 Internal routing + TLS\ntalah-auto-healer \u00b7 falah-dns-healer\nKomodo \u2014 GitOps\ndeployment\nMCP Servers \u2014 UI/UX Tester", "textAlign": "left", "verticalAlign": "top", "containerId": "node_42", "originalText": "Infrastructure:\nFalahOS Relay (Contabo :8088) \u2014 Telegram bus\nCloudflare \u2014 DNS / WAF / CDN / tunnel\nTraefik \u2014 Internal routing + TLS\ntalah-auto-healer \u00b7 falah-dns-healer\nKomodo \u2014 GitOps\ndeployment\nMCP Servers \u2014 UI/UX Tester", "autoResize": true, "groupIds": [], "frameId": null, "seed": 43, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "arrow", "id": "arr_44", "x": 580, "y": 1215, "width": 0, "height": 1000, "angle": 0, "strokeColor": "#a78bfa", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "points": [ [ 0, 0 ], [ 0, -1000 ] ], "endArrowhead": "arrow", "startBinding": { "elementId": "node_14", "focus": 0, "gap": 5 }, "endBinding": { "elementId": "node_5", "focus": 0, "gap": 5 }, "groupIds": [], "frameId": null, "seed": 44, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "zone_45", "x": 10, "y": 1840, "width": 2780, "height": 720, "angle": 0, "strokeColor": "#34d399", "backgroundColor": "rgba(6,78,59,0.08)", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_zone_46", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 45, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_zone_46", "x": 30, "y": 1852, "width": 252, "height": 30, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 24, "fontFamily": 1, "text": "L4 \u2014 Technology Architecture", "textAlign": "left", "verticalAlign": "top", "containerId": "zone_45", "originalText": "L4 \u2014 Technology Architecture", "autoResize": true, "groupIds": [], "frameId": null, "seed": 46, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_47", "x": 40, "y": 1890, "width": 620, "height": 140, "angle": 0, "strokeColor": "#34d399", "backgroundColor": "#064e3b", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_48", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 47, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_48", "x": 45, "y": 1895, "width": 1688.0, "height": 130, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 12, "fontFamily": 1, "text": "Physical Nodes:\nSynology DS3617xs \u2014 DSM 6.2.3, 8GB\n 4 volumes (2.6TB), Tailscale 100.126.73.29\nContabo VPS \u2014 Ubuntu 24.04, 6 vCPU/16GB/400GB\n 13.140.161.244\nRoketServer cPanel \u2014 Shared, Imunify360\n Mac Mini \u2014 macOS 12.7.6, 8GB, 100.72.2.115\n MacBook Air \u2014 macOS, 100.76.3.26", "textAlign": "left", "verticalAlign": "top", "containerId": "node_47", "originalText": "Physical Nodes:\nSynology DS3617xs \u2014 DSM 6.2.3, 8GB\n 4 volumes (2.6TB), Tailscale 100.126.73.29\nContabo VPS \u2014 Ubuntu 24.04, 6 vCPU/16GB/400GB\n 13.140.161.244\nRoketServer cPanel \u2014 Shared, Imunify360\n Mac Mini \u2014 macOS 12.7.6, 8GB, 100.72.2.115\n MacBook Air \u2014 macOS, 100.76.3.26", "autoResize": true, "groupIds": [], "frameId": null, "seed": 48, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_49", "x": 680, "y": 1890, "width": 620, "height": 140, "angle": 0, "strokeColor": "#94a3b8", "backgroundColor": "#1e293b", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_50", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 49, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_50", "x": 685, "y": 1895, "width": 1412.0, "height": 130, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 12, "fontFamily": 1, "text": "Network:\nTailscale Mesh VPN \u2014 All nodes (100.x.x.x)\nCloudflare \u2014 DNS proxy + WAF + CDN\nDocker Swarm Overlay \u2014 Synology \u2194 Contabo\nSSH Tunnel \u2014 :17860 \u2194 Mac Mini :7860\nImunify360 \u2014 cPanel security\nTraefik v2 \u2014 Internal service routing", "textAlign": "left", "verticalAlign": "top", "containerId": "node_49", "originalText": "Network:\nTailscale Mesh VPN \u2014 All nodes (100.x.x.x)\nCloudflare \u2014 DNS proxy + WAF + CDN\nDocker Swarm Overlay \u2014 Synology \u2194 Contabo\nSSH Tunnel \u2014 :17860 \u2194 Mac Mini :7860\nImunify360 \u2014 cPanel security\nTraefik v2 \u2014 Internal service routing", "autoResize": true, "groupIds": [], "frameId": null, "seed": 50, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_51", "x": 1320, "y": 1890, "width": 620, "height": 140, "angle": 0, "strokeColor": "#60a5fa", "backgroundColor": "#1e3a5f", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_52", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 51, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_52", "x": 1325, "y": 1895, "width": 1544.0, "height": 130, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 12, "fontFamily": 1, "text": "Runtime / Software Stack:\nDocker (Synology) \u2014 Swarm manager + standalone\nDocker (Contabo) \u2014 Swarm worker\nPython 3.11 / Node.js 22 / PHP 8.x / Nginx\nPostgreSQL 16 / MySQL 8 / Redis 7\nSolidity + Foundry (Blockchain)\nHermes CLI+Gateway / OpenClaw / OpenHand", "textAlign": "left", "verticalAlign": "top", "containerId": "node_51", "originalText": "Runtime / Software Stack:\nDocker (Synology) \u2014 Swarm manager + standalone\nDocker (Contabo) \u2014 Swarm worker\nPython 3.11 / Node.js 22 / PHP 8.x / Nginx\nPostgreSQL 16 / MySQL 8 / Redis 7\nSolidity + Foundry (Blockchain)\nHermes CLI+Gateway / OpenClaw / OpenHand", "autoResize": true, "groupIds": [], "frameId": null, "seed": 52, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_53", "x": 40, "y": 2050, "width": 1300, "height": 130, "angle": 0, "strokeColor": "#fbbf24", "backgroundColor": "#78350f", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_54", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 53, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_54", "x": 45, "y": 2055, "width": 1826.0, "height": 120, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 14, "fontFamily": 1, "text": "CI / CD Pipeline:\nGitea Actions \u2014 3x act_runner (Synology)\nKomodo \u2014 GitOps stack deploys (webhook \u2192 Docker Swarm)\ncPanel Git \u2014 WordPress deployment via Git API\nAuto-healer \u2014 Hourly health recovery cron\nDaily agent crons \u2014 Wiki sync, board sync, health checks", "textAlign": "left", "verticalAlign": "top", "containerId": "node_53", "originalText": "CI / CD Pipeline:\nGitea Actions \u2014 3x act_runner (Synology)\nKomodo \u2014 GitOps stack deploys (webhook \u2192 Docker Swarm)\ncPanel Git \u2014 WordPress deployment via Git API\nAuto-healer \u2014 Hourly health recovery cron\nDaily agent crons \u2014 Wiki sync, board sync, health checks", "autoResize": true, "groupIds": [], "frameId": null, "seed": 54, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "rectangle", "id": "node_55", "x": 40, "y": 2220, "width": 2720, "height": 120, "angle": 0, "strokeColor": "#C9A84C", "backgroundColor": "#1e293b", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "roundness": { "type": 3 }, "boundElements": [ { "id": "t_node_56", "type": "text" } ], "groupIds": [], "frameId": null, "seed": 55, "version": 1, "isDeleted": false, "updated": 1, "customData": {} }, { "type": "text", "id": "t_node_56", "x": 45, "y": 2225, "width": 2899.5, "height": 110, "angle": 0, "strokeColor": "#E8E4DC", "backgroundColor": "transparent", "fillStyle": "solid", "strokeWidth": 2, "roughness": 1, "opacity": 100, "fontSize": 13, "fontFamily": 1, "text": "Architecture Principles:\n1. Synology is core \u2014 Swarm manager + 40+ containers\n2. Hybrid orchestration \u2014 Swarm for prod, standalone for specialised\n3. Tailscale mesh \u2014 Zero exposed ports\n4. Agent-driven ops \u2014 AI agents manage CI/CD/health/content/wiki\n5. Defence in depth \u2014 CF WAF \u2192 Imunify360 \u2192 Traefik \u2192 Tailscale\n6. Multi-agent fleet \u2014 8+ agents with defined roles\n7. Progressive monetisation \u2014 Free \u2192 Lead \u2192 Products \u2192 Memberships \u2192 Courses", "textAlign": "left", "verticalAlign": "top", "containerId": "node_55", "originalText": "Architecture Principles:\n1. Synology is core \u2014 Swarm manager + 40+ containers\n2. Hybrid orchestration \u2014 Swarm for prod, standalone for specialised\n3. Tailscale mesh \u2014 Zero exposed ports\n4. Agent-driven ops \u2014 AI agents manage CI/CD/health/content/wiki\n5. Defence in depth \u2014 CF WAF \u2192 Imunify360 \u2192 Traefik \u2192 Tailscale\n6. Multi-agent fleet \u2014 8+ agents with defined roles\n7. Progressive monetisation \u2014 Free \u2192 Lead \u2192 Products \u2192 Memberships \u2192 Courses", "autoResize": true, "groupIds": [], "frameId": null, "seed": 56, "version": 1, "isDeleted": false, "updated": 1, "customData": {} } ], "appState": { "viewBackgroundColor": "#070A0D", "currentItemStrokeColor": "#E8E4DC", "currentItemBackgroundColor": "#1e3a5f", "currentItemFontFamily": 1, "gridSize": null } }