# AI Limits Маленький нативний floating-віджет для Windows 11, що показує ліміти використання AI-провайдерів прямо на робочому столі: **Claude**, **OpenAI Codex**, **GitHub Copilot**, **Google Antigravity**. 🇬🇧 [English version](README.md) · [Сайт](https://napxlexn.github.io/ailimits/)

Floating-віджет наживо перемикається між рівнями деталізації Compact, Medium і Expanded з горизонтальними смужками
Три рівні деталізації: Compact, Medium, Expanded. Перемикаються без перезапуску; опційний прогноз burn-rate (~час до ліміту) з’являється в метарядку. Тут із горизонтальними смужками.

Індикатор на таскбарі: курсор їде з робочого столу на панель, а потім на трей-кільця, при наведенні tooltip зʼявляється над кожним на однаковій висоті, і кожен режим перемикається між темною та світлою темами Windows
Коли віджет прихований, показник лишається на панелі завдань. Іконка в треї показує два найнавантаженіші провайдери двома кільцями. Наведення на будь-який дає повний список. Обидва слідують світлій і темній темі системи.

Ті самі рівні деталізації з вертикальними смужками
Ті самі три рівні з вертикальними смужками.
Віджет звужується кроками ширини; на найвужчому назви провайдерів зникають, а смужки займають їхнє місце
Три кроки ширини. На найвужчому назви провайдерів прибираються, а смужка займає їхню колонку, тож нічого не накладається.
Фон віджета йде від майже повністю прозорого до майже суцільного, а текст лишається читабельним
Непрозорість фону, від майже прозорого до майже суцільного. Контраст тексту і смужок не змінюється.
Віджет росте від одного рядка провайдера до чотирьох і назад
Розмір картки залежить від того, скільки провайдерів увімкнено: від одного до чотирьох.
Віджет циклічно проходить монохром і вісім кольорових палітр зі зміною яскравості, насиченості та напівпрозорості
Монохром і вісім кольорових палітр, разом із яскравістю, насиченістю та непрозорістю фону. Малює сам застосунок.
Розкладка з вертикальними смужками перемикається між провайдерами в ряд і провайдерами, складеними у високий вузький стовпчик
З вертикальними смужками провайдери стоять поруч або складаються в колонку.
## Що він робить - **Тільки читає.** Він читає токени, які офіційні CLI-інструменти вже зберігають на твоїй машині. Ніколи не оновлює і не ротує їх, тож не може розлогінити тебе з цих інструментів. Ключі, які ти додаси сам, зберігаються у Windows Credential Manager. Застосунок звертається лише до endpoint'ів самих провайдерів і не надсилає телеметрії. - **Без налаштування.** Твоя звичайна робота з CLI тримає токени дійсними, тож нема куди логінитися і нема чого конфігурувати. - **Низьке навантаження, виміряне на запущеному застосунку.** 0.005% одного ядра CPU, нуль використання GPU (рендеринг на CPU), близько 37 МБ RAM, без підняття роздільності таймера, exe на 3 МБ. Відтворити: `bench/perf_audit.ps1`; повні цифри в [docs/uk/ARCHITECTURE.md](docs/uk/ARCHITECTURE.md#споживання-ресурсів-виміряно-не-оцінено). - **Застарілі дані позначені як застарілі.** Значення, яке перестало оновлюватись, сіріє і показує свою давність. Вікно ліміту, яке гарантовано скинулось, показує `≈0%`. Застосунок не заповнює прогалини здогадками. - **Самодостатній.** Статично злінкований, тож не потребує Visual C++ Redistributable і не тягне DLL. Інсталятору не потрібні права адміністратора. ## Встановлення Із термінала: ```powershell # winget winget install napxlexn.AILimits # встановлення одним рядком: тягне останній реліз, звіряє SHA-256 # з опублікованим дайджестом, запускає тихе встановлення без прав адміна irm https://raw.githubusercontent.com/napxlexn/ailimits/master/install.ps1 | iex # Scoop, із власного bucket проєкту scoop bucket add ailimits https://github.com/napxlexn/scoop-ailimits scoop install ailimits ``` Або завантаж `AiLimits-Setup-<версія>.exe` зі сторінки [Releases](https://github.com/napxlexn/ailimits/releases) і запусти. Права адміністратора не потрібні (ставиться в `%LOCALAPPDATA%\AiLimits`). До кожного релізу також додається portable-zip без інсталятора. Portable-копія не самооновлюється: її оновлює менеджер пакетів або ти сам. > Інсталятор **не підписаний** цифровим підписом, тож Windows SmartScreen > може показати «Windows захистила ваш ПК». Натисни **Докладніше → Все одно > виконати**. Завантаження можна звірити з SHA-256, опублікованим у релізі. Інсталятор не містить ключів і токенів. При першому запуску віджет сам знаходить джерела авторизації, описані нижче. ## Швидкий старт 1. **Запусти.** При першому старті він тихо знаходить CLI, якими ти вже користуєшся (Claude Code, Codex, `gh`, Antigravity CLI і ще підтримані сеанси Gemini CLI), і одразу показує ліміти. Без логіну й налаштувань. 2. **Постав на місце.** Тягни лівою кнопкою; **Shift** під час перетягування магнітить до найближчого краю екрана; `Lock position` (ПКМ) фіксує. 3. **Обери вигляд.** ПКМ → рівень деталізації (Compact / Medium / Expanded), орієнтація смужок (Vertical / Horizontal), палітра (монохром або 8 кольорів), прозорість, яскравість і насиченість. Усе це показано на анімаціях вище. 4. **Наведи курсор на рядок провайдера**, щоб замість часу скидання побачити його тижневий ліміт. Сірий або `≈`-рядок натомість пояснює себе під курсором: причина і що зробити, наприклад `token expired, run Claude Code`. 5. **Граєш чи повний екран?** ПКМ → **Indicator** → *Panel* або *Tray* лишає використання на панелі завдань, поки overlay прихований чи перекритий. Див. [Індикатор на панелі завдань](#індикатор-на-панелі-завдань). 6. **Лівий клік по трей-іконці чи панелі** виносить віджет на передній план або ховає. Правий клік будь-де на панелі відкриває те саме меню. ## Як працює авторизація Віджет ніколи не просить логінитись. Він моніторить ліміти **підписок**, повторно використовуючи токени, які офіційні CLI тримають на твоїй машині, строго read-only: | Провайдер | Автоматичне джерело (за замовчуванням) | Щоб увімкнути | |---|---|---| | Claude | `%USERPROFILE%\.claude\.credentials.json` (OAuth-токен Claude Code) | запустити [Claude Code](https://claude.com/claude-code) хоч раз | | Codex | `%USERPROFILE%\.codex\auth.json` (токен Codex CLI) | один раз `codex login` | | Copilot | `gh auth token` (GitHub CLI) | один раз `gh auth login` | | Antigravity | Windows Credential Manager target `gemini:antigravity`; fallback `%USERPROFILE%\.gemini\oauth_creds.json` | запустити Antigravity CLI хоч раз або мати ще підтриманий Gemini CLI flow | Це короткоживучі **OAuth access tokens**; CLI-власник оновлює їх щоразу, коли ти ним користуєшся. Віджет ніколи не оновлює їх сам, бо OAuth-refresh ротує токен і розлогінив би CLI. ### Скільки дані лишаються точними без жодних дій | Провайдер | Живі дані тривають | Після цього | |---|---|---| | **Claude** | ~8 годин після останнього сеансу в Claude Code (реальний час життя токена) | відкат до `statusline.jsonl`, інакше останнє значення сірим | | **Codex** | поки активно користуєшся Codex CLI (його токен коротший) | останнє значення сірим, із давністю | | **Copilot** | Нескінченно. gh тримає токен свіжим, поки ти залогінений. | | | **Antigravity** | поки Antigravity CLI оновлює keyring token або підтриманий Gemini CLI flow оновлює `oauth_creds.json` | останнє значення сірим, із давністю | Google припинив обслуговувати Gemini CLI для individual, Google AI Pro і Google AI Ultra користувачів 18 червня 2026 року. Шлях міграції для них це Antigravity CLI; віджет читає token Antigravity із Windows Credential Manager перед fallback (відкатом) до legacy-файлу Gemini CLI. **У Claude є серверна стеля свіжості:** Anthropic обмежує usage-endpoint (HTTP 429, `Retry-After: 0`, перевірено 2026-07-09), а per-token бакет ділиться з опитуванням самого Claude Code, тож поки Claude Code активний, оновлення Claude інколи займає 2–3 хвилини навіть на 1-хвилинному інтервалі. Невдалий цикл повторюється за хвилину; решти провайдерів це не стосується. Протухлий токен Claude/Codex ніколи не означає неправильних цифр: останнє значення лишається сірим із давністю, гарантовано скинуте вікно показує `≈0%`, а відлік до скидання тікає локально. Якщо користуєшся CLI щодня, живі дані будуть майже весь час. ### Ручна авторизація (для незалежності або без CLI) Для сетапів без CLI або облікових даних, що не залежать від активності CLI. Що реально вартий кожен варіант: | Провайдер | Ручний варіант | Звідки взяти | Показує те саме, що підписка? | |---|---|---|---| | **Copilot** | Personal Access Token, можна безстроковий | github.com/settings/tokens, *Generate new token* | Так. Це варіант «постав і забудь». | | **Claude** | API ключ | console.anthropic.com, Settings, API Keys, *Create Key* (`sk-ant-…`) | Ні. Це ліміти твого API-акаунта, а не підписки Pro чи Max. | | **Codex** | Немає | Окремого стабільного токена не існує. Usage-токен це той самий короткоживучий OAuth. | | | **Antigravity** | Немає | Квота прив'язана до OAuth-токена, який оновлює Antigravity CLI, і окремого ключа з тими самими цифрами не існує. | | **Два способи додати облікові дані:** 1. **З буфера обміну (найпростіше).** Скопіюй ключ/токен, ПКМ на віджеті → **Providers** → провайдер → відповідний пункт `Paste … from clipboard` (*Copilot*: PAT; *Claude*: API ключ, який перемикає метод, або usage-токен, що пробується перед автоматичним; *Codex*: usage-токен). Тост підтвердить; секрет одразу йде в Credential Manager. 2. **З терміналу.** `ailimits-auth.exe` лежить поруч із віджетом (`%LOCALAPPDATA%\AiLimits`): ``` ailimits-auth status # показати всі виявлені джерела ailimits-auth set copilot # зберегти PAT (прихований ввід) ailimits-auth set claude # зберегти API ключ Claude ailimits-auth set-usage-token claude|codex # зберегти ручний usage-токен ailimits-auth remove copilot|claude ailimits-auth remove-usage-token claude|codex ``` `set-usage-token` спершу робить один запит до usage-endpoint'а провайдера і зберігає токен лише якщо його прийнято. **Повернутися до автоматики:** видали ключ із меню (`Remove key`) або через CLI, і провайдер повернеться на джерела підписки. ## Контекстне меню ПКМ на віджеті: рівень деталізації (Compact / Medium / Expanded), лейаут (Vertical / Horizontal), Width (100 / 75 / 50%, лише горизонтальні смужки), Arrangement (у ряд / у стовпчик, лише вертикальні), `Lock position` і `Always on top` (два незалежні перемикачі), Palette (монохром + 8 кольорів), Background opacity, Brightness, Saturation, Forecast (burn-rate «~час до ліміту», вимкнений за замовчуванням), Update interval (1 / 5 / 15 / 30 хв), `Automatic updates` (тихе фонове самооновлення, увімкнено за замовчуванням), Indicator, налаштування провайдерів, Quit. ### Індикатор на панелі завдань Навіть коли overlay прихований або перекритий повноекранною програмою, компактний показник використання лишається видимим. ПКМ → **Indicator**: - **Tray icon.** Одна 16px іконка в системному треї: два концентричні кільця, найнавантаженіший провайдер зовні, другий усередині, обидва ростуть за годинниковою стрілкою від 12-ї. Монохромна, у кольорі теми системної панелі завдань. - **Panel.** Прозорий overlay поруч із годинником. Немає ні вікна, ні прямокутника, лише цифри розміру годинника й смужки поверх таскбару. Монохромний, слідує світлій і темній темі системи, показує перші два провайдери в порядку віджета і стежить за таскбаром, коли той рухається (авто-приховування, зміна роздільності, ширина трея). При наведенні дає tooltip з усіма провайдерами. Якщо Пуск, Пошук або auto-hide бар перекриває панель, індикатор передає роботу кільцям у треї й сам повертається. Якщо екран займає повноекранна програма, панель ховається разом із таскбаром і повертається, щойно ти alt-tab-нешся назад. - **Off.** Без індикатора. Якщо Windows показує таскбар на більш ніж одному дисплеї, **Indicator → Display** вибирає, до якого таскбару кріпиться панель. Це підменю з'являється лише коли існує другий таскбар; якщо обраний дисплей потім зникає (від'єднано), панель повертається на основний таскбар. Лівий клік по іконці трею чи по панелі виносить віджет на передній план (або ховає, якщо він уже спереду, зверху); правий клік **будь-де на панелі** відкриває це саме меню. ## Конфіг і діагностика `%APPDATA%\AiLimits\config.toml` створюється автоматично, і кожна зміна з меню зберігається туди. Довідник формату: [docs/uk/CONFIG.md](docs/uk/CONFIG.md). Задай `AILIMITS_LOG=ailimits=debug` або `RUST_LOG=ailimits=debug`, і діагностичний лог писатиметься у `%APPDATA%\AiLimits\ailimits.log` (stderr у GUI-застосунку невидимий). ## Збірка з джерел ``` # Rust 1.86+, Windows 11 cargo build --profile release-min # ~3 МБ exe у target/release-min/ cargo test ``` Документація для розробників: [docs/en/](docs/en/) (англійська), [docs/uk/](docs/uk/) (українська). ## Ліцензія Copyright (C) 2026 napxlexn. AI Limits є вільним програмним забезпеченням за ліцензією [GNU General Public License версії 3 або пізнішої](LICENSE). Програму можна використовувати, вивчати, змінювати й поширювати. Під час поширення зміненої версії потрібно надати її відповідний вихідний код під тією самою ліцензією, зберегти повідомлення про авторське право та ліцензію і чітко позначити зміни. GPL-ліцензія на програму не надає права представляти змінені збірки як офіційні релізи AI Limits. Правила використання назви й логотипа наведено у [TRADEMARKS.md](TRADEMARKS.md). Сторонні компоненти залишаються під власними ліцензіями.