![](Screenshot.png) # // gott Self-hosted AI-Coding-Agent mit **Anthropic Claude API** als Haupt-Provider (inkl. Claude CLI-Integration) sowie **OpenAI-kompatiblen Providern** (Nvidia, Pollinations, Google Gemini, OpenAI). Stellt eine Web-UI bereit, über die man in Sessions mit konfigurierbaren Agenten chatten kann. Die Agenten haben Tool-Zugriff (Dateien lesen/schreiben/bearbeiten, Shell-Befehle ausführen, Web-/Code-Suche, Todos, Memory) auf ein definiertes Workspace-Verzeichnis. --- ## Features - **Multi-Agent-System** – Bis zu 4 Agenten pro Session: Worker, Vorbereiter (Preparer), Reviewer, Finalizer - **Vorbereiter-Agent** – Optionaler Preparer, der User-Anfragen analysiert, Vorarbeit leistet und aufbereitete Prompts an den Worker weitergibt - **Multi-Agent Review** – Optionaler Review-Agent, der die Arbeit des Worker-Agents prüft und Feedback gibt - **Finalizer-Agent** – Optionaler Agent, der nach dem Review abschließende Arbeiten durchführt (z.B. Git-Commit, Deployment) - **Multi-Modell-Panel (Fusion / MoA)** – Mehrere KI-Agenten beantworten dieselbe Anfrage **parallel** (read-only, live gestreamt); der Worker synthetisiert daraus **eine** Gesamtantwort (OpenRouter-Fusion-/Mixture-of-Agents-Muster). MoA unterstützt mehrere Verfeinerungs-Runden, Token-Badge pro Member - **Interaktive Rückfragen** – `ask_user_choice`-Tool: Agent stellt dem User klickbare Auswahlmöglichkeiten - **Plan-Modus** – Read-only-Modus zum Analysieren und Planen ohne Änderungen (Toggle im Chat) - **Web-Search** – Integrierte Web-Suche mit Quellenangaben (URLs + Titel) in Chat und geteilten Nachrichten - **Multi-Provider** – Anthropic Claude (Haupt-Provider, inkl. Claude CLI), Nvidia (g4f.space), Pollinations (kostenlos), Google Gemini (kostenloser Free Tier), OpenAI - **19 Tools** – `read_file`, `write_file`, `edit_file`, `list_files`, `delete_file`, `execute`, `background_execute`, `glob`, `grep`, `todo_write`, `memory_read`, `memory_write`, `memory_list`, `memory_search`, `remote_execute`, `send_to_session`, `ask_user_choice`, `github_code_search`, `serper_web_search` - **Streaming** – Echtzeit-Antworten via Server-Sent Events (SSE) - **Stop-Button** – Laufende Requests zuverlässig abbrechen (inkl. laufender Shell-Befehle) - **Skill-System** – Wiederverwendbare Prompt-Bausteine, zuordenbar pro Agent - **Memory** – Persistentes Gedächtnis pro Agent (Dateisystem-basiert) - **Workspace-Browser** – Integrierter Datei-Explorer mit Editor - **Telegram-Integration** – Bots als eigenständige Entität, mehrere Sessions pro Bot, Public-Bots - **Cronjobs** – Zeitgesteuerte Prompts mit Cron-Expressions - **Bildgenerierung** – Krea AI Integration für Bildgenerierung - **Semantische Suche** – Lokale Sentence-Embeddings (all-MiniLM-L6-v2 ONNX) für `memory_search` über vergangene Nachrichten und Memory-Dateien - **Auto-Context** – Automatischer semantischer Kontext aus früheren Gesprächen + Memory wird vor jedem Request in den System-Prompt injiziert und im Chat als aufklappbare Box sichtbar gemacht - **Remote-Verbindungen** – WebSocket-basierte Remote-Clients für Windows (PowerShell, `remote.ps1`) und Linux/macOS (Bash + embedded Python, `remote.sh`); AI-Agent kann Befehle auf entfernten Rechnern ausführen, Tool-Description ist OS-aware - **API-Key-Verwaltung** – Admin-UI zum Verwalten von API-Keys (Anthropic, OpenAI, Google, Stripe) inkl. Multi-Provider Key-Check, API-Key-Scanner (GitHub Code Search, GitHub Issues/PRs, HuggingFace Hub, Google/Serper), GitHub Events Echtzeit-Scanner, passive Usage-Aktualisierung bei jeder Chat-Nachricht, Usage-Badge im Chat mit Key-Switch-Modal (pro Agent) - **Claude CLI** – Alternativer Streaming-Weg über die Claude Code CLI (OAuth-basiert, kein API-Key nötig); auch als Fallback für Sub-Agents (Preparer/Review/Finalizer), **Cronjobs** und **Telegram** ohne zugewiesenen Key; keyless Provider (nvidia/gemini/minimax/pollinations) werden über Server-Keys aufgelöst - **Datenbank-Explorer** – Admin-UI zum direkten Inspizieren der SQLite-Datenbank - **MCP-Server-Integration** – Interne API für externe MCP-Server (Remote-Execute, Ask-User-Choice, Memory-CRUD) - **Nachrichten teilen** – Einzelne Nachrichten per öffentlichem Link teilen - **Archivierung** – Chat-Verläufe archivieren und durchsuchen - **OpenClaw Import** – Chatverlauf aus OpenClaw-Instanzen importieren - **Benutzerverwaltung** – Multi-User mit Admin-Rollen, Impersonate, Login-Links - **Servereinstellungen** – Admin-UI für `appsettings.Production.json` - **Desktop-Client** – WPF + WebView2 Windows-App - **Dark Theme** – CSS-Variables basiertes Theming ## Tech-Stack | Bereich | Technologie | |---------|-------------| | **Backend** | .NET 10 Minimal API, C# | | **Datenbank** | SQLite + Dapper | | **AI** | Anthropic Claude API (+ Claude CLI) + OpenAI-kompatible APIs (Nvidia, Pollinations, Gemini, OpenAI) | | **Embeddings** | Microsoft.ML.OnnxRuntime + all-MiniLM-L6-v2 (Sentence-Embeddings) | | **Frontend** | Vanilla JS SPA (kein Framework), CSS Variables | | **Mathe** | KaTeX (LaTeX-Rendering) | | **Bilder** | SixLabors.ImageSharp | | **Cron** | Cronos | | **Desktop** | WPF + WebView2 (optional) | --- ## Voraussetzungen - [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) - Anthropic API Key ([console.anthropic.com](https://console.anthropic.com/)) – wird über Admin-UI verwaltet - Optional: Gemini API Key ([aistudio.google.com](https://aistudio.google.com/apikey)) – kostenlos, kein Billing nötig - Optional: ONNX-Modell `all-MiniLM-L6-v2` für semantische Suche (`data/models/all-MiniLM-L6-v2/`) - Linux/macOS/Windows (Produktiv: Linux empfohlen) ## Konfiguration Beim ersten Start wird `appsettings.json` mit Standardwerten verwendet. Für eigene Einstellungen eine `appsettings.Production.json` im `Build/Linux/publish/`-Verzeichnis anlegen (oder über die Admin-UI verwalten): ```json { "Port": 19000 } ``` | Setting | Beschreibung | Default | |---------|-------------|---------| | `Port` | Server-Port (erfordert Neustart) | `19000` | | `MaxIterations` | Max Tool-Loop Iterationen pro Chat | `100` | | `MaxHistory` | Max Messages in Chat-History | `220` | | `ReminderInterval` | System-Prompt-Reminder alle N Messages | `30` | | `ExecuteTimeout` | Timeout für Shell-Befehle in Sekunden | `180` | | `PayloadLogging` | API-Payloads in Konsole loggen | `false` | | `PayloadLoggingGzip` | Payload-Logs als .gz komprimieren | `false` | | `KreaToken` | Krea AI API Token (optional) | – | | `KreaApiKey` | API-Key für Krea-Endpoints ohne User-Auth (optional) | – | | `GeminiApiKey` | Google Gemini API Key (kostenlos via [aistudio.google.com](https://aistudio.google.com/apikey)) | – | > **Hinweis:** `AnthropicToken` wird über die **API-Key-Verwaltung** im Admin-Bereich verwaltet (DB-Tabelle `api_keys`), nicht mehr über `appsettings.json`. Bestehende Tokens werden beim ersten Start automatisch migriert. > **Hinweis:** Die `appsettings.Production.json` wird **nicht** beim `dotnet publish` mitkopiert. Sie lebt ausschließlich im `Build/Linux/publish/`-Verzeichnis und kann über die Admin-UI (`#/server-settings`) verwaltet werden. ## Starten ```bash dotnet run ``` Die Web-UI ist dann unter `http://localhost:19000` erreichbar. Beim ersten Start wird automatisch ein Admin-Account erstellt: - Benutzername: `admin` - Passwort: `admin` ## Deployment (Linux) Empfohlen als systemd-Service hinter einem Reverse Proxy (Nginx, Caddy): ```bash # deploy.sh (Beispiel) #!/bin/bash set -e cd /app/gott systemctl stop gott dotnet publish -c Release -o publish systemctl start gott ``` Beispiel systemd-Unit (`/etc/systemd/system/gott.service`): ```ini [Unit] Description=Gott After=network.target [Service] Type=exec WorkingDirectory=/app/gott ExecStart=/app/gott/Build/Linux/publish/gott Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target ``` --- ## Projektstruktur ``` gott/ ├── Program.cs # Startup, DI, Middleware, Routing ├── appsettings.json # Standard-Konfiguration ├── Models/ # Records (reine Daten) ├── Services/ # Business-Logic (Singletons) ├── Endpoints/ # HTTP API (Minimal API) ├── Middleware/ # Auth-Middleware ├── Templates/ # Vorlagen (IDENTITY.md, SOUL.md, USER.md) ├── wwwroot/ # Frontend (Vanilla JS SPA) │ ├── js/ # App, Router, API, Chat, UI-Module (modular aufgeteilt), Pages │ └── css/ # Styles (theme.css = CSS Variables) ├── WindowsApp/ # WPF + WebView2 Desktop Client └── Build/ # Build-Output + Laufzeit-Daten ├── Linux/ │ ├── bin/ │ ├── obj/ │ └── publish/ └── Windows/ ├── bin/ ├── obj/ └── publish/ └── data/ ├── gott.db # SQLite Datenbank ├── agents/{id}/ # Memory-Dateien pro Agent ├── skills/{slug}/ # Skill-Dateien └── images/ # Krea-generierte Bilder ``` Ausführliche Dokumentation: [ARCHITECTURE.md](ARCHITECTURE.md) · Kurzreferenz: [ARCHITECTURE_QUICK.md](ARCHITECTURE_QUICK.md) --- ## Lizenz Proprietär – Alle Rechte vorbehalten.