Как я создал статус-бар для Claude Code с мониторингом VPS за одну сессию

Как я создал статус-бар для Claude Code с мониторингом VPS за одну сессию

Три VPS, MCP SSH, сессии по 10–15 часов. Каждый раз одни и те же вопросы: сколько контекста использовано? Пора ли делать компакт? Какой сервер под нагрузкой? Ни один из существующих статус-баров это не показывал. Я собрал свой — за одну сессию в claude.ai.

Вот как это выглядит в реальной рабочей сессии:

100 часов, 8320 строк кода, $40 — столько стоила бы сессия без подписки Max. Всё это видно одним взглядом, не выходя из потока. Чистый bash + jq. Без Node.js. Устанавливается одной командой прямо из Claude Code.

Что отображается в статус-линии

  • Модель: какая модель используется в данный момент.
  • Ветка: например, feature/redesign-v3, с индикатором незакоммиченных изменений.
  • Изменения в коде: +8320/-1468 строк — объём добавленного и удалённого кода за сессию.
  • Стоимость сессии: сколько денег потрачено (или было бы потрачено без подписки).
  • Лимиты: H:64% 2h28m — остаток 5-часовой квоты, W:51% — недельной.
  • Длительность сессии: сколько времени прошло с начала работы.
  • Ресурсы сервера: RAM и диск активного VPS, с автофокусом.
  • Контекст: 28% — отображается цветом: зелёный (до 50%), жёлтый (50–70%), красный (выше 70%).

VPS-мониторинг — главная фича

Именно ради этого всё и затевалось. Работаю с тремя серверами через MCP SSH — и вижу их состояние, не выходя из интерфейса Claude Code.

Архитектура:

  • vps-poller.sh: фоновый демон, опрашивает серверы каждые 30 секунд по SSH. Собирает RAM, CPU, диск, uptime. Результаты кэшируются в /tmp/vps-*.json.
  • statusline.sh: читает кэш мгновенно — без задержек.

Статусы отображаются так:

  • main● (ОК) — сервер в норме.
  • sec◉ (R:87% D:93%) — повышенная нагрузка.
  • new✗ DOWN — сервер упал.
  • main↻ — сервер перезагружается.

Когда всё в порядке, отображаются только точки. При проблеме — автоматически показываются метрики проблемного сервера.

Автофокус: отслеживает, с каким сервером вы работаете

Фича родилась из раздражения: три VPS — но хочется видеть метрики только активного.

Claude Code записывает каждый вызов инструмента в transcript. Скрипт анализирует последние 20 КБ лога двумя способами:

  • Стратегия 1: ищет команды ssh/scp/sftp и сопоставляет IP с VPS_SERVERS. Например, если Claude выполнил ssh root@95.85.234.200 free -m — активный сервер определяется как main.
  • Стратегия 2 (фоллбек): ищет имена MCP-серверов — для тех, кто работает с VPS исключительно через MCP SSH.

Дополнительная настройка не требуется — IP уже указаны в конфиге для поллера. Активный сервер помечается маркером ▶.

Стоимость и лимиты

Скрипт сам определяет, используете ли вы подписку:

  • Если подписка активна (cost=0) — показывает теоретическую стоимость сессии.
  • Если используется API (cost>0) — отображает реальные затраты.

Например, $40.72 — столько стоила бы 100-часовая сессия на Opus без подписки Max. После этого начинаешь по-настоящему ценить свои $100 в месяц.

Остаток лимитов:

  • H: 64% (2h28m) — 5-часовая квота.
  • W: 51% — недельная квота.

Идея взята у @AndyShaman/claude-statusline — спасибо за документацию OAuth API. Скрипт читает токен из системного хранилища учётных данных, кэширует его на 2 минуты.

Установка

Запустите Claude и скажите:

Установи статус-бар для Claude Code с мониторингом VPS.

Или вручную:

Windows: устанавливать нужно из Claude Code, а не из PowerShell — .sh-файлы требуют окружения bash.

Перезапустите Claude Code — готово.

Для VPS: добавьте серверы в конфиг и запустите поллер.

Баги первого дня

Проект собран за одну сессию, запущен и протестирован сразу на себе. За первые два часа обнаружено четыре бага:

  • chmod не работает в PowerShell — инструкция переписана: установка только из Claude Code.
  • .credentials vs credentials.json — в Windows OAuth-токен сохраняется с расширением .json.
  • echo с вложенными кавычками вызывал невалидный JSON — заменён на printf.
  • command -v bash возвращал путь с пробелами (C:/Program Files/...) — теперь используется просто bash.

Все исправлены в тот же день. Open source — это не идеальный код с первого коммита, а живой проект.

Проект: bash + jq, около 650 строк кода. Устанавливается за 30 секунд.

Читать оригинал