
Ein KI-gestützter persönlicher Assistent mit Schwerpunkt auf Sicherheit.

Stavrobot ist ein persönlicher KI-Assistent, der nach dem Prinzip „all der Zugriff, den ein KI-Assistent braucht, und nicht mehr" entwickelt wurde.
Er bietet all die praktischen Funktionen eines KI-Assistenten, legt aber den Schwerpunkt auf Sandboxing, Isolation und minimale Berechtigungen. Er ist leichtgewichtig und wird mit nur einem docker compose up bereitgestellt.
uv, isoliert von der Host-Umgebung.KI-gestützte Installation: Sag deiner Coding-KI (Claude Code, Cursor, Windsurf usw.), sie soll https://stavrobot.stavros.io/INSTALL.md abrufen und befolgen — sie führt dich interaktiv durch die gesamte Einrichtung.
Manuelle Installation:
Schreibe @BotFather auf Telegram an, um einen Bot zu erstellen, und kopiere das Token. Schreibe @userinfobot an, um deine Telegram-Benutzer-ID zu erhalten (diese wird als Chat-ID verwendet).
Kopiere env.example nach .env und ändere POSTGRES_PASSWORD in etwas Sicheres sowie TZ in deine Zeitzone.
Kopiere config.example.toml nach data/main/config.toml und fülle die erforderlichen Felder aus: apiKey, password, publicHostname, [owner].name, [owner].telegram (deine Chat-ID) und [telegram].botToken. Alles andere in der Datei ist optional.
docker compose up --build
Das war's. Schreibe deinem Bot auf Telegram und er wird antworten. Siehe die detaillierten Einrichtungsabschnitte unten für Signal, WhatsApp, E-Mail und andere Optionen.
config.example.toml nach data/main/config.toml.authFile (oder apiKey) und publicHostname. Alles andere ist optional.env.example nach .env und setze deine Zeitzone (TZ). Postgres-Zugangsdaten und andere Umgebungseinstellungen können dort ebenfalls überschrieben werden. Setze POSTGRES_PASSWORD immer auf etwas Sicheres — der Standardwert ist ein schwacher Platzhalter und sollte nicht in der Produktion verwendet werden.Nachdem die App gestartet ist, öffne /settings/config, um config.toml im Browser zu bearbeiten. Die Seite ist durch HTTP Basic Auth geschützt und zeigt die rohe Konfiguration an, einschließlich aller darin enthaltenen Geheimnisse. Ein gültiges Speichern erstellt ein einzelnes <CONFIG_PATH>.bak-Backup, speichert den neuen Inhalt und startet die App neu; dies unterbricht jeden laufenden Agenten-Durchlauf.
plugin-runner, coder, signal-bridge und python-runner lesen config.toml nur beim Start. Änderungen, die sie betreffen, wie das Passwort, erfordern ein manuelles Neustarten dieser Container.
Stavrobot kann auf jeden OpenAI-kompatiblen Endpunkt (Ollama, LiteLLM, vLLM usw.) oder einen benutzerdefinierten Anthropic-kompatiblen Proxy ausgerichtet werden, indem baseUrl in config.toml gesetzt wird. Siehe config.example.toml für die erforderlichen Felder und Beispielkonfigurationen.
Die App unterstützt zwei Authentifizierungsmodi: API-Schlüssel oder OAuth.
apiKey in config.toml. Kein Login oder Logout erforderlich.authFile in config.toml (ein Pfad, in dem Anmeldedaten gespeichert werden). Die Login-Seite funktioniert mit jedem von Pi unterstützten OAuth-Anbieter.
<your-hostname>/login in einem Browser. Folge den Anweisungen auf der Seite, und die Anmeldedaten werden in der Auth-Datei gespeichert. Wenn die Authentifizierung abläuft, während der Bot läuft, sendet er dir eine Nachricht mit der Login-URL über deine Messaging-Plattform.authFile-Pfad. Der Bot erkennt fehlende Anmeldedaten bei der nächsten Nachricht und fordert dich auf, dich erneut anzumelden.Der coder-Container ist optional (wird nur für die Selbstprogrammierungsfunktion benötigt). Er verwendet Claude Code mit Abonnement-Authentifizierung (OAuth), getrennt vom API-Schlüssel der Haupt-App.
Docker Compose-Profile sind kommagetrennt, sodass du sie kombinieren kannst (z. B. COMPOSE_PROFILES=signal,coder).
COMPOSE_PROFILES in deiner .env-Datei, um coder einzuschließen (z. B. COMPOSE_PROFILES=coder, oder COMPOSE_PROFILES=signal,coder, wenn du auch Signal verwendest).docker compose --profile coder up --builddocker compose exec -u coder coder claude (es wird dich auffordern, dich anzumelden, falls du es noch nicht getan hast).[coder].model in deiner Konfiguration auf einen Claude Code-Modell-Alias (sonnet, opus oder haiku).Signal erfordert eine separate Telefonnummer — nicht deine persönliche. Eine Prepaid-SIM oder VoIP-Nummer funktioniert.