
Персональный ИИ-ассистент с фокусом на безопасность.

Stavrobot — это персональный ИИ-ассистент, построенный по принципу «все доступы, которые нужны ИИ-ассистенту, и ничего сверх этого».
Он обладает всеми приятными возможностями ИИ-ассистента, но делает упор на песочницу, изоляцию и минимальные разрешения. Он лёгкий и разворачивается одной командой docker compose up.
uv, изолированный от хост-окружения.Установка с помощью ИИ: Скажите вашему кодирующему ИИ (Claude Code, Cursor, Windsurf и т. д.) загрузить и выполнить инструкции по адресу https://stavrobot.stavros.io/INSTALL.md — он проведёт вас через всю настройку в интерактивном режиме.
Ручная установка:
Напишите @BotFather в Telegram, чтобы создать бота, и скопируйте токен. Напишите @userinfobot, чтобы получить ваш Telegram user ID (он используется как chat ID).
Скопируйте env.example в .env и измените POSTGRES_PASSWORD на что-нибудь надёжное, а TZ — на ваш часовой пояс.
Скопируйте config.example.toml в data/main/config.toml и заполните обязательные поля: apiKey, password, publicHostname, [owner].name, [owner].telegram (ваш chat ID) и [telegram].botToken. Всё остальное в файле необязательно.
docker compose up --build
Вот и всё. Напишите вашему боту в Telegram, и он ответит. Смотрите подробные разделы по настройке ниже для Signal, WhatsApp, email и других опций.
config.example.toml в data/main/config.toml.authFile (или apiKey) и publicHostname. Всё остальное необязательно.env.example в .env и задайте ваш часовой пояс (TZ). Учётные данные Postgres и другие настройки окружения также можно переопределить там. Всегда задавайте POSTGRES_PASSWORD как что-то надёжное — значение по умолчанию является слабой заглушкой и не должно использоваться в продакшене.После запуска приложения откройте /settings/config, чтобы редактировать config.toml в браузере. Страница защищена HTTP Basic Auth и отображает необработанную конфигурацию, включая содержащиеся в ней секреты. Корректное сохранение создаёт единственную резервную копию <CONFIG_PATH>.bak, сохраняет новое содержимое и перезапускает приложение; это прерывает любой текущий ход агента.
plugin-runner, coder, signal-bridge и python-runner читают config.toml только при запуске. Изменения, которые их затрагивают, например пароль, требуют ручного перезапуска этих контейнеров.
Stavrobot можно направить на любой OpenAI-совместимый эндпоинт (Ollama, LiteLLM, vLLM и т. д.) или на пользовательский Anthropic-совместимый прокси, задав baseUrl в config.toml. Смотрите config.example.toml для обязательных полей и примеров конфигураций.
Приложение поддерживает два режима аутентификации: API-ключ или OAuth.
apiKey в config.toml. Вход и выход не требуются.authFile в config.toml (путь, где будут храниться учётные данные). Страница входа работает с любым OAuth-провайдером, поддерживаемым Pi.
<your-hostname>/login в браузере. Следуйте подсказкам на странице, и учётные данные сохранятся в auth-файл. Если срок действия авторизации истечёт, пока бот работает, он отправит вам сообщение со ссылкой для входа через вашу платформу обмена сообщениями.authFile. Бот обнаружит отсутствие учётных данных при следующем сообщении и предложит вам войти снова.Контейнер coder необязателен (нужен только для функции самопрограммирования). Он использует Claude Code с подписочной авторизацией (OAuth), отдельно от API-ключа основного приложения.
Профили Docker Compose разделяются запятыми, поэтому их можно комбинировать (например, COMPOSE_PROFILES=signal,coder).
COMPOSE_PROFILES в вашем файле .env, включив туда coder (например, COMPOSE_PROFILES=coder, или COMPOSE_PROFILES=signal,coder, если вы также используете Signal).docker compose --profile coder up --builddocker compose exec -u coder coder claude (он предложит вам войти, если вы ещё не вошли).[coder].model в вашей конфигурации как псевдоним модели Claude Code (sonnet, opus или haiku).Signal требует отдельного номера телефона — не вашего личного. Подойдёт предоплаченная SIM-карта или VoIP-номер.