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

100 часов, 8320 строк кода, $40 было бы потрачено на API (начинаешь ценить подписку, да?)— и всё это видно одним взглядом, не выходя из потока. Чистый bash + jq. Без Node.js. Ставится одной командой прямо из Claude Code.
Что видно в статус-линии
Сегмент | Пример | Зачем |
|---|---|---|
Модель |
| Какая модель работает |
Git |
| Ветка + незакоммиченные изменения |
Строки |
| Масштаб изменений за сессию |
Стоимость |
| Столько бы стоила сессия без подписки Max |
Лимиты |
| Остаток 5-часовой и недельной квоты |
Время |
| Длительность сессии |
VPS |
| RAM и диск с авто-фокусом активного сервера |
Контекст |
| Зелёный → жёлтый (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.credentialsvs.credentials.json→ Windows хранит OAuth-токен с.jsonechoс вложенными кавычками → невалидный JSON →printfcommand -v bash→"C:/Program Files/..."с пробелами → простоbash
Все пофикшены в тот же день. Open source — это не идеальный код с первого коммита, а живой проект.
Ссылки
Репозиторий: github.com/CreatmanCEO/claude-statusline
Вдохновение по лимитам H/W: @AndyShaman/claude-statusline
Предыдущая статья: Как я перестал бояться Claude Code — CLAUDE.md, субагенты, хуки
Документация statusline API: code.claude.com/docs/en/statusline
bash + jq, ~650 строк. Ставится за 30 секунд.
