community-projects
AI Usage Ball следит за остатком квоты Claude на Mac
Claude News
community-projectsВ Show HN представили AI Usage Ball, приложение для macOS, которое показывает остаток квоты Claude, Codex/ChatGPT и Antigravity анимированными жидкими шарами с сессионными и недельными лимитами и обратным отсчётом до сброса. Полный исходный код выложен на Github, включая бэкенд, который и читает данные с машины.
Коротко
- Данные собирает локальный бэкенд на FastAPI по адресу 127.0.0.1:8000: он опрашивает уже имеющиеся на машине сессии и учётные данные и передаёт состояние в интерфейс через SSE.
- Подписанная и нотаризованная сборка для Apple Silicon идёт с 30-дневным пробным периодом без карты, а первые 100 человек, приславшие содержательный отзыв, могут претендовать на бесплатную пожизненную персональную лицензию.
- Пользователь видит сессионные и недельные лимиты вместе с обратным отсчётом до сброса на одном экране и не открывает интерфейс каждого провайдера по отдельности перед долгой сессией.
Лимиты в подписках на инструменты кодинга остаются в стороне от рабочего процесса: сессионное окно заканчивается посреди задачи, а недельная квота видна только в интерфейсе конкретного провайдера. Приложение выглядит как попытка закрыть этот разрыв на уровне рабочего стола. Цена такого решения в том, что программе приходится обращаться к cookie браузера и файлам с учётными данными, и открытые исходники здесь, судя по всему, основной аргумент в пользу доверия.
Claude бэкенд читает через cookie браузера, Codex через файл ~/.codex/auth.json
Для Claude бэкенд использует cookie сессии браузера или учётные данные CLI. Данные Codex он берёт из файла ~/.codex/auth.json, а наличие Antigravity определяет по локальному процессу. Все три источника уже присутствуют на машине: приложение читает существующие сессии и учётные записи пользователя.
Логика опроса собрана в файле server/server.py, и репозиторий называет именно его точкой истины по тому, что и откуда считывается. Полученные значения бэкенд отдаёт фронтенду потоком SSE по локальному адресу 127.0.0.1:8000. Через серверы разработчика приложения данные не проходят, промежуточного прокси в схеме нет.
Назначение в репозитории описано просто: держать лимиты на виду до того, как сессия неожиданно оборвётся, и видеть окна сброса, не обходя провайдеров по очереди. Отдельно указана возможность проверить сами считыватели, которые собирают состояние использования с Mac, поскольку их код опубликован целиком.
Интерфейс собран на Tauri v2 с React, бэкенд упакован в сайдкар PyInstaller
Репозиторий разбит на четыре каталога. В dashboard лежит само десктопное приложение: Tauri v2 на Rust с фронтендом на React, главное окно, виджеты рабочего стола и визуализация с жидкими шарами. В server находится Python-бэкенд на FastAPI, в landing исходники маркетингового сайта aiusageball.com, статический HTML без шага сборки.
В релизной сборке бэкенд превращается в самодостаточный сайдкар, чтобы конечному пользователю не требовался Python. PyInstaller сначала собирает его в один бинарник aipulse-server, затем файл кладут под именем aipulse-server-aarch64-apple-darwin, куда его ожидает Tauri, и только после этого запускают npm run tauri:build.
Подпись и нотаризация требуют собственного идентификатора Apple Developer, он указывается в tauri.conf.json. В entitlements.plist прописан disable-library-validation: без этого флага сайдкар PyInstaller не загрузит встроенный Python под hardened runtime. Для разработки хватает неподписанной локальной сборки, запускаемой через npm run tauri:dev.
Лицензия PolyForm Noncommercial 1.0.0 закрывает коммерческое использование кода
Код распространяется по PolyForm Noncommercial License 1.0.0: читать, проверять, изменять и собирать исходники разрешено для личного и некоммерческого применения. Коммерческие сценарии, включая продажу, встраивание в другие продукты и предоставление платного сервиса, лицензией не допускаются, за ними автор предлагает обращаться напрямую. Сами исходники опубликованы ради аудита и некоммерческих самостоятельных сборок.
Ссылка на официальную подписанную и нотаризованную сборку для Apple Silicon размещена в репозитории, и, по формулировке автора, именно её покупка поддерживает дальнейшую разработку. Каждая загрузка включает 30-дневный пробный период, банковская карта для него не нужна. Первые сто пользователей, которые опробуют приложение и пришлют содержательный отзыв, могут подать заявку на бесплатную пожизненную персональную лицензию.
Статус watchOS-компаньона
Каталог AiPulseWatch с компаньоном для watchOS на SwiftUI помечен как незавершённая работа: ни сроков выпуска, ни перечня функций репозиторий не приводит. Не указана там и цена постоянной лицензии после 30-дневного пробного периода, за деталями репозиторий отсылает на сайт проекта. Порядок отбора первых ста участников и срок подачи заявок тоже не описаны.
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.
Из Google мы используем только имя и аватар. Почту не сохраняем.
