![](Screenshot.png) # // gott Self-hosted AI-Coding-Agent mit **Anthropic Claude API** als Haupt-Provider sowie **OpenAI-kompatiblen Providern** (Nvidia, Pollinations, Google Gemini). 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, Suchen, 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) - **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), Nvidia (g4f.space), Pollinations (kostenlos), Google Gemini (kostenloser Free Tier) - **16 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` - **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 - **Remote-Verbindungen** – WebSocket-basierte Remote-Clients (PowerShell), AI-Agent kann Befehle auf entfernten Rechnern ausführen - **API-Key-Verwaltung** – Admin-UI zum Verwalten von API-Keys (Anthropic) inkl. Heartbeat-Check, DB-basiert statt Config-Datei - **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 + OpenAI-kompatible APIs (Nvidia, Pollinations, Gemini) | | **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, "MaxIterations": 100, "MaxHistory": 120, "ReminderInterval": 30, "ExecuteTimeout": 180, "PayloadLogging": false, "PayloadLoggingGzip": false, "KreaToken": "", "KreaApiKey": "", "GeminiApiKey": "" } ``` | Setting | Beschreibung | Default | |---------|-------------|---------| | `Port` | Server-Port (erfordert Neustart) | `19000` | | `MaxIterations` | Max Tool-Loop Iterationen pro Chat | `100` | | `MaxHistory` | Max Messages in Chat-History | `120` | | `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.