![](Screenshot.png) # // gott Self-hosted AI-Coding-Agent auf Basis der Anthropic Claude API. 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 - **13 Tools** – `read_file`, `write_file`, `edit_file`, `list_files`, `delete_file`, `execute`, `glob`, `grep`, `todo_write`, `memory_read`, `memory_write`, `memory_list`, `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** – Agents über Telegram ansprechen - **Cronjobs** – Zeitgesteuerte Prompts mit Cron-Expressions - **Bildgenerierung** – Krea AI Integration für Bildgenerierung - **Nachrichten teilen** – Einzelne Nachrichten per öffentlichem Link teilen - **Archivierung** – Chat-Verläufe archivieren und durchsuchen - **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 (SSE Streaming) | | **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/)) - 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 `publish/`-Verzeichnis anlegen (oder über die Admin-UI verwalten): ```json { "Port": 19000, "AnthropicToken": "sk-ant-...", "MaxIterations": 100, "PayloadLogging": false, "PayloadLoggingGzip": false, "KreaToken": "", "KreaApiKey": "" } ``` | Setting | Beschreibung | Default | |---------|-------------|---------| | `Port` | Server-Port (erfordert Neustart) | `19000` | | `AnthropicToken` | Anthropic API Key (**erforderlich**) | – | | `MaxIterations` | Max Tool-Loop Iterationen pro Chat | `100` | | `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) | – | > **Hinweis:** Die `appsettings.Production.json` wird **nicht** beim `dotnet publish` mitkopiert. Sie lebt ausschließlich im `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/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-Helpers, Pages │ └── css/ # Styles (theme.css = CSS Variables) ├── WindowsApp/ # WPF + WebView2 Desktop Client └── publish/ # Build-Output + Laufzeit-Daten └── 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.