# ClaudeUsageStatusLine by Digital3d.com

> Display real-time Claude usage statistics in Claude Code's status line with beautiful colors

[🇬🇧 English](#english) | [🇫🇷 Français](#français)


---

# English

## What is this?

A cross-platform tool that displays your **Claude** or **z.ai (GLM)** usage directly in Claude Code's status line. The provider is auto-detected from the model name sent by Claude Code — any model whose name contains `glm` (e.g. `glm-5.1`, which competes with Opus 4.6) routes to z.ai, everything else routes to Claude.

**Claude mode:**
```
~/Projects/MyApp | Sonnet-4.6 | Session: 2% | All: 1% (↻4h) | Extra: 12.56€/100€ | Ctx: 49%
```

**z.ai mode** (GLM models from https://chat.z.ai):
```
~/Projects/MyApp | GLM-5.1 | Bal: 9.88$ | Ctx: 49%
```

**Color coding:**
- 🟢 Green (0-50%): Good
- 🟡 Yellow (50-80%): Moderate
- 🔴 Red (80-100%): High

## Installation

### Option 1: Easy Install (Recommended)

**1. Download** for your platform:
- [Windows x64](../../releases)
- [Linux x64](../../releases)
- [macOS Intel](../../releases)
- [macOS Apple Silicon](../../releases)

**2. Extract and run installer:**

Windows:
```powershell
Expand-Archive ClaudeUsageStatusLine-win-x64.zip
cd ClaudeUsageStatusLine-win-x64
.\install.exe
```

Linux/macOS:
```bash
unzip ClaudeUsageStatusLine-*.zip
cd ClaudeUsageStatusLine-*
chmod +x install
./install
```

**3. Authenticate:**
```bash
claude auth login
```

**4. Restart Claude Code** - Done! ✨

### Option 2: Build from Source

**1. Build:**
```bash
dotnet build -c Release
```

**2. Configure Claude Code settings** (`~/.claude/settings.json`):

Windows: (simple backslash NOT DOUBLE backslash)
```json
{
  "statusLine": {
    "type": "command",
    "command": "D:\Path\To\ClaudeUsageStatusline\bin\Release\net9.0\ClaudeUsageStatusline.exe",
    "padding": 0
  }
}
```

Linux/macOS:
```json
{
  "statusLine": {
    "type": "command",
    "command": "/path/to/ClaudeUsageStatusline/bin/Release/net9.0/ClaudeUsageStatusline",
    "padding": 0
  }
}
```

**3. Restart Claude Code** - Done! ✨

## z.ai Setup (GLM models)

If you use **z.ai's GLM models** (https://chat.z.ai) through Claude Code, the status line can display your account balance — but z.ai's billing endpoint requires a **web session JWT** (different from your `ZAI_API_KEY`). This JWT cannot be obtained automatically because the z.ai sign-in page is protected by a mandatory TianCaptcha (阿里云) that blocks all automation.

**Copy the JWT from your browser:**

1. Open **https://z.ai/manage-apikey/billing** in your regular browser.
2. Log in (solve the captcha if prompted).
3. Press **F12** → click the **Network** tab.
4. Refresh the page with **F5**.
5. In the Network list, click the request named **`accountBalance`**.
6. In the **Headers** sub-tab, find `Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...`.
7. Copy the JWT **without** the `Bearer ` prefix (it starts with `eyJhbGciOiJIUzUxMiJ9`).

**Save it with the helper tool:**

```powershell
# Windows
& "$env:LOCALAPPDATA\ClaudeUsageStatusLine\ClaudeUsageStatusline.ZaiRefresh.exe"
```

```bash
# Linux / macOS
~/.local/bin/ClaudeUsageStatusline.ZaiRefresh
```

The tool opens your browser, waits for you to paste the JWT, validates its format and writes it to `~/.claude/.zai-credentials.json`. The `customerId` is auto-extracted from the JWT payload — no extra config needed.

**Re-run `ZaiRefresh` whenever** the status line shows `Bal: error` or a persistent `~Bal:` (stale) prefix — the JWT has no expiration field and is invalidated server-side after periods of inactivity.

> For troubleshooting, currency conversion (EUR/GBP/etc. via `Zai:DisplayCurrency`), and advanced configuration, see [INSTALL.md](INSTALL.md#zai-authentication-glm-models).

## Troubleshooting

**"Usage: error"**
- Run `claude auth login` to refresh your credentials
- Check that `~/.claude/.credentials.json` exists

**"Bal: error" (z.ai / GLM)**
- Re-run `ClaudeUsageStatusline.ZaiRefresh` and paste a fresh JWT from the browser
- Verify `~/.claude/.zai-credentials.json` contains a `sessionToken` starting with `eyJhbGciOiJIUzUxMiJ9`

**Status line doesn't appear**
- Restart Claude Code completely
- Check `~/.claude/settings.json` contains `statusLine` config

**No colors**
- Use Windows Terminal / PowerShell 7+ (Windows)
- Most Linux/Mac terminals support colors by default

## Uninstall

```bash
./install --uninstall
```

---

# Français

## C'est quoi ?

Un outil multi-plateforme qui affiche votre utilisation **Claude** ou **z.ai (GLM)** directement dans la ligne d'état de Claude Code. Le provider est auto-détecté à partir du nom du modèle envoyé par Claude Code — tout modèle dont le nom contient `glm` (ex. `glm-5.1`, qui concurrence Opus 4.6) est routé vers z.ai, tous les autres vers Claude.

**Mode Claude :**
```
~/Projects/MyApp | Sonnet-4.6 | Session: 2% | All: 1% (↻4h) | Extra: 12.56€/100€ | Ctx: 49%
```

**Mode z.ai** (modèles GLM depuis https://chat.z.ai) :
```
~/Projects/MyApp | GLM-5.1 | Bal: 9.88$ | Ctx: 49%
```

**Code couleur :**
- 🟢 Vert (0-50%) : Bon
- 🟡 Jaune (50-80%) : Modéré
- 🔴 Rouge (80-100%) : Élevé

## Installation

### Option 1 : Installation Facile (Recommandé)

**1. Téléchargez** pour votre plateforme :
- [Windows x64](../../releases)
- [Linux x64](../../releases)
- [macOS Intel](../../releases)
- [macOS Apple Silicon](../../releases)

**2. Extrayez et lancez l'installateur :**

Windows :
```powershell
Expand-Archive ClaudeUsageStatusLine-win-x64.zip
cd ClaudeUsageStatusLine-win-x64
.\install.exe
```

Linux/macOS :
```bash
unzip ClaudeUsageStatusLine-*.zip
cd ClaudeUsageStatusLine-*
chmod +x install
./install
```

**3. Authentifiez-vous :**
```bash
claude auth login
```

**4. Redémarrez Claude Code** - C'est fait ! ✨

### Option 2 : Build depuis les sources

**1. Build :**
```bash
dotnet build -c Release
```

**2. Configurez les paramètres Claude Code** (`~/.claude/settings.json`) :

Windows : (n'utilisez pas de double backslash comme ceci \\)
```json
{
  "statusLine": {
    "type": "command",
    "command": "D:\Chemin\Vers\ClaudeUsageStatusline\bin\Release\net9.0\ClaudeUsageStatusline.exe",
    "padding": 0
  }
}
```

Linux/macOS :
```json
{
  "statusLine": {
    "type": "command",
    "command": "/chemin/vers/ClaudeUsageStatusline/bin/Release/net9.0/ClaudeUsageStatusline",
    "padding": 0
  }
}
```

**3. Redémarrez Claude Code** - C'est fait ! ✨

## Configuration z.ai (modèles GLM)

Si vous utilisez les **modèles GLM de z.ai** (https://chat.z.ai) dans Claude Code, la ligne d'état peut afficher votre solde — mais le endpoint de facturation de z.ai exige un **JWT de session web** (différent de votre `ZAI_API_KEY`). Ce JWT ne peut pas être obtenu automatiquement car la page de connexion z.ai est protégée par un TianCaptcha obligatoire (阿里云) qui bloque toute automatisation.

**Copier le JWT depuis votre navigateur :**

1. Ouvrez **https://z.ai/manage-apikey/billing** dans votre navigateur habituel.
2. Connectez-vous (résolvez le captcha si demandé).
3. Appuyez sur **F12** → cliquez sur l'onglet **Network** (Réseau).
4. Rafraîchissez la page avec **F5**.
5. Dans la liste des requêtes, cliquez sur celle nommée **`accountBalance`**.
6. Dans le sous-onglet **Headers**, trouvez `Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...`.
7. Copiez le JWT **sans** le préfixe `Bearer ` (il commence par `eyJhbGciOiJIUzUxMiJ9`).

**Enregistrez-le avec l'outil compagnon :**

```powershell
# Windows
& "$env:LOCALAPPDATA\ClaudeUsageStatusLine\ClaudeUsageStatusline.ZaiRefresh.exe"
```

```bash
# Linux / macOS
~/.local/bin/ClaudeUsageStatusline.ZaiRefresh
```

L'outil ouvre votre navigateur, attend que vous colliez le JWT, valide son format et l'écrit dans `~/.claude/.zai-credentials.json`. Le `customerId` est automatiquement extrait du payload du JWT — aucune configuration supplémentaire requise.

**Relancez `ZaiRefresh`** dès que la ligne d'état affiche `Bal: error` ou un préfixe `~Bal:` (données périmées) persistant — le JWT n'a pas de champ d'expiration et est invalidé côté serveur après des périodes d'inactivité.

> Pour le dépannage, la conversion de devises (EUR/GBP/etc. via `Zai:DisplayCurrency`) et la configuration avancée, consultez [INSTALL.md](INSTALL.md#zai-authentication-glm-models).

## Dépannage

**"Usage: error"**
- Exécutez `claude auth login` pour rafraîchir vos identifiants
- Vérifiez que `~/.claude/.credentials.json` existe

**"Bal: error" (z.ai / GLM)**
- Relancez `ClaudeUsageStatusline.ZaiRefresh` et collez un JWT frais depuis le navigateur
- Vérifiez que `~/.claude/.zai-credentials.json` contient un `sessionToken` commençant par `eyJhbGciOiJIUzUxMiJ9`

**La ligne d'état n'apparaît pas**
- Redémarrez Claude Code complètement
- Vérifiez que `~/.claude/settings.json` contient la config `statusLine`

**Pas de couleurs**
- Utilisez Windows Terminal / PowerShell 7+ (Windows)
- La plupart des terminaux Linux/Mac supportent les couleurs par défaut

## Désinstallation

```bash
./install --uninstall
```


---

## Technical Info

- **Language:** C# / .NET 9.0
- **Platforms:** Windows x64, Linux x64, macOS x64/ARM64
- **Size:** ~13 MB per platform
- **License:** MIT
- **Site:** Digital3d.com

