Plan value
llm-usage value prices each calendar month of your usage at pay-as-you-go API rates and sets it beside a subscription plan’s monthly price, with the projects that used it. It answers “would the API have cost more or less than my plan?”, not “what did I pay”.
llm-usage valuellm-usage value --plan claude-max-5x --plan chatgpt-plusChoose the plan
Section titled “Choose the plan”| Plan id | Price | Covers |
|---|---|---|
claude-pro |
$20 | claude |
claude-max-5x |
$100 | claude |
claude-max-20x |
$200 | claude |
chatgpt-go |
$8 | codex |
chatgpt-plus |
$20 | codex |
chatgpt-pro-100 |
$100 | codex |
chatgpt-pro-200 |
$200 | codex |
chatgpt-pro-500 |
$500 | codex |
The prices are list prices in USD per month, excluding tax, as checked on the date the report prints under the tables. Check the vendor’s pricing page before relying on them; the JSON lists those pages under checkAt.
Without --plan, the report compares with claude-max-20x. When --source (or a sources list in the config file) leaves out claude, it falls back to chatgpt-pro-200 and says so on stderr. When the filter keeps neither claude nor codex, there is no plan to compare with and the command fails.
--plan is repeatable, and each plan gets its own table over the sources it covers. Two plans that cover the same source each count that source’s full cost; the report does not split usage between them.
--plan-price replaces the list price, for a discount or a regional price. It needs exactly one plan, and the default plan counts as one:
llm-usage value --plan claude-pro --plan-price 18 --last 6 --jsonRead the table
Section titled “Read the table”
| Column | Meaning |
|---|---|
| Month | Calendar month in the reporting timezone; * marks a partial month |
| Projects | The month’s costliest projects with cost and share |
| Tokens | Total tokens of the plan’s sources |
| API Cost | Cost of the same usage at API prices |
| Plan | The plan’s monthly price |
| API / Plan | API cost divided by the plan price |
| Difference | API cost minus the plan price; positive means the plan cost less |
Each month lists its 10 costliest projects, then one and N more line with the cost and share of the rest. --top N lists N projects per month and --top 0 lists them all; the limit applies to --json as well, and a note on stderr says when projects were left out. On a terminal too narrow for the table, each month is listed as labelled values, one project per line.
The final ALL row sums the months. A month is partial when the window does not cover all of it or it is the current month. Partial months are not prorated: the plan price counts in full, so the current month looks worse for the plan than it will by its end.
API Cost follows --cost-mode like the other reports: by default the cost the source logged, otherwise an estimate from LiteLLM prices. A ~ marks a month where some events have no price, so the cost is a lower bound. See Pricing.
--compact abbreviates token counts and drops Difference; --no-cost keeps only Month, Projects, and Tokens.
Set the window
Section titled “Set the window”Without date flags, the report covers every month since your first usage, including months without any. --last N covers the last N months, counting the current one; --since and --until take inclusive dates, and the window never runs past today.
llm-usage value --last 3llm-usage value --since 2026-01-01 --until 2026-06-30The shared filters apply, including --repo to price only some projects and --machine to count only some machines.
Output
Section titled “Output”value supports terminal, --json, and --markdown output, but not --share.
{ "schemaVersion": 1, "report": "value", "data": { "asOf": "2026-10-15", "window": { "since": "2026-05-01", "until": "2026-06-21" }, "plans": [ { "id": "claude-max-20x", "priceUsdPerMonth": 200, "listPriceUsdPerMonth": 200, "priceSource": "list", "sources": ["claude"], "checkAt": ["https://claude.com/pricing"], "references": ["https://www.morphllm.com/claude-code-pricing"], "months": [ { "month": "2026-06", "partial": true, "totalTokens": 20050, "apiCostUsd": 0.05895, "costIncomplete": false, "planPriceUsd": 200, "ratio": 0.000295, "differenceUsd": -199.94105, "projects": [ { "repoRoot": "/work/a/api", "project": "a/api", "totalTokens": 16400, "costUsd": 0.039, "costIncomplete": false, "costShare": 0.661578 } ], "otherProjects": null } ], "total": { "totalTokens": 21550, "apiCostUsd": 0.06705, "costIncomplete": false, "planPriceUsd": 400, "ratio": 0.000168, "differenceUsd": -399.93295 } } ] }}The sample keeps one month and one project. priceSource is override when --plan-price set the price. months lists every month in the window, months without usage included. otherProjects sums the projects --top left out of a month (projects, totalTokens, costUsd, costIncomplete, costShare) and is null when none were. total.planPriceUsd counts partial months in full. The full contract is report-value.v1.schema.json.