Перейти к содержанию

Проекты сообщества

AI Usage Ball следит за остатком квоты Claude на Mac

3 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: Цены и лимиты Claude →
Изображение: github.com

Авторы AI Usage Ball 3 сентября показали в Show HN десктопное приложение для macOS. Оно выводит остаток квот Claude, Codex / ChatGPT и Antigravity анимированными жидкими шарами, а полный исходник лежит в репозитории на Github. Опубликован он, по словам авторов, затем, чтобы любой мог проверить, что именно приложение читает с вашей машины и каким способом.

В главном окне и виджетах на рабочем столе видны сессионные и недельные лимиты и обратный отсчёт до их сброса, так что заходить к каждому провайдеру отдельно не нужно. Для Claude так видны сразу оба ограничения. У Anthropic каждый план ограничен скользящим пятичасовым окном, а у платных поверх него стоит недельный лимит. Запросы из веба, десктопа, мобильного приложения и Claude Code расходуют общий пул. Недельный бюджет сбрасывается раз в неделю, в день и час, закреплённые за аккаунтом. Точного числа сообщений Anthropic не публикует, сравнения между планами только относительные: Pro даёт как минимум впятеро больше, чем Free, за пятичасовую сессию, а Max в 5 или 20 раз больше, чем Pro. Внутри Claude Code остаток показывает команда /usage, на claude.ai он лежит в Settings → Usage.

Внутри приложения две части. Интерфейс в dashboard/ написан на Tauri v2 (Rust) и React, там же визуализация с шарами. Бэкенд в server/ - сервис на Python и FastAPI, который слушает 127.0.0.1:8000 и передаёт данные фронтенду потоком через SSE (server-sent events, односторонний поток событий по HTTP). Источники у каждого провайдера свои:

  • Claude: cookie сессии в браузере или учётные данные CLI;
  • Codex: файл ~/.codex/auth.json;
  • Antigravity: обнаружение локального процесса.

Всё читается локально, из сессий и учётных данных, которые уже есть на машине. Через сервер разработчиков ничего не проксируется. Логика опроса собрана в server/server.py, и авторы называют этот файл источником истины о том, что именно читается и откуда.

Запустить всё из исходников можно в два шага. Бэкенд: в каталоге server создать venv, выполнить pip install -r requirements.txt и python server.py. Интерфейс: в dashboard выполнить npm install и npm run tauri:dev. Неподписанные локальные сборки для разработки работают, а для подписи и нотаризации понадобится собственный Apple Developer ID, его прописывают в tauri.conf.json.

В релизной сборке бэкенд заморожен PyInstaller в один бинарник и вшит в приложение как sidecar (вспомогательный процесс, который Tauri запускает рядом с основным), поэтому ставить Python конечному пользователю не нужно. Среди собираемых пакетов есть browser_cookie3, через него и читаются cookie браузера. Бинарник кладётся под именем с целевой платформой aarch64-apple-darwin, а готовая подписанная сборка выпущена только для Apple Silicon. В entitlements.plist стоит disable-library-validation: без него sidecar не загрузит встроенный Python в режиме hardened runtime.

Кроме самого приложения, в репозитории лежат исходники сайта aiusageball.com (статический HTML без сборки) и компаньон для watchOS на SwiftUI под названием AiPulseWatch, который пока не доделан.

Подписанную сборку можно бесплатно пробовать 30 дней, карту при этом не просят. Первые 100 пользователей, которые попробуют приложение и пришлют содержательный отзыв, могут подать заявку на бесплатную пожизненную персональную лицензию. Цену обычной лицензии не назвали. Код распространяется по PolyForm Noncommercial License 1.0.0: читать, проверять, менять и собирать его для личных некоммерческих нужд можно, а продавать, встраивать в свои продукты или запускать платным сервисом нельзя. За коммерческим использованием авторы предлагают обращаться к ним напрямую, а продажа официальной сборки, по их словам, оплачивает дальнейшую разработку.

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.