Кабинет управления своими AI-агентами с телефона. Непрерывный агент на каждый тред плюс Mini App-диспетчерская: весь флот твоих сессий, переписка внутри Telegram, пуш когда агент закончил.
Один мощный агент держит весь контекст. Продолжаемые сессии переживают рестарт. Работает до результата, делегирует суб-агентам, использует твои skills — не сваливает работу обратно вопросами.
Весь флот сессий Claude Code / Cursor по зонам: 🔴 требуют тебя · 🟢 работают · ✓ готово · 💤 простаивают. Статусы, время, бейджи непрочитанного — видно с одного экрана, кто чего ждёт.
Открываешь любую сессию — вся история переписки, пишешь агенту, видишь как он печатает и какие инструменты гоняет в реальном времени. Не выходя из Telegram.
Необратимое — публикация, оплата, rm -rf, git push — требует твоего тапа прямо в потоке чата. Ничего не уходит наружу без явного «да».
Несколько сессий работают одновременно, каждая в своём слоте. Пишешь одному — второй молотит в фоне. Управляешь всей армией из одного места.
Скрепка — приложить файл или фото агенту. Меню чата — остановить ход, начать новый, сменить модель (Opus / Sonnet / Haiku) прямо на лету.
Агент закончил фоном, а ты не в чате — бот пишет в личку с кнопкой «открыть». Поставил задачу, ушёл, вернулся по сигналу.
Видит и продолжает desktop-сессии, запущенные на том же сервере. Сессия из Cursor — продолжаешь её с телефона, и наоборот.
Нужен Linux-VPS с Python 3.11+. Установи и авторизуй Claude Code под тем пользователем, под которым будет жить бот (режим подписки) — либо подготовь платный Anthropic API-ключ.
# под аккаунтом cranchagency
git clone https://github.com/cranchagency/tg-cockpit ~/tg-cockpit
cd ~/tg-cockpit
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
Создай бота у @BotFather, получи токен. Свой Telegram user id узнай у @userinfobot.
cp .env.example .env nano .env
Минимум: TG_BOT_TOKEN, TG_ALLOWED_CHAT_IDS, CLAUDE_WORKSPACE (корень твоей рабочей системы), MINIAPP_URL. Остальное — опционально (см. таблицу ниже).
claude # пройди вход один раз под этим пользователем
В режиме подписки (по умолчанию) ключ API гасится автоматически — агент идёт через твою подписку.
Mini App требует публичный HTTPS. Добавь блок из Caddyfile.example в свой Caddyfile (подставь домен = MINIAPP_URL), перезагрузи Caddy. Затем в BotFather → Bot Settings → Menu Button впиши тот же URL.
cockpit.example.com {
reverse_proxy 127.0.0.1:8124
}
mkdir -p ~/.config/systemd/user
cp tg-cockpit.service ~/.config/systemd/user/
loginctl enable-linger $USER
systemctl --user daemon-reload
systemctl --user enable --now tg-cockpit
journalctl --user -u tg-cockpit -f # логи
Готово. Напиши боту в Telegram — он ответит. Команда /app открывает кабинет.
| Переменная | Назначение | |
|---|---|---|
TG_BOT_TOKEN | токен бота от BotFather | обязат. |
TG_ALLOWED_CHAT_IDS | твои Telegram user id через запятую (whitelist доступа) | обязат. |
CLAUDE_WORKSPACE | корневая рабочая папка агента — твой код и система | обязат. |
MINIAPP_URL | публичный HTTPS-домен дашборда | для Mini App |
MINIAPP_PORT | локальный порт backend (по умолчанию 8124) | опц. |
COCKPIT_USE_API_KEY + ANTHROPIC_API_KEY | платный API вместо подписки | опц. |
COCKPIT_OWNER_NAME | как агент обращается к владельцу | опц. |
COCKPIT_FORCE_IPV4 | если Telegram таймаутит (сломанный IPv6 у хостера) | опц. |
TG_PROXY | SOCKS5-прокси если Telegram режется провайдером | опц. |
COCKPIT_VOICE + ELEVENLABS_API_KEY | голосовые ответы (TTS) | опц. |
.env, который не коммитится. Никаких ключей в коде.