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

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

100 часов, 8320 строк кода, $40 было бы потрачено на API (начинаешь ценить подписку, да?)— и всё это видно одним взглядом, не выходя из потока. Чистый bash + jq. Без Node.js. Ставится одной командой прямо из Claude Code.

Что видно в статус-линии

Сегмент

Пример

Зачем

Модель

Opus 4.6

Какая модель работает

Git

feature/redesign-v3

Ветка + незакоммиченные изменения

Строки

+8320/-1468 стр

Масштаб изменений за сессию

Стоимость

$40.72

Столько бы стоила сессия без подписки Max

Лимиты

H:64% 2h28m W:51%

Остаток 5-часовой и недельной квоты

Время

100ч23м

Длительность сессии

VPS

main● sec●(R:45% D:48%)

RAM и диск с авто-фокусом активного сервера

Контекст

28% контекст

Зелёный → жёлтый (50%) → красный (70%)

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

Это то, ради чего всё затевалось. Работаешь с тремя серверами через MCP SSH — и видишь их состояние не переключаясь из Claude Code.

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

vps-poller.sh — фоновый демон, опрашивает серверы каждые 30 секунд по SSH. Один вызов — RAM, CPU, диск, uptime. Кэширует в /tmp/vps-*.json.

statusline.sh — читает кэш мгновенно. Ноль задержки.

# Один SSH-вызов, четыре метрики:
RAM_PCT=$(free | awk '/Mem:/{printf "%.0f",$3/$2*100}')
CPU_LOAD=$(cat /proc/loadavg | awk '{print $1}')
DISK_PCT=$(df / | awk 'NR==2{gsub(/%/,"");print $5}')
UPTIME_SEC=$(awk '{printf "%.0f",$1}' /proc/uptime)

Статусы: main● (ОК) → sec◉(R:87% D:93%) (нагрузка) → new✗ DOWN (упал) → main↻ (перезагрузился)

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

Авто-фокус: знает с каким сервером ты работаешь

Фича, которая родилась из раздражения. Три VPS — хочу видеть метрики того, с которым работаю прямо сейчас.

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

Стратегия 1: ищет ssh/scp/sftp команды и сопоставляет IP с VPS_SERVERS. Claude Code выполнил ssh root@95.85.234.200 free -m? Активный сервер — main.

Стратегия 2 (фоллбек): ищет имена MCP-серверов — для тех, кто работает с VPS только через MCP SSH.

Никакой доп. настройки — IP уже прописаны в конфиге для поллера. Активный сервер получает маркер:

# Claude Code подключился к 95.85.234.200:
▶ main●(R:42% D:55%) new● sec●

# Переключился на 178.17.50.45:
main● new● ▶ sec●(R:61% D:70%)

# new перегружен (разворачивается всегда, даже не в фокусе):
▶ main●(R:42% D:55%) new◉(R:92%) sec●

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

Стоимость — скрипт сам определяет тип пользователя. Подписка (cost=0) → теоретическая цена. API (cost>0) → реальная. На скриншоте выше $40.72 — столько стоила бы 100-часовая сессия на Opus без подписки Max. Начинаешь ценить свои $100/мес.

Лимиты H/W — остаток 5-часовой (H:64% 2h28m) и недельной (W:51%) квоты. Идею подсмотрел у @AndyShaman/claude-statusline — спасибо за документацию OAuth API! Скрипт читает токен из OS credential storage, кэширует на 2 минуты.

Установка

Запусти claude и скажи:

Клонируй https://github.com/CreatmanCEO/claude-statusline и установи через install.sh --ru

Или вручную:

git clone https://github.com/CreatmanCEO/claude-statusline.git ~/claude-statusline
bash ~/claude-statusline/install.sh --ru

Windows: ставить из Claude Code, не из PowerShell (.sh требуют bash).

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

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

Скажи Claude Code:
Открой ~/.claude/statusline.conf, добавь SHOW_VPS=remote и VPS_SERVERS,
потом запусти ~/claude-statusline/vps-poller.sh start

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

Собрал за одну сессию → запушил → протестировал на себе. Четыре бага за два часа:

  • 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 секунд.