Skip to content

Repository files navigation

Русский · English

Codex Limit Bar

Codex Limit Bar

Нативный индикатор оставшихся лимитов OpenAI Codex для строки меню macOS.

Скачать последнюю версию

Поддержите разработку

Поддержка помогает развивать приложение, проверять новые версии Codex и готовить подписанные сборки.

Поддержать разработку через Tribute Поддержать разработку через NOWPayments
Telegram-канал svllvsxprod

Swift 6 macOS 14+ Apple Silicon Release 0.2.1

Возможности · Установка · Безопасность · Разработка · Ограничения

О Проекте

Codex Limit Bar живёт только в строке меню и показывает фактический оставшийся процент Codex, длительность окна и время следующего сброса. Приложение не создаёт обычное окно и не занимает место в Dock.

Данные обновляются сразу после запуска и затем каждые три минуты в фоне. Последний успешный результат сохраняется как stale snapshot при временной ошибке.

Проект является независимой утилитой и не аффилирован с OpenAI.

Интерфейс

Codex Limit Bar в строке меню macOS

Возможности

  • Фактический остаток основного недельного или короткого окна Codex.
  • Дополнительные лимиты моделей, если они присутствуют в ответе аккаунта.
  • Точное локальное время следующего сброса.
  • Состояния загрузки, stale data, истёкшей авторизации, rate limit, сети, VPN-gate и неизвестного формата.
  • Ручное обновление без параллельных дублирующихся запросов.
  • Фоновое обновление лимитов каждые три минуты, даже когда панель закрыта.
  • Автозапуск через системный SMAppService.
  • Автономный ChatGPT device login с хранением собственной сессии в macOS Keychain.
  • Динамический процент остатка под OpenAI blossom в строке меню.
  • Автоматическая локализация интерфейса на английский или русский язык системы.
  • Нативная реализация на SwiftUI и AppKit без сторонних runtime-зависимостей.

Установка

  1. Скачайте Codex-Limit-Bar-0.2.1.dmg из GitHub Releases.
  2. Откройте DMG и перенесите Codex Limit Bar.app в Applications.
  3. Запустите приложение. Для ad-hoc сборки macOS может потребовать первый запуск через контекстное меню Открыть.
  4. В панели приложения нажмите Автономный вход, вставьте скопированный код на открывшейся странице ChatGPT и завершите авторизацию.
  5. При необходимости разрешите автозапуск в Настройки системы → Основные → Объекты входа.

До автономного входа приложение может временно использовать локальную авторизацию Codex CLI или OpenCode как read-only fallback. После входа Codex Limit Bar хранит и обновляет собственную сессию независимо от запущенного OpenCode.

Проверка VPN

Перед каждым запросом к OpenAI приложение параллельно отправляет credential-free HEAD запросы к YouTube, Speedtest и WhatsApp.

  • Если отвечает хотя бы один сервис, запрос к OpenAI разрешается.
  • Если недоступны все три сервиса, приложение не читает локальный токен и не обращается к OpenAI.
  • Таймаут каждой проверки составляет 5 секунд.

Это продуктовая эвристика доступности, а не проверка конкретного VPN-интерфейса или маршрута.

Архитектура

MenuBarExtra window
  -> UsageStore
  -> PublicServiceConnectivityGate
  -> ChatGPTAuthManager / Keychain
  -> LocalChatGPTAuthLoader fallback
  -> LiveCodexUsageProvider
  -> chatgpt.com/backend-api/wham/usage
  • UI зависит от CodexUsageProviding, а не от transport response.
  • Парсер, OAuth retry, локальная авторизация, wake refresh, VPN-gate и refresh state тестируются отдельно.
  • Refresh-запросы coalesce и не создают параллельный polling loop.
  • Release pipeline собирает .app, .icns, DMG и SHA-256 checksum.

Безопасность

  • Токены никогда не записываются в код, fixtures, logs или release artifacts.
  • Auth-файлы принимаются только с приватными POSIX-правами без доступа group/other.
  • Собственная OAuth-сессия Codex Limit Bar хранится как generic password в macOS Keychain.
  • Токен хранится только в памяти и отправляется исключительно на точный HTTPS origin chatgpt.com.
  • VPN-проверки не получают токен, account ID или другие OpenAI credentials.
  • Используются ephemeral URLSession, отключённый URL cache и bounded timeouts.
  • Приложение только читает auth-файлы Codex/OpenCode и никогда их не изменяет; обновляется только собственная Keychain-сессия.

Подробности источника данных: docs/usage-source.md.

Разработка

Требования:

  • macOS 14 или новее.
  • Xcode 26 / Swift 6.2 или новее.
  • Apple Silicon для текущего готового DMG.
swift test
swift run CodexLimitBar

Сборка app bundle:

./scripts/build-app.sh
open dist/CodexLimitBar.app

Сборка DMG:

./scripts/build-dmg.sh

Артефакт и SHA-256 checksum будут записаны в release/.

Ограничения

  • wham/usage используется официальным open-source Codex client, но не документирован как стабильный публичный API.
  • Fallback на локальный OpenCode OAuth является неподдерживаемой интеграцией и может измениться вместе с форматом OpenCode auth.
  • Приложение не обновляет и не принимает во владение OAuth credentials другого клиента; автономный device login создаёт отдельную app-owned сессию.
  • Текущий публичный DMG собран для Apple Silicon.
  • Сборка подписана ad-hoc и не нотарифицирована Apple; для публичной production-дистрибуции потребуется Developer ID и notarization.
  • macOS может потребовать ручное подтверждение login item.

About

Native macOS menu bar utility for monitoring remaining OpenAI Codex usage limits.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages