widgettdc-api / docs /ARCHITECTURE_CLOUDBORNE.md
Kraft102's picture
docs: add complete cloud architecture documentation
ee754bd
# WidgeTDC Cloud Architecture
## "Operation Cloudborne" - Headless Ghost Deployment
**Version:** 1.0
**Dato:** 2025-12-13
**Status:** PRODUCTION LIVE
---
## 1. Arkitektur Oversigt
```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ WIDGETDC CLOUD ARCHITECTURE β”‚
β”‚ "Headless Ghost" Pattern β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ BRUGER/KLIENT β”‚
β”‚ (Browser/App) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ HTTPS
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ FRONTEND LAYER β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ VERCEL (CDN Edge) β”‚ β”‚
β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚
β”‚ β”‚ β”‚ React 19 + Vite + Tailwind CSS v4 β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ ──────────────────────────────────────── β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β€’ Matrix UI (Cyber Terminal) β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β€’ Widget System (Modular Components) β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β€’ Zustand State Management β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β€’ PWA Support (Offline-capable) β”‚ β”‚ β”‚
β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚
β”‚ β”‚ URL: https://widge-tdc-matrix-frontend.vercel.app β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”‚ REST API + WebSocket
β”‚ (CORS: origin: '*')
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ BACKEND LAYER β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ HUGGING FACE SPACES (Docker) β”‚ β”‚
β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚
β”‚ β”‚ β”‚ Node.js 20 + Express + TypeScript β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ ──────────────────────────────────────── β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β”‚ MCP Engine β”‚ β”‚ Cognitive β”‚ β”‚ Agent β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β”‚ (63 Tools) β”‚ β”‚ Layer β”‚ β”‚ Orchestratorβ”‚ β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β”‚ HyperLog β”‚ β”‚ Ingestion β”‚ β”‚ Security β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β”‚ (Events) β”‚ β”‚ Pipeline β”‚ β”‚ Layer β”‚ β”‚ β”‚ β”‚
β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚
β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚
β”‚ β”‚ URL: https://kraft102-widgetdc-backend.hf.space β”‚ β”‚
β”‚ β”‚ Port: 7860 (HF Standard) β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ β”‚ β”‚
β–Ό β–Ό β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ DATA LAYER β”‚
β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ REDIS CLOUD β”‚ β”‚ NEO4J AURADB β”‚ β”‚ NEON POSTGRES β”‚ β”‚
β”‚ β”‚ (EU-North-1) β”‚ β”‚ (Cloud) β”‚ β”‚ (Serverless) β”‚ β”‚
β”‚ β”‚ ─────────────── β”‚ β”‚ ─────────────── β”‚ β”‚ ─────────────── β”‚ β”‚
β”‚ β”‚ β€’ Hot Cache β”‚ β”‚ β€’ Knowledge β”‚ β”‚ β€’ Vector Store β”‚ β”‚
β”‚ β”‚ β€’ Session State β”‚ β”‚ Graph β”‚ β”‚ (pgvector) β”‚ β”‚
β”‚ β”‚ β€’ Event Pub/Sub β”‚ β”‚ β€’ 4274 Nodes β”‚ β”‚ β€’ Prisma ORM β”‚ β”‚
β”‚ β”‚ β€’ Real-time β”‚ β”‚ β€’ 5252 Rels β”‚ β”‚ β€’ Structured β”‚ β”‚
β”‚ β”‚ Messaging β”‚ β”‚ β€’ Cypher Query β”‚ β”‚ Data β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚
β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ AI/LLM LAYER β”‚
β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ GEMINI β”‚ β”‚ OPENAI β”‚ β”‚ ANTHROPIC β”‚ β”‚ DEEPSEEK β”‚ β”‚
β”‚ β”‚ PRO β”‚ β”‚ GPT-4 β”‚ β”‚ CLAUDE β”‚ β”‚ V3 β”‚ β”‚
β”‚ β”‚ ────────── β”‚ β”‚ ────────── β”‚ β”‚ ────────── β”‚ β”‚ ────────── β”‚ β”‚
β”‚ β”‚ Primary AI β”‚ β”‚ Fallback β”‚ β”‚ Analysis β”‚ β”‚ Code Gen β”‚ β”‚
β”‚ β”‚ Reasoning β”‚ β”‚ Provider β”‚ β”‚ Tasks β”‚ β”‚ Tasks β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```
---
## 2. Komponent Detaljer
### 2.1 Frontend ("The Satellite")
| Attribut | Værdi |
|----------|-------|
| **Platform** | Vercel Edge Network |
| **Framework** | React 19 + Vite 5 |
| **Styling** | Tailwind CSS v4 |
| **State** | Zustand |
| **URL** | `https://widge-tdc-matrix-frontend.vercel.app` |
**Funktioner:**
- Cyber Terminal UI med widget-baseret dashboard
- Real-time data via REST/WebSocket
- PWA-enabled (offline support)
- Responsive design
**Environment Variables:**
```
VITE_API_URL=https://kraft102-widgetdc-backend.hf.space
VITE_WS_URL=wss://kraft102-widgetdc-backend.hf.space
```
---
### 2.2 Backend ("The Ghost")
| Attribut | Værdi |
|----------|-------|
| **Platform** | Hugging Face Spaces (Docker) |
| **Runtime** | Node.js 20-slim |
| **Framework** | Express.js + TypeScript |
| **Port** | 7860 |
| **URL** | `https://kraft102-widgetdc-backend.hf.space` |
**Arkitektur Lag:**
```
apps/backend/src/
β”œβ”€β”€ mcp/ # Model Context Protocol
β”‚ β”œβ”€β”€ cognitive/ # AI Engines
β”‚ β”‚ β”œβ”€β”€ UnifiedGraphRAG.ts
β”‚ β”‚ β”œβ”€β”€ AutonomousTaskEngine.ts
β”‚ β”‚ β”œβ”€β”€ HybridSearchEngine.ts
β”‚ β”‚ β”œβ”€β”€ StateGraphRouter.ts
β”‚ β”‚ └── AgentTeam.ts
β”‚ β”œβ”€β”€ autonomous/ # Self-directed Agents
β”‚ └── memory/ # Cognitive Memory Systems
β”œβ”€β”€ platform/ # Infrastructure Adapters
β”‚ β”œβ”€β”€ embeddings/ # Vector Embeddings
β”‚ β”œβ”€β”€ vector/ # Vector Stores
β”‚ β”œβ”€β”€ events/ # Redis Event Bus
β”‚ └── graph/ # Neo4j Adapter
β”œβ”€β”€ services/ # Business Logic
β”‚ β”œβ”€β”€ hyper-log.ts # Event Streaming
β”‚ β”œβ”€β”€ ingestion/ # Data Pipeline (20+ adapters)
β”‚ └── external/ # External Integrations
└── routes/ # API Endpoints
```
**MCP Tools (63 registreret):**
- `cma.*` - Context Memory Access
- `srag.*` - Semantic RAG Queries
- `autonomous.*` - Agent Operations
- `vidensarkiv.*` - Knowledge Archive
- `widgets.*` - Widget Control
- `ingestion.*` - Data Ingestion
- `docgen.*` - Document Generation
---
### 2.3 Data Layer
#### Redis Cloud (Hot Data)
| Attribut | Værdi |
|----------|-------|
| **Region** | EU-North-1 (Stockholm) |
| **Host** | `redis-16522.crce175.eu-north-1-1.ec2.cloud.redislabs.com` |
| **Port** | 16522 |
| **FormΓ₯l** | Cache, Sessions, Pub/Sub |
#### Neo4j AuraDB (Knowledge Graph)
| Attribut | Værdi |
|----------|-------|
| **Type** | Cloud Graph Database |
| **URI** | `neo4j+s://054eff27.databases.neo4j.io` |
| **Nodes** | 4,274 |
| **Relationships** | 5,252 |
| **FormΓ₯l** | Knowledge Graph, Entity Relations |
#### Neon PostgreSQL (Vector Store)
| Attribut | Værdi |
|----------|-------|
| **Type** | Serverless Postgres |
| **Region** | US-East-2 |
| **Extensions** | pgvector |
| **ORM** | Prisma |
| **FormΓ₯l** | Structured Data, Vector Search |
---
### 2.4 AI/LLM Providers
| Provider | API Key Env | Anvendelse |
|----------|-------------|------------|
| Google Gemini | `GOOGLE_AI_API_KEY` | Primary reasoning |
| OpenAI GPT-4 | `OPENAI_API_KEY` | Fallback, embeddings |
| Anthropic Claude | `ANTHROPIC_API_KEY` | Analysis tasks |
| DeepSeek V3 | `DEEPSEEK_API_KEY` | Code generation |
---
## 3. Dataflow
```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Browser │────▢│ Vercel │────▢│ HF Space│────▢│ DBs β”‚
β”‚ Request β”‚ β”‚ CDN β”‚ β”‚ Backend β”‚ β”‚ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚ β”‚
β”‚ β–Ό β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ β”‚ MCP Router β”‚ β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚ β”‚ β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ β–Ό β–Ό β–Ό
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ β”‚ Cognitive β”‚ β”‚ Redis β”‚ β”‚ Neo4j β”‚
β”‚ β”‚ Engine β”‚ β”‚ Cache β”‚ β”‚ Graph β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚
β”‚ β–Ό
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ β”‚ AI/LLM β”‚
β”‚ β”‚ Providers β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚
β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Response
```
---
## 4. API Endpoints
### Health & Status
```
GET /health # System health
GET /api/hyper/status # HyperLog status
GET /api/evolution/graph/stats # Graph statistics
```
### MCP Protocol
```
GET /api/mcp/tools # List all tools (63)
POST /api/mcp/route # Execute MCP tool
WS /mcp/ws # WebSocket connection
```
### Agent Operations
```
POST /api/team/delegate # Delegate task to agent
GET /api/team/tasks # List agent tasks
POST /api/team/plan # Create execution plan
GET /api/team/status # Agent team status
```
### Knowledge & Search
```
POST /api/srag/query # Semantic RAG search
GET /api/knowledge/* # Knowledge endpoints
POST /api/vidensarkiv/search # Archive search
```
---
## 5. Environment Secrets (HF Spaces)
| Secret | Status | FormΓ₯l |
|--------|--------|--------|
| `DATABASE_URL` | βœ… | Neon PostgreSQL connection |
| `NEO4J_URI` | βœ… | AuraDB endpoint |
| `NEO4J_USER` | βœ… | AuraDB username |
| `NEO4J_PASSWORD` | βœ… | AuraDB password |
| `REDIS_URL` | βœ… | Redis Cloud connection |
| `GOOGLE_AI_API_KEY` | βœ… | Gemini API |
| `OPENAI_API_KEY` | βœ… | OpenAI API |
| `ANTHROPIC_API_KEY` | βœ… | Claude API |
| `JWT_SECRET` | βœ… | Auth tokens |
---
## 6. Deployment Pipeline
```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ GitHub │────▢│ Build │────▢│ Deploy β”‚
β”‚ Push β”‚ β”‚ (Docker) β”‚ β”‚ (HF/Vercel)β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚ β”‚
β”‚ β”‚ β”‚
β–Ό β–Ό β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Branch: hf-minimal β”‚
β”‚ ─────────────────── β”‚
β”‚ β€’ Backend β†’ push to 'hf' remote β†’ HF Spaces β”‚
β”‚ β€’ Frontend β†’ auto-deploy from GitHub β†’ Vercel β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```
### Deploy Commands
```bash
# Backend til HF Spaces
git push hf hf-minimal:main
# Frontend til Vercel (auto via GitHub)
git push origin hf-minimal
```
---
## 7. Sikkerhed
### CORS Configuration
```typescript
app.use(cors({
origin: '*', // Γ…ben for alle origins (kan strammes)
methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
allowedHeaders: ['Content-Type', 'Authorization']
}));
```
### Authentication
- JWT-baseret authentication
- Bearer tokens via `Authorization` header
- Secret: `JWT_SECRET` environment variable
### GDPR Compliance
- Data minimization i audit logs
- Kun IDs/metadata logges
- Retention policies implementeret
---
## 8. Monitorering
### Health Checks
```bash
# Backend health
curl https://kraft102-widgetdc-backend.hf.space/health
# Graph stats
curl https://kraft102-widgetdc-backend.hf.space/api/evolution/graph/stats
# MCP tools count
curl https://kraft102-widgetdc-backend.hf.space/api/mcp/tools
```
### HF Spaces Docker Health
```dockerfile
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD node -e "require('http').get('http://localhost:7860/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1))"
```
---
## 9. Live URLs
| Komponent | URL | Status |
|-----------|-----|--------|
| Frontend | https://widge-tdc-matrix-frontend.vercel.app | βœ… LIVE |
| Backend | https://kraft102-widgetdc-backend.hf.space | βœ… LIVE |
| Health | https://kraft102-widgetdc-backend.hf.space/health | βœ… OK |
| API Docs | https://kraft102-widgetdc-backend.hf.space/api/mcp/tools | βœ… 63 tools |
---
## 10. Teknologi Stack Oversigt
```
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ WIDGETDC TECH STACK β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ FRONTEND β”‚ React 19, Vite 5, Tailwind v4, Zustand β”‚
β”‚ BACKEND β”‚ Node.js 20, Express, TypeScript 5.8 β”‚
β”‚ DATABASES β”‚ PostgreSQL+pgvector, Neo4j 5, Redis 7 β”‚
β”‚ AI/LLM β”‚ Gemini, OpenAI, Claude, DeepSeek β”‚
β”‚ HOSTING β”‚ Vercel (FE), Hugging Face Spaces (BE) β”‚
β”‚ PROTOCOL β”‚ MCP (Model Context Protocol) β”‚
β”‚ ARCHITECTURE β”‚ Microservices, Event-Driven β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```
---
*Genereret: 2025-12-13*
*Operation Cloudborne v1.0*