
सुरक्षा पर ध्यान केंद्रित करने वाला एक AI व्यक्तिगत सहायक।

Stavrobot एक व्यक्तिगत AI सहायक है जो "एक AI सहायक को जितनी पहुँच चाहिए, उससे ज़्यादा नहीं" के सिद्धांत पर बनाया गया है।
इसमें एक AI सहायक की सभी अच्छी सुविधाएँ हैं, लेकिन यह sandboxing, isolation और न्यूनतम permissions पर केंद्रित है। यह हल्का है और केवल docker compose up के साथ deploy किया जाता है।
uv के माध्यम से pip dependencies के साथ मनमाना Python, host environment से अलग।AI-assisted install: अपने coding AI (Claude Code, Cursor, Windsurf, आदि) को https://stavrobot.stavros.io/INSTALL.md fetch करके follow करने के लिए कहें — यह आपको पूरे setup के माध्यम से interactively मार्गदर्शन करेगा।
Manual install:
Telegram पर @BotFather को message करके एक bot बनाएँ और token copy करें। अपनी Telegram user ID प्राप्त करने के लिए @userinfobot को message करें (यह chat ID के रूप में उपयोग किया जाता है)।
env.example को .env में copy करें और POSTGRES_PASSWORD को किसी सुरक्षित चीज़ में बदलें और TZ को अपने timezone में बदलें।
config.example.toml को data/main/config.toml में copy करें और आवश्यक fields भरें: apiKey, password, publicHostname, [owner].name, [owner].telegram (आपकी chat ID), और [telegram].botToken। फ़ाइल में बाकी सब कुछ optional है।
docker compose up --build
बस इतना ही। Telegram पर अपने bot को message करें और यह जवाब देगा। Signal, WhatsApp, email और अन्य विकल्पों के लिए नीचे दिए गए विस्तृत setup sections देखें।
config.example.toml को data/main/config.toml में copy करें।authFile (या apiKey) और publicHostname set करें। बाकी सब कुछ optional है।env.example को .env में copy करें और अपना timezone (TZ) set करें। Postgres credentials और अन्य environment settings भी वहाँ override किए जा सकते हैं। हमेशा POSTGRES_PASSWORD को किसी सुरक्षित चीज़ पर set करें — default एक कमज़ोर placeholder है और production में इसका उपयोग नहीं किया जाना चाहिए।App शुरू होने के बाद, browser में config.toml edit करने के लिए /settings/config खोलें। यह
पेज HTTP Basic Auth द्वारा सुरक्षित है और raw configuration प्रदर्शित करता है, जिसमें इसमें
मौजूद कोई भी secrets शामिल हैं। एक valid save एक ही <CONFIG_PATH>.bak backup बनाता है, नई
content save करता है, और app को restart करता है; यह किसी भी in-progress agent turn को बाधित करता है।
plugin-runner, coder, signal-bridge, और python-runner config.toml को केवल
तब पढ़ते हैं जब वे शुरू होते हैं। उन्हें प्रभावित करने वाले परिवर्तन, जैसे password, के लिए उन
containers को manually restart करना आवश्यक है।
Stavrobot को config.toml में baseUrl set करके किसी भी OpenAI-compatible endpoint (Ollama, LiteLLM, vLLM, आदि) या किसी custom Anthropic-compatible proxy की ओर point किया जा सकता है। आवश्यक fields और example configurations के लिए config.example.toml देखें।
App दो authentication modes support करता है: API key या OAuth।
config.toml में apiKey set करें। किसी login या logout की आवश्यकता नहीं।config.toml में authFile set करें (एक path जहाँ credentials संग्रहीत किए जाएँगे)। login page Pi द्वारा support किए जाने वाले किसी भी OAuth provider के साथ काम करता है।
<your-hostname>/login पर जाएँ। पेज पर दिए गए prompts का पालन करें, और credentials auth file में save हो जाते हैं। यदि bot चलते समय auth expire हो जाता है, तो यह आपके messaging platform के माध्यम से आपको login URL के साथ एक message भेजता है।authFile path पर मौजूद फ़ाइल को delete करें। bot अगले message पर missing credentials का पता लगाएगा और आपको फिर से log in करने के लिए prompt करेगा।coder container optional है (केवल self-programming feature के लिए आवश्यक)। यह subscription auth (OAuth) के साथ Claude Code का उपयोग करता है, जो मुख्य app के API key से अलग है।
Docker Compose profiles comma-separated हैं, इसलिए आप उन्हें combine कर सकते हैं (जैसे COMPOSE_PROFILES=signal,coder)।
.env फ़ाइल में COMPOSE_PROFILES को coder शामिल करने के लिए set करें (जैसे COMPOSE_PROFILES=coder, या यदि आप Signal भी उपयोग कर रहे हैं तो COMPOSE_PROFILES=signal,coder)।docker compose --profile coder up --builddocker compose exec -u coder coder claude (यदि आपने log in नहीं किया है तो यह आपको log in करने के लिए prompt करेगा)।[coder].model को Claude Code model alias (sonnet, opus, या haiku) पर set करें।Signal के लिए एक अलग phone number आवश्यक है — आपका व्यक्तिगत नहीं। एक prepaid SIM या VoIP number काम करता है।