> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openreason.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Coach

> Tells you whether your Claude Code and Codex 5-hour limits will last until they reset, and what to change if they won't.

The coach watches how fast you are using your 5-hour limits in Claude Code and in Codex, and tells you whether each one lasts to its reset at that pace. It works like the range display in an electric car: it projects from your recent pace, and it names what is using the most.

![The coach's menu open, in black and white: a Claude Code section with its pace line, an on-track verdict and four example chats, then a Codex section with one example chat](https://mintcdn.com/openreason/Tc6hB2owIhrpDmN4/images/coach/menubar-dropdown.png?fit=max\&auto=format\&n=Tc6hB2owIhrpDmN4\&q=85\&s=b700b595b5cc1ca7d7e06f08fbe044dc)

The coach in the macOS menu bar: Claude Code and Codex, each with its pace, verdict and busiest chats.

It shows up in two places:

* **The macOS menu bar**, for Claude Code and Codex side by side. See [The menu bar](#the-menu-bar).
* **A line under your Claude Code prompt**, which also warns you before an expensive send. See [Claude Code](#claude-code). Codex has no status line the coach can use, so Codex is in the menu bar only.

> [!NOTE]
>
> The coach is in testing. It runs on macOS, it is off until you turn it on, and everything it records stays on your Mac.

## Why it exists

Claude and ChatGPT plans both limit how much you can use in any 5-hour window. Claude Code and Codex show the percentage you have used, but a percentage does not tell you whether you will make it to the reset. You find out when you hit the limit, usually in the middle of something. If you use both tools, you are watching two separate limits that move at different speeds.

The coach answers that question ahead of time, for each tool. It also shows which of your habits are spending the limit, so that slowing down means changing one specific thing and not just using the tool less.

## Requirements

| Requirement | Details |
| - | - |
| **macOS 12 or newer** | Linux and Windows do not have the coach yet. `or-otel coach` says so on those systems. The menu bar runs in [SwiftBar](https://github.com/swiftbar/SwiftBar), which needs macOS 12; `or-otel coach install` installs it if you do not have it |
| **`or-otel` 0.13.0 or newer** | Installed and set up. See [OR Otel](https://docs.openreason.app/quickstart/or-otel.md). Check with `or-otel version`. 0.12.0 has the Claude Code line only |
| **Node 20 or newer** | On your `PATH`. Check with `node -v` |
| **Claude Code** | For the Claude Code section and line. The line is Claude Code's status line, so it shows in any terminal, including the built-in terminal in VS Code or JetBrains. The Claude Code sidebar panel and Claude Desktop have no status line, so the line does not appear there; their use still shows in the menu bar |
| **Codex** | For the Codex section. Codex running on this Mac writes its sessions to `~/.codex/sessions`, and the coach reads them. There is nothing to set up in Codex |

You can use either tool alone. The menu bar shows a section for each tool you use.

## Install

**1. Update or-otel**

```bash theme={null}
or-otel update
```

This asks for your Mac password if your install is the default one. It should end with `✓ installed or-otel 0.13.0` or a newer version.

**2. Turn the coach on**

```bash theme={null}
or-otel coach install
```

This needs no password. It prints what it did. On a Mac without SwiftBar:

```text theme={null}
coach 0.2.0 installed.
  app    ~/.openreason/coach/app
  hooks  ~/.claude/settings.json (a backup is in ~/.openreason/coach)
  node   /opt/homebrew/bin/node
  menu   downloading SwiftBar 2.1.1 from github.com/swiftbar/SwiftBar…
  menu   SwiftBar 2.1.1 installed in ~/Applications (SHA-256 checked)
  menu   ~/.openreason/coach/menubar (SwiftBar's plugin folder, set by or-otel)
  login  SwiftBar opens at login (~/Library/LaunchAgents/app.openreason.coach.swiftbar.plist)
  menu   SwiftBar: ~/Applications/SwiftBar.app
Open a new Claude Code session to see its line. Turn it off with: or-otel coach off
```

If you already use SwiftBar, the coach adds its plugin to your plugin folder next to your own and leaves the rest of SwiftBar alone. If a `menu` line says `not set up`, see [Troubleshooting](#troubleshooting).

**3. Check both tools**

**Menu bar.** The coach's item appears right away. A tool shows `—` until it has spent something in the last 20 minutes, so use Claude Code or Codex for a few minutes and its bars fill in.

**Codex.** Nothing to restart. Sessions that are already open are picked up.

**Claude Code.** Open a new session to see the line; sessions that were already open keep their old settings. If you have a status line of your own, yours stays first and the coach line goes below it.

For the first five minutes of a 5-hour window, each tool reads `checking pace…`. The coach needs a few minutes of readings before it can project anything.

## How to read the coach

Both tools use the same three ideas: a verdict, a pace, and a top drain.

### The verdict

The verdict says whether a tool's limit lasts to its reset at your current pace. It covers your whole account for that tool, not only one chat.

| State | Colour | Meaning |
| - | - | - |
| Checking pace | Grey | Not enough readings yet. This lasts about five minutes at the start of a window |
| On track, `~15% spare` | Green | At this pace you reach the reset with about 15% of the limit left |
| Tight, `~3% spare` | Amber | You reach the reset, but only just. The projection is an estimate, so a small margin is not safe |
| Runs out, `40 min early` | Red | At this pace the limit runs out 40 minutes before it resets |

**Spare** is the share of the limit you would have left at the reset. It is rounded to the nearest 5% when it is above 10%.

The verdict keeps moving while you are idle. Minutes with no usage push the run-out time later, so a red verdict turns green if you stop for a while.

### The pace bar

The pace bar compares how fast you are spending with the pace that would land exactly on the reset.

| Bars | Colour | Meaning |
| - | - | - |
| `▮▯▯▯` | Grey | Well under the pace that reaches the reset |
| `▮▮▯▯` | Grey | Under pace |
| `▮▮▮▯` | Green | On pace |
| `▮▮▮▮` | Red | Faster than the limit allows |

The number next to the bars is the rate in percent of the 5-hour limit per hour (%/h). A full window is on pace at 20%/h, since 100% over five hours is 20% each hour. The pace that counts as "on pace" changes during the window: if you have 30% left and one hour to go, 30%/h is on pace.

Every number the coach shows is in %/h, so chats, helpers and parts can be compared with each other and with the tool's total.

### The top drain

When a verdict is amber or red, the coach names the biggest spender over the last 20 minutes: the chat, the largest part of that chat's spending, and how fast that part alone is spending the limit. For example, `browser 28%/h` on a tool running at 48%/h means browser results account for 28 of the 48.

The parts differ by tool, because the tools spend their limits differently. See [Claude Code](#what-claude-code-spends-on) and [Codex](#what-codex-spends-on).

When a tool's limit rises by more than its chats on this Mac explain, the coach says so: `outside Claude Code` or `Outside Codex`. That is usage it cannot see, such as claude.ai, Claude Desktop, Codex cloud tasks, or either tool on another machine.

## The menu bar

The menu bar item shows both tools at once, each against its own limit.

![Menu bar item: the OpenReason mark, the Anthropic mark with two grey bars, and the OpenAI mark with one grey bar](https://mintcdn.com/openreason/gRBXZIo23yNhuNNk/images/coach/menubar-title-green.png?fit=max\&auto=format\&n=gRBXZIo23yNhuNNk\&q=85\&s=b8df18b6eba7efefde286af1228180b8)

Both tools under pace: Claude Code at two bars, Codex at one.

![Menu bar item: the Anthropic and OpenAI marks each with four red bars, followed by 15:50 in red, struck through](https://mintcdn.com/openreason/gRBXZIo23yNhuNNk/images/coach/menubar-title-red.png?fit=max\&auto=format\&n=gRBXZIo23yNhuNNk\&q=85\&s=aae16872aa2e7c8f90ba52e4faaca406)

Both tools red. Only the earlier run-out time shows, struck through.

The title is the OpenReason mark, then each tool's mark with its pace bars. A tool with nothing spent in the last 20 minutes shows `—`.

When a tool's verdict is red, its run-out time follows its bars, in red and struck through, in 24-hour time. If both are red, only the earlier time shows, to keep the title short.

Click the item to open the details. Claude Code and Codex each get the same section. When a tool is red, its section also names the top drain:

```text theme={null}
Codex
▮▮▮▮ 41%/h · 5h 70% · out 14:30
Runs out 14:30, 40 min before the 15:10 reset
Top drain: billing-refactor, long chat 22%/h
CHATS · LAST 20 MIN
billing-refactor               33%/h
  └ write tests · sol           6%/h
api-docs                        8%/h
```

| Row | What it shows |
| - | - |
| Pace line | The tool's pace bars and total rate, the limit used (`5h 70%`), and the verdict in short: `out 14:30` when red, the spare at the reset otherwise |
| Verdict | The full verdict |
| Top drain | Amber or red only. The chat spending the most, by its name in the list below, its largest part, and that part's rate |
| Chats | Every chat active in the last 20 minutes, highest rate first, with helpers listed under the chat that started them. A chat idle for more than five minutes is greyed out. Two chats with the same name get the last four characters of their id. Hover over a chat for its model, its size and when its last turn was |
| `Outside Claude Code` / `Outside Codex` | Spend that moved the limit but that no chat on this Mac explains. Listed last, in grey |

## Claude Code

Claude Code shows in the menu bar and also in a line under your prompt.

### The status line

```text theme={null}
⣏⣸-coach · Fable 5.2 · 180k · 5h 62% · ✗ runs out 1:55pm, 40 min early · pace ▮▮▮▮ 48%/h
         · top drain: this chat, browser 28%/h
```

| Part | Example | What it means |
| - | - | - |
| Model | `Fable 5.2` | The model this chat is using. It sets what every turn costs |
| Chat size | `180k` | Tokens in this chat. Turns amber above 150k, because a large chat makes some sends expensive (see [Warnings before an expensive send](#warnings-before-an-expensive-send)) |
| Limit used | `5h 62%` | How much of your Claude 5-hour limit is used right now. The same number Claude Code reports |
| Verdict | `✗ runs out 1:55pm, 40 min early` | The [verdict](#the-verdict), for your whole Claude account. Every Claude Code session you have open feeds the same reading |
| Pace | `pace ▮▮▮▮ 48%/h` | How fast **this chat** is spending. The same number appears next to this chat in the menu bar |
| Top drain | `this chat, browser 28%/h` | Amber or red only, on a second line. `this chat`, or another session by its name |

The verdict and the pace bar can disagree, and that is useful. A red verdict with one or two pace bars means something else is spending your limit, not this chat.

### How a chat's pace is measured

The bar appears from the chat's first prompt. The coach measures the chat's rate two ways over the last 20 minutes and shows the higher one:

* **Per prompt.** Once the chat has three prompts in the last 20 minutes: what each prompt cost, over the usual time between prompts.
* **By time.** What the chat spent in the last 20 minutes, over the time since its first prompt in that stretch (at least five minutes). This includes the turn that is still running and any helpers it started.

The second way is what makes a single long prompt show up. A browser task or a long refactor can run for twenty minutes on one prompt, and its spend shows while it runs, not only when it finishes. A chat with nothing spent in the last 20 minutes has no bar.

### What Claude Code spends on

| Part | What it is |
| - | - |
| `helpers` / `Fable helpers` | Subagents the chat started. Each one runs with its own context, so they multiply cost. On Fable they cost several times more than on Opus |
| `long answers` | The text Claude wrote, including its thinking |
| `browser` | Results from browser tools, mostly screenshots and page contents |
| `images` | Images read into the chat |
| `big reads` | Large files or tool results read into the chat |
| `chat reload` | The whole chat was re-sent instead of reused. This happens after a long break, a model switch, or sometimes after loading a new set of tools |
| `Fable` | The chat is on Fable and no single part above stands out. The model itself is the cost |

Re-reading the chat on each request costs nothing toward the Claude limit, as long as the chat is still kept ready for reuse. That is why `chat reload` is a part and an ordinary long chat is not.

### The big result note

After a turn that brought one very large result into the chat (more than about 10,000 tokens), the line adds a note for one turn:

```text theme={null}
⣏⣸-coach · Opus 5.5 · 170k · 5h 45% · ✓ on track · ~15% spare at 2:35pm · pace ▮▮▮▯ 20%/h · big result: Read 50k
```

It does not change the verdict. One large read is rarely a problem. It is there so that you notice when a tool returns far more than you expected.

### Warnings before an expensive send

Claude re-reads the whole chat on every request. Normally that is nearly free, because the chat so far is kept ready for reuse for about an hour after your last message. Two things throw that away, and then the next request pays to send the whole chat again:

* **Coming back after a break.** If a large chat has been idle for about an hour, the next send reloads it.
* **Switching model.** The new model has nothing ready for this chat, so the next send resends it.

On a large chat that single send can cost a noticeable share of your limit. The coach shows the cost before you send:

```text theme={null}
⣏⣸-coach · Fable 5.2 · 680k · 5h 40% · ⚠ next send costs ≈14% (reloads chat) · would run out 1:50pm
⣏⣸-coach · Opus 5.5 · 400k · 5h 40% · ⚠ model switch costs ≈8% (resends chat) · still on track
```

* `would run out 1:50pm` means that after paying this cost, your current pace runs out before the reset.
* `still on track` means you can afford it.

The warning replaces the verdict until you send, and then the normal line comes back. A model-switch warning also clears on its own after two minutes.

The coach only warns when the cost is at least 2% of your limit, and only on chats above 150,000 tokens for a break or 100,000 tokens for a model switch. Switching to a cheaper model on a medium-sized chat usually costs less than that, so the line stays quiet.

> [!TIP]
>
> The warning never blocks you. If the cost is not worth it, start a new chat for the next task, or switch the model back before you send. Switching back costs nothing if you have not sent anything yet.

## Codex

Codex shows in the menu bar, with the same pace bars, verdict, top drain and chat list as Claude Code. The coach reads the session files Codex already writes on your Mac. It adds nothing to Codex and changes nothing in it.

### How a chat's pace is measured

A Codex chat's rate is by time: what it spent in the last 20 minutes, over the time since its first request in that stretch (at least five minutes). Codex's files do not mark prompts in a way the coach can count, so there is no per-prompt rate. A long Codex task shows from its first minute, the same as a long Claude Code prompt.

Helpers that a Codex chat starts are listed under it with their task and nickname, for example `└ write tests · sol`.

### What Codex spends on

| Part | What it is |
| - | - |
| `long chat` | Re-reading the chat so far on each request. Codex charges for this at a lower rate than new input, so a long chat costs more with every request |
| `long answers` | The text Codex wrote, including its reasoning |
| `helpers` | Helpers the chat started. Each one runs with its own context |
| `chat reload` | A large chat was resumed after a long gap and read in again at full price |

`long chat` is the main difference from Claude Code, where re-reading a chat that is kept ready costs nothing. On Codex a long chat is a steady cost, not a one-off.

### Cold resumes

When you return to a large Codex chat (over 100,000 tokens) after more than six hours, its first request reads most of it in again. The coach books that request as `chat reload`, and the chat's details in the menu show `resumed cold, cost ≈N%` for as long as it is in the 20-minute window.

## What to do when a tool is amber or red

The top drain tells you where to look.

**Claude Code**

| Top drain | What usually helps |
| - | - |
| `Fable`, or a 4-bar pace on Fable | Use Opus or Sonnet for routine work and keep Fable for the hard parts. Start the cheaper model in a new chat, so that you do not pay for a model switch on a large one |
| `helpers` / `Fable helpers` | Run fewer subagents at once, and run them on a cheaper model when the task is well defined |
| `chat reload` | Start a new chat for a new task instead of returning to a large old one. Avoid switching model in the middle of a large chat |
| `browser` / `images` | Ask for fewer screenshots, or have Claude read the page text instead |
| `big reads` | Point Claude at the part of the file you need instead of the whole file |
| `long answers` | Ask for shorter output, or lower the effort level for simple tasks |

**Codex**

| Top drain | What usually helps |
| - | - |
| `long chat` | Start a new chat for a new task. Every request in a long chat pays again for the chat so far |
| `helpers` | Run fewer helpers at once |
| `chat reload` | Start a new chat instead of resuming a large one after a long gap |
| `long answers` | Lower the reasoning effort for simple tasks |

**Both**

| Top drain | What usually helps |
| - | - |
| `outside Claude Code` / `Outside Codex` | Check claude.ai, Claude Desktop, Codex cloud tasks and your other machines. The coach cannot see inside them |
| Another chat is named | That chat is the one to slow down, not the one you are looking at |

Taking a short break also works. The projection is based on your recent pace, so ten idle minutes move the run-out time later.

## How it works

The coach uses only what Claude Code and Codex already have on your Mac.

### For both tools

1. **Your limit.** Each tool reports the percentage of its 5-hour limit you have used, and its reset time. The coach records each time that percentage rises. Every open session of a tool contributes to one record, because the limit belongs to your account.
2. **Your rate.** The run-out time is the limit you have left divided by how fast it rose over the last 20 minutes.
3. **Between readings.** The percentage only moves in whole numbers. To stop the projection jumping at each step, the coach estimates what each request cost from its token counts, using weights measured per model, and adds the requests since the last whole-number step. It rescales those estimates by how your own limit actually moves.
4. **Where it went.** It splits each request's cost into the parts listed for each tool, and adds them up per chat.

The menu bar item is a SwiftBar plugin that runs every five seconds and draws both sections from these records.

### Claude Code

Claude Code passes the limit to its status line, and the coach records it from there. To see each turn, the coach adds four hooks to Claude Code. A hook is a command Claude Code runs at a fixed moment.

| Hook | When it runs | What the coach does |
| - | - | - |
| `UserPromptSubmit` | You send a message | Marks the start of a turn and clears any pending warning |
| `Stop` | Claude finishes a turn | Reads the turn's token counts from the session's transcript and records its cost |
| `PostToolUse` | A tool returns a result | Records the tool's name and the size of its result |
| `PreModelSwitch` | You pick a different model | Works out what the next send will cost on the new model |

The hooks print nothing and never stop a turn. If one fails, it exits quietly and Claude Code carries on.

A turn is booked when it finishes. While it runs, the status line and the menu bar read the same transcript without writing anything, so a running turn and its helpers count from their first minute. Helpers, the model and the answer text are read exactly from the transcript. Tool results (browser, images, big reads) and chat reloads are estimated from their size.

### Codex

Codex writes every session to `~/.codex/sessions`, including the tokens each request used and the limit as Codex reports it. The coach reads those files every five seconds, picking up where it left off, and never writes to them. It adds no hooks and installs nothing into Codex.

Each request is priced with weights measured per Codex model, with the re-read part of the chat charged at its lower rate.

## Accuracy and limits

Treat the coach as an estimate, the way you treat a car's range.

**Both tools**

* **It follows your recent pace.** If you change what you are doing, the projection takes up to 20 minutes to catch up fully.
* **The first five minutes of a window are blank.** One early step in the percentage would otherwise read as a very high rate.
* **Costs and top-drain rates depend on per-model weights measured on one account.** On a different plan they may be somewhat off until the coach has seen your limit rise a few times and adjusted to it. The verdict itself is built from your own limit readings and does not depend on those weights.
* **It only sees this Mac.** Usage in claude.ai, Claude Desktop, Codex cloud tasks or on another machine moves your limit but has no detail. The coach reports it as `outside Claude Code` or `Outside Codex`.
* **It covers the 5-hour limit only.** It does not project the weekly limit.
* **The menu bar is drawn for a dark menu bar.** On a light menu bar the marks and bars are hard to read.

**Claude Code**

* **Tool results are underestimated.** A browser or file result is priced by its size alone, so a rate such as `browser 28%/h` is a floor. The text Claude writes while working with those results is counted under `long answers`.
* **Messages you queue while Claude is working count as one turn.** Claude Code delivers them together.

**Codex**

* **No status line and no send warnings.** Codex is in the menu bar only.
* **A model without measured weights is priced as the default model.** Its chat's details say `priced as` and name the model used instead.
* **Large tool results are not split out.** They are counted in `long chat` once they are part of the chat.

## What it puts on your Mac

| Path | What |
| - | - |
| `~/.openreason/coach/app` | The coach itself, downloaded by `or-otel coach install` |
| `~/.openreason/coach/installed` | A small file holding the path to Node. Its presence is what turns the coach on |
| `~/.openreason/coach` | The coach's records: limit readings for both tools, what each turn cost, tool result sizes, session names, how far it has read Codex's files, and backups of your settings file |
| `~/.claude/settings.json` | The four Claude Code hooks above. If your status line had no refresh interval, one of 5 seconds is added so that the line keeps time while you are idle |
| `~/.codex/sessions` | Read only. The coach changes nothing in `~/.codex` |
| `~/.openreason/coach/menubar` | A folder holding one link to the menu bar plugin. Only when SwiftBar had no plugin folder; the coach sets SwiftBar to use this one |
| A link in your SwiftBar plugin folder | `coach.5s.sh`, pointing at the plugin. Only when you already had SwiftBar with a plugin folder. If that folder already has a file with that name, the coach leaves it alone and does not set up the menu bar |
| `~/Applications/SwiftBar.app` | SwiftBar 2.1.1, only if you did not have SwiftBar. Downloaded from SwiftBar's GitHub releases and checked against a fixed SHA-256; if the check fails, nothing is installed |
| `~/Library/LaunchAgents/app.openreason.coach.swiftbar.plist` | Opens SwiftBar at login. Only when the coach installed SwiftBar |

The coach notes what it set up in `~/.openreason/coach/swiftbar-*`, so that `off` and `uninstall` undo only that.

Your Claude Code status line command stays `or-otel statusline`. It prints your own status line first, if you have one, and then the coach line.

**Nothing the coach records is sent anywhere.** It makes no network requests while it runs, and the menu bar plugin makes none either. The only downloads are the coach itself, when you run `or-otel coach install` or `or-otel update`, and SwiftBar, when `or-otel coach install` finds it missing. `or-otel` keeps sending what it sent before; see [What gets sent](https://docs.openreason.app/quickstart/or-otel.md#what-gets-sent).

## Commands

| Command | What it does |
| - | - |
| `or-otel coach install` | Downloads the coach, turns it on for both tools and sets up the menu bar item, installing SwiftBar if it is missing. Safe to run again |
| `or-otel coach status` | Shows whether it is on, its version, the Node it uses, how many of its four Claude Code hooks are in place, whether the menu bar item is set up, and whether SwiftBar is running |
| `or-otel coach off` | Turns it off: removes the hooks, the line and the menu bar item, and resets SwiftBar's plugin folder if the coach set it. Its records stay, so turning it back on picks up where it left off |
| `or-otel coach uninstall` | Turns it off and removes the download, and SwiftBar if the coach installed it. Its records still stay in `~/.openreason/coach`; delete that folder to remove them |
| `or-otel update` | Updates `or-otel`, and also fetches a newer coach if the coach is on |

`or-otel uninstall` removes the coach along with everything else.

## Troubleshooting

> [accordion] There is no menu bar item
>
> Run `or-otel coach status` and read its `menu` and `swiftbar` lines:
>
> * **`menu not set up: run or-otel coach install again`.** Your `or-otel` or coach may predate the menu bar. Run `or-otel update`, then `or-otel coach install`.
> * **`already has a coach.5s.sh that is not the coach's`.** A file of yours in SwiftBar's plugin folder has the same name. Rename or move it, then run `or-otel coach install`.
> * **`SwiftBar now reads …`.** SwiftBar's plugin folder was changed after the install. Run `or-otel coach install` again to link the plugin into the new folder.
> * **`swiftbar not running`.** Open SwiftBar from `~/Applications` or `/Applications`.
> * **`menu not set up: SwiftBar 2.1.1 needs macOS 12 or newer`.** The menu bar item is not available on this Mac. The Claude Code line still works; Codex has no other place to show.
>
> If the menu bar is crowded, macOS hides items that do not fit, so the coach may be set up and still out of view. Quit an app with a menu bar icon to check.

> [accordion] A tool shows — in the menu bar
>
> The coach has seen no spend from that tool in the last 20 minutes. Use it for a few minutes and the bars fill in.
>
> For Codex, the coach reads `~/.codex/sessions`. Codex running on this Mac writes there. Codex cloud tasks and Codex on other machines do not, so their use only shows as `Outside Codex`, and only while a Codex chat on this Mac is also active.

> [accordion] There is no Claude Code line
>
> Work through these in order:
>
> 1. **Open a new Claude Code session.** Sessions that were open before the install keep their old settings.
> 2. **Check you are in a terminal.** The Claude Code sidebar panel in VS Code or JetBrains and Claude Desktop do not show a status line. Run `claude` in a terminal, including the editor's built-in terminal.
> 3. **Run `or-otel coach status`.** It should say `coach: on` and `4 of 4` hooks. If it says `off`, run `or-otel coach install`.
> 4. **Check for a project status line.** A `statusLine` in a project's own `.claude/settings.json` replaces the one `or-otel` sets, for that project.

> [accordion] or-otel coach install says it needs Node 20 or newer
>
> The coach is a Node program. Install Node 20 or newer, check that `node -v` works in a new terminal, and run `or-otel coach install` again. Nothing was changed by the failed attempt.

> [accordion] or-otel coach status says node is missing
>
> The coach remembers the Node it found at install. If you removed that version, for example with a version manager, the coach stops. Run `or-otel coach install` again to pick up the Node you have now.

> [accordion] or-otel coach prints the general help instead
>
> Your `or-otel` is older than 0.12.0. Run `or-otel update`, then try again.

> [accordion] A tool stays on checking pace…
>
> That is normal for the first five minutes of a window. In Claude Code it also appears when Claude Code has not yet reported a limit for this session; send one message and it fills in.

> [accordion] The verdict changed colour while I did nothing
>
> That is expected. The projection uses the last 20 minutes, so a burst of usage ages out and the run-out time moves later while you are idle.

> [accordion] The Claude Code line's icon or second line looks odd
>
> The `⣏⣸` mark and the indent of the second line are drawn with braille characters. A few terminal fonts show them as faint dots or leave the second line out of alignment. The line is still correct; send a screenshot so that it can be fixed for your font.

## Feedback

The coach is being tested on a small number of accounts, and the most useful reports are the ones where it was wrong, for either tool:

* It said on track and you still hit the limit.
* It said the limit runs out and you reached the reset without trouble.
* The top drain named something that did not match what you were doing.

Send those, with a screenshot of the menu bar or the line if you can, and say which tool, to the person who asked you to try it.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.