network-user
ко всем проектам
Инструмент 19 Apr 2026 бета

.агенты

DotAgents

Телефон вибрирует, на экране: команда, которую хочет выполнить агент, и две кнопки: allow, deny.

суть

Cursor или Claude Code работает на твоей машине, а DotAgents стоит рядом и отдаёт тебе контроль через Telegram. Живое сообщение с тем, что агент делает прямо сейчас. Запрос на approve, когда он тянется к рискованной команде. Follow-up в очередь, пока ты в дороге. Всё локально: облачного релея нет, код с машины не уходит.

Платформа изнутри

Два экрана одной истории: слева в терминале работает Claude Code, справа в Telegram сидишь ты. Агент дошёл до опасной команды и встал; реши за него с телефона и посмотри, как контроль работает изнутри.

Два экрана одной сессии: слева Claude Code работает в терминале, справа ты управляешь им из Telegram: разрешаешь или отклоняешь каждую рискованную команду.

Твоя машина
claude - agent session
claude-opus · 0 tool calls
Твой телефон
DotAgents бот

Канал управления уходит в Telegram. Код, approvals и transcript остаются на машине: API слушает только 127.0.0.1.

Режим демона

Меняет, как решается следующий запрос.

Безопасность

  • passcode argon2id
  • HMAC + одноразовый nonce
  • только владелец
  • audit-log решений
  • API только 127.0.0.1
  • env без секретов при спавне
  • 19k+ строк
  • 132 теста
  • 3 миграции
  • long-poll 270 c

масштаб

размер и срок: что стоит за продуктом.

10 дней активной разработки от первого коммита до рабочего MVP, дальше полировка
~18k строк Python с тестами
33 коммита в одном репозитории
140 тестов pytest
15 команд в Telegram-боте
localhost loopback: код не уходит с машины

архитектура

loopback daemon polling spawn subprocess API pre-call approve? notify Telegram aiogram bot Approvals FastAPI loopback AgentRunner SQLite IDE hooks Agent CLIs LLM provider

Телефон владельца: статус, approve/deny, follow-up

  • aiogram bot polling

Long-polling: live-сообщение, HMAC-кнопки, режимы

  • FastAPI loopback spawn

Решение по риск-вызову: режим или владелец, fail-closed

  • aiogram bot notify

Демон на 127.0.0.1: сессии, события, approvals

  • AgentRunner
  • Approvals

Спавнит CLI-агента, качает stdout в события

  • Agent CLIs subprocess
  • SQLite

Fail-closed хуки в Cursor/Claude блокируют риск-вызов

  • FastAPI loopback approve?

claude / cursor-agent как подпроцессы, cwd=проект

  • LLM provider API
  • IDE hooks pre-call

Сессии, события, approvals, nonces и audit-log

Anthropic / OpenAI: зовёт сам CLI, не демон

Нажми на модуль: покажу его роль в системе.

стек

состав стека по слоям · 17
  • Язык 1
  • Фреймворк 4
  • Данные 3
  • Инфраструктура 5
  • Клиент 1
  • AI / ML 3

Язык

  • Python 3.12

Фреймворк

  • aiogram 3.27
  • FastAPI 0.111
  • Typer
  • structlog

Данные

  • SQLite
  • SQLAlchemy 2
  • Alembic

Инфраструктура

  • IDE hooks
  • loopback API
  • HMAC + nonce
  • argon2id
  • auto-migrations

Клиент

  • Telegram Bot API

AI / ML

  • Cursor IDE
  • Claude Code CLI
  • Antigravity

что умеет

ключевые возможности продукта прямо сейчас.

Approve / deny с телефона

Агент занёс руку над рискованной командой, хук замораживает выполнение и шлёт запрос в Telegram: сама команда и две кнопки. Allow запускает, deny или молчание отклоняют. Fail-closed по умолчанию, а не по настройке.

Хуки before_shell и before_mcp уходят в long-poll (до ~270 секунд) и ждут решения. Любая ошибка, таймаут или недоступность демона трактуются как deny с ненулевым кодом выхода. Класс риска считает сервер: агент не может понизить его сам, только эскалировать. То же решение доступно и в опциональном Mini App.

Live-статус одним сообщением

Пока агент работает, в чате живёт одно редактируемое сообщение: что он делает прямо сейчас, какие файлы трогает, последний ответ. Стоп-кнопка там же, IDE открывать не нужно.

LiveMessageService дебаунсит правки (~2.5 секунды), переживает 429 Retry-After и «message not modified», а при переполнении 4096 символов перекатывает хвост во второе сообщение. Если сообщению больше 48 часов, шлёт новое.

Спавн и follow-up из чата

Сессию агента можно завести прямо из Telegram: мастер /new проведёт от проекта к промпту. Следующая задача встаёт в FIFO-очередь и прилетает агенту, как только он освободится, а хвост транскрипта читается тут же, без IDE.

Супервизор AgentRunner поднимает CLI-агента подпроцессом: подаёт follow-up'ы в stdin, сливает stderr, гонит stdout в поток событий. FollowupService выдаёт задачи по одной с блокировкой строки (skip_locked, с fallback для SQLite). История Cursor импортируется, транскрипт Claude Code синхронизируется живым SSE.

Три агента, один мост

Хуки ставятся в Cursor, Claude Code и Antigravity одной командой Typer-CLI. Для Cursor и Claude Code сессию можно ещё и заспавнить из Telegram; Antigravity пока подключается только через хуки.

CLI сам разводит хуки по всем трём агентам и регистрирует проекты (dotagents project add). Bot-спавн Antigravity ждёт headless-CLI от вендора, поэтому для него доступен именно контур approve/deny, а не запуск из чата.

Security-first, всё локально

Argon2id на входе, HMAC плюс nonce на каждом callback, whitelist владельца, полный audit-log, а API живёт только на 127.0.0.1. Ни облачного релея, ни выхода кода с машины.

Nonce одноразовый и с истечением, поэтому replay и подделка callback не проходят. Перед спавном из окружения вырезаются секреты (токен бота, HMAC-ключ), cwd форсится в каталог проекта, shell=True не используется, а секрет заголовка сверяется constant-time.

Три режима на сессию

remote спрашивает по каждому защищённому действию, readonly пропускает и только уведомляет, standby молча отклоняет опасное. Режим переключается и глобально, и по отдельной сессии.

AgentMode задаёт политику ask, allow или deny. Сессии живут в SQLite с idle- и абсолютным TTL, а SessionReaper подчищает просроченные.

хронология

как продукт рос от первой версии.

  1. 19 Apr 2026

    Stage 1: мост безопасности за день

    За день поднят каркас и рабочий мост: FastAPI на loopback, aiogram-бот, SQLAlchemy 2 с Alembic. Хуки Cursor и Claude Code, fail-closed approve/deny, три режима, passcode на argon2id, HMAC с nonce и audit-log.

  2. 22 Apr 2026

    Stage 2: агенты прямо из Telegram

    Сессию агента можно заспавнить из бота: мастер /new (проект, агент, промпт), супервизор подпроцессов AgentRunner, loopback-команды spawn/input/stop, реестр проектов через CLI и авто-миграции на старте.

  3. 23 Apr 2026

    Telegram Mini App

    Опциональный Mini App на /webapp: живой SSE-стрим, транскрипт и approve/deny в веб-вью. Owner-only, вход по initData с HMAC.

  4. 29 Apr 2026

    Сессии и синхронизация транскрипта

    Управление сессиями из чата, инлайн-действия (режим, refresh, stop), живая синхронизация транскрипта Claude Code через SSE и approve/deny-UI в Mini App.