App starten
🏗️

System-Architektur

Vom Matrix-Bot zum vollstaendigen KI-Oekosystem. Ein Blick hinter die Kulissen.

Das Gesamtbild

Archimedes besteht aus mehreren Schichten, die zusammen ein modulares, erweiterbares System bilden.

Clients (Benutzer-Ebene)
💬 Matrix Chat (E2EE)
📱 Flutter App (Android)
🌐 Web App (Flutter Web)
API Gateway (FastAPI, Port 8420)
🚀 FastAPI
🔐 JWT Auth (Access + Refresh)
📡 SSE Streaming
📁 File Upload (100MB)
🔄 CORS
Core Bot (Archimedes)
🧩 Command Router
🧠 HybridLLMService
📊 Report Engine
📤 Export Pipeline
⚙️ ServiceRegistry
KI & Wissen
🦙 Ollama (lokal, GPU)
🌊 DeepSeek (API, Fallback)
📚 ChromaDB (Vektoren)
🔢 Sentence-Transformers
Infrastruktur
☀️ Solarstrom
🖥️ Home Server (Windows)
🎮 NVIDIA GPU (CUDA)
🔒 WireGuard VPN
💾 SQLite Datenbanken

Projekt-Struktur

archimedes/ ├── src/archimedes/ # Core Bot │ ├── handlers/ # Command Handlers │ ├── llm/ # LLM Integration (Ollama, DeepSeek, Hybrid) │ ├── rag/ # RAG System (Indexer, Retriever) │ ├── services/ # Service Container, Lazy Loading │ ├── export/ # Export Pipeline (HTML, PDF, DOCX, MD) │ └── report/ # Report Engine ├── api/ # FastAPI Gateway │ ├── auth/ # Auth System (JWT, Users, Passwords) │ ├── static/ # Flutter Web App │ └── main.py # API Entry Point ├── flutter_app/ # Flutter Client │ └── lib/ │ ├── screens/ # UI Screens │ ├── providers/ # Riverpod Providers │ ├── services/ # API Client │ └── models/ # Data Models ├── config/ # YAML Konfiguration ├── data/ # Daten (Threads, Uploads, DB) └── designs/ # Export-Designs & Templates

Kern-Komponenten

ResourceGovernor

Verwaltet den Zugriff auf die GPU (Ollama) mit einem Priority-Queue-System. Verhindert Konflikte, wenn mehrere Clients gleichzeitig Anfragen stellen.

PriorityClientTimeout
1 (LIVE)Merlin (Prod)300s
2 (SANDBOX)Archimedes60s
3 (BG)Indexing30s

LazyService & ServiceRegistry

Dienste werden erst geladen, wenn sie gebraucht werden (Lazy Loading). Nach 5 Minuten Inaktivitaet werden sie automatisch entladen (IdleManager).

ServiceVorherNachher
Basis~900MB~50MB
Embeddings~400MBLazy
ChromaDB~200MBLazy

Authentifizierung

JWT Token System

Zwei-Token-System fuer sichere, langlebige Sessions:

  • Access Token: 15 Minuten Lebensdauer, fuer API-Zugriff
  • Refresh Token: 30 Tage, fuer Token-Erneuerung
  • Token Rotation: Refresh Token wird bei Erneuerung rotiert
  • Revocation: Refresh Tokens koennen widerrufen werden

Passwort-Security

  • bcrypt Hashing: 12 Rounds, salted
  • Reset via Matrix: 6-stelliger Code per DM, 15 Min gueltig
  • Nach Reset: Alle Refresh Tokens werden invalidiert
Auth Flow
👤 Login (Username + Password)
🔒 bcrypt Verify
Access (15m)
Refresh (30d)
📱 Secure Storage

Deployment

Server-Setup

Archimedes laeuft auf einem Windows Home Server mit NVIDIA GPU. Der Zugang von aussen erfolgt ueber einen WireGuard VPN-Tunnel zur Domain archimedes.pm. Der API Gateway hoert auf Port 8420 und serviert sowohl die REST/SSE API als auch die Flutter Web App.

KomponenteTechnologieVersion
BetriebssystemWindows10/11
PythonPython3.10+
API FrameworkFastAPI + UvicornLatest
LLM RuntimeOllamaLatest
LLM ModelMistral-Nemo 12BKonfigurierbar
Vektor-DBChromaDBLatest
EmbeddingsSentence-Transformersall-MiniLM-L6-v2
User-DBSQLite + aiosqlite3
Matrixmatrix-nioLatest
App FrameworkFlutter3.x
GPUNVIDIA (CUDA)Variable
VPNWireGuardLatest

Konfiguration

Alle Einstellungen werden in YAML-Dateien verwaltet:
config/config.sandbox.yaml — Haupt-Konfiguration (Bot, LLM, RAG, Matrix)
config/config.api.yaml — API Gateway Konfiguration (Port, CORS, Auth)

Solide Architektur

Modular, erweiterbar und auf Privatsphere ausgelegt.

Jetzt erleben