Три 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 секунд.