
Un assistant personnel IA axé sur la sécurité.

Stavrobot est un assistant IA personnel conçu selon le principe « tous les accès dont un assistant IA a besoin, et rien de plus ».
Il possède toutes les fonctionnalités intéressantes d'un assistant IA, mais met l'accent sur le sandboxing, l'isolation et les permissions minimales. Il est léger et se déploie avec un simple docker compose up.
uv, isolé de l'environnement hôte.Installation assistée par IA : Demandez à votre IA de codage (Claude Code, Cursor, Windsurf, etc.) de récupérer et suivre https://stavrobot.stavros.io/INSTALL.md — elle vous guidera à travers toute la configuration de manière interactive.
Installation manuelle :
Envoyez un message à @BotFather sur Telegram pour créer un bot et copiez le token. Envoyez un message à @userinfobot pour obtenir votre ID utilisateur Telegram (utilisé comme chat ID).
Copiez env.example vers .env et changez POSTGRES_PASSWORD pour quelque chose de sécurisé, ainsi que TZ pour votre fuseau horaire.
Copiez config.example.toml vers data/main/config.toml et remplissez les champs requis : apiKey, password, publicHostname, [owner].name, [owner].telegram (votre chat ID), et [telegram].botToken. Tout le reste dans le fichier est optionnel.
docker compose up --build
C'est tout. Envoyez un message à votre bot sur Telegram et il répondra. Consultez les sections détaillées de configuration ci-dessous pour Signal, WhatsApp, l'email et d'autres options.
config.example.toml vers data/main/config.toml.authFile (ou apiKey) et publicHostname. Tout le reste est optionnel.env.example vers .env et définissez votre fuseau horaire (TZ). Les identifiants Postgres et d'autres paramètres d'environnement peuvent également y être redéfinis. Définissez toujours POSTGRES_PASSWORD sur quelque chose de sécurisé — la valeur par défaut est un placeholder faible et ne doit pas être utilisée en production.Après le démarrage de l'application, ouvrez /settings/config pour modifier config.toml dans le navigateur. La page est protégée par HTTP Basic Auth et affiche la configuration brute, y compris les secrets qu'elle contient. Une sauvegarde valide crée une seule sauvegarde <CONFIG_PATH>.bak, enregistre le nouveau contenu et redémarre l'application ; cela interrompt tout tour d'agent en cours.
plugin-runner, coder, signal-bridge et python-runner ne lisent config.toml qu'au démarrage. Les modifications qui les concernent, comme le mot de passe, nécessitent de redémarrer manuellement ces conteneurs.
Stavrobot peut être pointé vers n'importe quel point de terminaison compatible OpenAI (Ollama, LiteLLM, vLLM, etc.) ou un proxy personnalisé compatible Anthropic en définissant baseUrl dans config.toml. Consultez config.example.toml pour les champs requis et des exemples de configuration.
L'application prend en charge deux modes d'authentification : clé API ou OAuth.
apiKey dans config.toml. Aucune connexion ni déconnexion nécessaire.authFile dans config.toml (un chemin où les identifiants seront stockés). La page de connexion fonctionne avec tout fournisseur OAuth pris en charge par Pi.
<your-hostname>/login dans un navigateur. Suivez les instructions sur la page, et les identifiants sont enregistrés dans le fichier d'authentification. Si l'authentification expire pendant que le bot fonctionne, il vous envoie un message avec l'URL de connexion via votre plateforme de messagerie.authFile. Le bot détectera l'absence d'identifiants au prochain message et vous invitera à vous reconnecter.Le conteneur coder est optionnel (nécessaire uniquement pour la fonctionnalité d'auto-programmation). Il utilise Claude Code avec authentification par abonnement (OAuth), distincte de la clé API de l'application principale.
Les profils Docker Compose sont séparés par des virgules, vous pouvez donc les combiner (par ex. COMPOSE_PROFILES=signal,coder).
COMPOSE_PROFILES dans votre fichier .env pour inclure coder (par ex. COMPOSE_PROFILES=coder, ou COMPOSE_PROFILES=signal,coder si vous utilisez aussi Signal).docker compose --profile coder up --builddocker compose exec -u coder coder claude (il vous invitera à vous connecter si ce n'est pas déjà fait).[coder].model dans votre config sur un alias de modèle Claude Code (sonnet, opus, ou haiku).Signal nécessite un numéro de téléphone séparé — pas votre numéro personnel. Une SIM prépayée ou un numéro VoIP fonctionne.