# Frankenbot - Multi-Agent Event-Management-System Ein Flask-basiertes Multi-Agent-System zur Orchestrierung und Verwaltung von KI-Agenten für Event-Management. Entwickelt für den **Diversity-Ball Wien 2026**. ## 🎯 Überblick Frankenbot ist ein intelligentes Event-Management-System, bei dem spezialisierte KI-Agents zusammenarbeiten, um komplexe Event-Organisationsaufgaben zu bewältigen. Ein zentraler Orchestrator koordiniert die Kommunikation zwischen den Agents und delegiert Tasks basierend auf Expertise. ## ✨ Haupt-Features ### 🤖 Multi-Agent Orchestrierung - **Orchestrator als zentraler Hub**: Alle Agent-Kommunikation läuft über den Orchestrator - **Spezialisierte Agents**: Budget Manager, Catering Manager, Location Manager, Program Manager, etc. - **Agent-zu-Agent Kommunikation**: Agents können Fragen stellen, Subtasks erstellen und neue Agents vorschlagen - **Dynamische Modellauswahl**: 29+ KI-Modelle verfügbar (OpenCode, Anthropic, Ollama) ### 📋 Task-Management - **Automatische Task-Verarbeitung**: TaskBeat verarbeitet Tasks alle 10 Sekunden - **Auto-Refresh UI**: Tasks-Seite aktualisiert sich automatisch alle 15 Sekunden - **Task-Delegation**: Orchestrator analysiert Tasks und weist sie passenden Agents zu - **Status-Tracking**: pending → in_progress → completed ### 💬 Chat-System - **Live-Streaming**: Server-Sent Events für Echtzeit-Antworten - **Agent-Auswahl**: Chat mit spezifischen Agents oder dem Orchestrator - **Session-basierte History**: Kontext bleibt über Konversation erhalten ### 📧 Email-Integration - **IMAP**: Email-Posteingang überwachen - **SMTP**: Emails versenden - **Email-to-Task**: Automatische Task-Erstellung aus Emails - **Whitelist-System**: Nur autorisierte Absender ### 📁 Datei-Management - **Agent Work-Folders**: Jeder Agent hat eigenes Arbeitsverzeichnis - **Email-Vorlagen**: Wiederverwendbare Email-Templates - **Projekt-Dateien**: Zentrale Dokumentenverwaltung - **Upload & Download**: Web-basierter Datei-Manager ### 🧠 Memory-System - **JSON-basierte Erinnerungen**: Strukturierte Agent-Memories - **Kategorien**: tasks, notes, decisions, contacts - **Agent-spezifisch**: Jeder Agent verwaltet eigene Erinnerungen - **Memory-Summaries**: Kompakte Übersichten für Prompts ### 📚 Wissensdatenbank - **On-Demand Zugriff**: Agents nutzen `@READ_KNOWLEDGE` statt volle KB im Prompt - **Performance-Optimierung**: Reduziert Prompt-Größe um ~15KB - **Event-spezifisch**: Diversity-Ball Wien 2026 Informationen ## 🚀 Installation ### Voraussetzungen ```bash # Python 3.10+ python --version # OpenCode CLI (für Agent-Ausführung) opencode --version ``` ### Abhängigkeiten installieren ```bash pip install flask python-dotenv ``` ### Email-Konfiguration (Optional) ```bash cp .env.example .env # .env editieren und Email-Credentials eintragen ``` ## 📖 Verwendung ### App starten ```bash # Foreground python app.py # Background (empfohlen) nohup python app.py > app_output.log 2>&1 & ``` Die Anwendung läuft dann auf: **http://localhost:5000** ### Agent-Kommandos Agents können folgende Kommandos in ihren Antworten verwenden: #### Frage an Orchestrator ``` @ASK_ORCHESTRATOR Question: Wie hoch ist das verfügbare Budget für Catering? Context: Ich plane das Menü und brauche Budget-Info @END ``` #### Subtask erstellen ``` @CREATE_SUBTASK Task: Location-Vertrag prüfen Requirements: Rechtliche Prüfung der Mietbedingungen @END ``` #### Wissensdatenbank durchsuchen ``` @READ_KNOWLEDGE Topic: Budget @END ``` #### Neuen Agent vorschlagen ``` @SUGGEST_AGENT Role: Security Manager Skills: Sicherheitsplanung, Crowd Management Reason: Für große Events mit 500+ Gästen benötigt @END ``` ## 🗂️ Projekt-Struktur ``` frankenbot/ ├── app.py # Haupt-Flask-App (2128 Zeilen) ├── agent_config.json # Agent-Modell-Zuweisungen ├── diversityball_knowledge.md # Event-Wissensdatenbank ├── email_journal.db # SQLite-Datenbank (Emails) │ ├── agents/ # Agent-Verzeichnisse │ ├── orchestrator/ │ │ ├── systemprompt.md │ │ ├── personality.md │ │ ├── work/ # Arbeitsverzeichnis │ │ └── memory/ # JSON-Erinnerungen │ ├── budget_manager/ │ ├── catering_manager/ │ ├── location_manager/ │ └── ... │ ├── templates/ # HTML-Templates (Jinja2) │ ├── base.html │ ├── index.html # Dashboard │ ├── chat.html # Agent-Chat │ ├── orchestrator.html # Orchestrator-Chat │ ├── tasks.html # Task-Management │ ├── agents.html # Agent-Verwaltung │ ├── files.html # Datei-Manager │ └── emails.html # Email-Interface │ ├── static/ │ └── style.css # CSS-Styling │ └── uploads/ # Hochgeladene Dateien ``` ## 🤖 Verfügbare Agents | Agent | Rolle | Verantwortlich für | |-------|-------|-------------------| | **Orchestrator** | Koordinator | Task-Delegation, Agent-Kommunikation | | **Budget Manager** | Finanzplanung | Budget-Tracking, Kostenkalkulation | | **Catering Manager** | Verpflegung | Menüplanung, Catering-Koordination | | **Location Manager** | Veranstaltungsort | Raumbuchung, Logistik | | **Program Manager** | Programmablauf | Zeitplanung, Ablaufkoordination | | **Researcher** | Recherche | Web-Recherche, Informationsbeschaffung | | **Document Editor** | Dokumentation | Dokument-Erstellung, Bearbeitung | | **Tax Advisor** | Steuern | Steuerliche Beratung, AKM-Meldungen | | **Musik Rechte Advisor** | Musikrechte | GEMA/AKM-Compliance | | **Zusammenfasser** | Synthese | Informations-Aggregation | ## 🔧 Technologie-Stack - **Backend**: Flask 3.x - **Frontend**: Bootstrap 5, Vanilla JavaScript - **Database**: SQLite (Email-Journal) - **AI**: OpenCode CLI (Multi-Provider Support) - **Templates**: Jinja2 - **Streaming**: Server-Sent Events (SSE) ## 🎨 UI-Routen | Route | Beschreibung | |-------|--------------| | `/` | Dashboard - Agent-Übersicht & letzte Tasks | | `/chat` | Chat mit individuellen Agents | | `/orchestrator` | Orchestrator-Chat mit Task-Verteilung | | `/tasks` | Task-Management mit Auto-Refresh | | `/agents` | Agent-Verwaltung (Erstellen, Bearbeiten, Modell-Auswahl) | | `/files` | Datei-Manager (Upload, Download, Agent Work-Folders) | | `/emails` | Email-Interface (Senden, Empfangen, Vorlagen) | ## ⚙️ Konfiguration ### Agent-Modelle anpassen Bearbeite `agent_config.json`: ```json { "orchestrator": "anthropic/claude-3.7-sonnet", "budget_manager": "opencode/qwen2.5-coder:32b", "catering_manager": "anthropic/claude-3.5-sonnet" } ``` ### Email-Setup Bearbeite `.env`: ```bash EMAIL_ADDRESS=your@email.com EMAIL_PASSWORD=your_app_password EMAIL_IMAP_SERVER=imap.gmail.com EMAIL_SMTP_SERVER=smtp.gmail.com ``` ### Background-Threads - **EmailPoller**: Prüft alle 2 Minuten auf neue Emails - **TaskBeat**: Verarbeitet Tasks alle 10 Sekunden - **TaskWorker**: Führt Agent-Tasks aus (Timeout: 10 Min) ## 📊 Performance ### Optimierungen - ✅ Wissensdatenbank nicht im Prompt (on-demand via `@READ_KNOWLEDGE`) - ✅ Model-Cache (1h TTL) - ✅ Agent arbeiten in eigenen work-Verzeichnissen - ✅ Timeout: 600 Sekunden (10 Min) für komplexe Tasks ### Geschätzte Ausführungszeiten - Einfache Tasks: 30-60 Sekunden - Komplexe Tasks: 2-5 Minuten - Research-Tasks: 3-8 Minuten ## 🔒 Security ### Implementierte Maßnahmen - ✅ XSS-Schutz: HTML-Escaping in allen Templates - ✅ Email-Whitelist: Nur autorisierte Absender - ✅ Exception-Handling: Spezifische Exception-Typen mit Logging - ✅ Request-Validierung: `.get()` mit Defaults - ✅ Session-basierte Auth: Flask-Sessions ### Empfehlungen für Produktion - 🔐 HTTPS aktivieren (TLS/SSL) - 🔐 Secrets in Umgebungsvariablen (nicht in Code) - 🔐 CSP Headers setzen - 🔐 Rate Limiting für API-Endpoints - 🔐 WSGI Server verwenden (Gunicorn, uWSGI) ## 🐛 Debugging ### Logs prüfen ```bash # Echtzeit-Logs tail -f app_output.log # Letzte 50 Zeilen tail -50 app_output.log # Nach Errors suchen grep -i error app_output.log ``` ### App-Status ```bash # Läuft die App? ps aux | grep "python3 app.py" # Port 5000 belegt? lsof -i :5000 ``` ## 📝 Entwicklung ### Code-Quality - ✅ 72 Funktionen, 29 Routes - ✅ Keine unused imports - ✅ Spezifisches Exception-Handling - ✅ Logging für alle kritischen Operationen ### Git-Workflow ```bash # Status prüfen git status # Änderungen committen git add . git commit -m "feat: neue Funktion" # Pushen git push origin main ``` ## 📚 Weitere Dokumentation - `CHANGES.md` - Detaillierte Feature-Implementierungen - `FEATURES.md` - Feature-Übersicht - `QUICKSTART.md` - Schnellstart-Anleitung - `.env.example` - Email-Konfiguration ## 🎓 Use Cases ### Event-Planung 1. Orchestrator empfängt Planungs-Anfrage 2. Erstellt Subtasks für Budget, Location, Catering 3. Agents arbeiten parallel 4. Orchestrator aggregiert Ergebnisse ### Email-basierte Tasks 1. Email kommt an (von Whitelist-Absender) 2. EmailPoller erstellt Task 3. TaskBeat weist Task zu passendem Agent 4. Agent arbeitet Task ab und antwortet per Email ### Wissensdatenbank-Abfrage 1. Agent braucht Info (z.B. Budget) 2. Nutzt `@READ_KNOWLEDGE Topic: Budget` 3. System extrahiert relevante Sektion 4. Agent erhält nur benötigte Informationen ## 🤝 Mitwirken Dieses Projekt wurde entwickelt für den **Diversity-Ball Wien 2026**. ## 📄 Lizenz Dieses Projekt ist für internen Gebrauch und Event-Management entwickelt. --- **Version**: 1.0.0 **Letztes Update**: Februar 2026 **Status**: Production-Ready ✅