Files

73 lines
3.1 KiB
Markdown

# AI Usage Monitor voor Linux
Een achtergrondmonitor voor Claude, Codex en Cursor op Hyprland. De daemon haalt usage op via de bestaande CLI-logins. Waybar leest alleen de lokale cache. Er is geen venster.
De Mac-app in de naastliggende map blijft de bron van de providerregels. Deze Linux-app volgt dezelfde vensters: Claude en Codex tonen het 5-uurs- en weekvenster, Cursor toont **Cursor models**, **Other models** en de resetdatum.
## Wat je ziet
De balk toont resterende percentages, bijvoorbeeld `C 38% X 71% Cu 52%`. Een klik ververst meteen. De tooltip bevat resettijden. Kleuren volgen de resterende ruimte: groen boven 50%, oranje vanaf 20%, rood daaronder. Gegevens ouder dan 30 minuten zijn stale. Een mislukte ronde bewaart de laatste succesvolle meting.
Verversen pauzeert als logind de sessie vergrendelt of het systeem in slaap gaat. Zonder een leesbare sessie blijft verversen uit.
## Instellingen
`$XDG_CONFIG_HOME/ai-usage/config.json` (meestal `~/.config/ai-usage/config.json`):
```json
{
"refreshMinutes": 5,
"enabledProviders": ["claude", "codex", "cursor"],
"executableOverrides": {},
"showUsedPercentage": false
}
```
`refreshMinutes` is 5, 15, 30 of 60. `executableOverrides` kan `claude`, `codex` of `cursor` op een absoluut pad zetten. De cache staat in `$XDG_STATE_HOME/ai-usage/usage.json`.
De daemon zoekt `claude`, `codex` en `cursor-agent` (daarna `agent`) op `PATH`, in `~/.local/bin` en in Cursor-extensies. Zonder Agent CLI leest Cursor alleen `cursorAuth/stripeSubscriptionStatus` uit `~/.config/Cursor/User/globalStorage/state.vscdb`.
De tools gebruiken hun eigen login. Deze app leest geen tokens en logt geen CLI-uitvoer. Cursor draait met een netwerkfilter dat alleen usage-endpoints toestaat. Op Linux mag die CLI `secret-tool lookup` gebruiken om zijn bestaande login te lezen; andere subprocessen worden geblokkeerd.
## Nix
```nix
{
inputs.ai-usage.url = "path:/home/avravels/ai-usage/ai-usage-linux";
outputs = { self, home-manager, ai-usage, ... }: {
# in je home-manager configuratie
};
}
```
```nix
imports = [ inputs.ai-usage.homeManagerModules.default ];
programs.ai-usage = {
enable = true;
package = inputs.ai-usage.packages.x86_64-linux.default;
providers.codex.enable = false;
providers.claude.executable = pkgs.claude-code;
};
```
Dit voegt het pakket toe, start `systemd --user` service `ai-usage` met de grafische sessie, en zet `custom/ai-usage` vooraan `modules-right` als Waybar al aan staat. Je eigen Nix-configuratie blijft onaangeroerd tot je deze module importeert.
De module schrijft `~/.config/ai-usage/config.json`. `providers.claude`, `providers.codex` en `providers.cursor` staan standaard aan. Zet `enable = false` om een provider over te slaan. `executable` is een pad of een pakket (`lib.getExe`); zonder waarde zoekt de daemon zelf. `refreshMinutes` is 5, 15, 30 of 60. `showUsedPercentage` toont verbruikt in plaats van resterend percentage. Een handmatige wijziging van dat bestand wordt bij de volgende `home-manager switch` overschreven.
## Handmatig
```sh
nix build
./result/bin/ai-usage daemon
./result/bin/ai-usage status
./result/bin/ai-usage waybar
```
Tests:
```sh
cargo test
```