The cronjob notification ran the notify-agent on the result summary and sent only its reaction to Telegram. When the agent merely acknowledged the summary (e.g. "👍"), the actual cronjob result never reached Telegram — the user got a header plus an emoji and no information. Send the real result as the guaranteed first Telegram message, then run the notify-agent best-effort and send its reaction as a separate second message. The agent run is wrapped in try/catch with a canRunNotifyAgent guard instead of the old return-aborts, so a missing key / OpenAI without key / unavailable CLI only skips the reaction — the result is already delivered. The notify-agent still persists its reaction to the web history automatically (ChatNonStreaming / ChatNonStreamingViaCli). TelegramService.SendNotification now uses SendLongMessage so long results are chunked into 4096-char messages instead of being rejected whole. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
// 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
- Anthropic API Key (console.anthropic.com) – wird über Admin-UI verwaltet
- Optional: Gemini API Key (aistudio.google.com) – kostenlos, kein Billing nötig
- Optional: ONNX-Modell
all-MiniLM-L6-v2fü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):
{
"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) | – |
Hinweis:
AnthropicTokenwird über die API-Key-Verwaltung im Admin-Bereich verwaltet (DB-Tabelleapi_keys), nicht mehr überappsettings.json. Bestehende Tokens werden beim ersten Start automatisch migriert.
Hinweis: Die
appsettings.Production.jsonwird nicht beimdotnet publishmitkopiert. Sie lebt ausschließlich imBuild/Linux/publish/-Verzeichnis und kann über die Admin-UI (#/server-settings) verwaltet werden.
Starten
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):
# 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):
[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 · Kurzreferenz: ARCHITECTURE_QUICK.md
Lizenz
Proprietär – Alle Rechte vorbehalten.
