Skip to content

Multi-provider plan support: track Claude Max + ChatGPT Plus (Codex) overage in parallel #218

@samshennan

Description

@samshennan

Summary

codeburn plan set <id> currently accepts only one plan at a time, scoped to a single provider. Users who run multiple flat-rate subscriptions in parallel (e.g. Claude Max + ChatGPT Plus for Codex) cannot get accurate "API-equivalent vs subscription overage" attribution because only one of the two can be active.

Why it matters

The headline cost figure CodeBurn shows is tokens × LiteLLM rate. Without a registered plan, that number wildly overstates real cash outflow for anyone on subs. Today CodeBurn only solves this for one provider per machine.

My setup (representative)

  • Claude Code Max — $200/mo flat (already supported via claude-max)
  • ChatGPT Plus → Codex CLI / GPT-5.4-5.5 — $20/mo flat
  • Some metered Gemini / Anthropic raw API on top

After codeburn plan set claude-max:

  • Claude figures correctly switch to overage-aware view.
  • Codex figures still show as raw API-pricing — $8.26 for GPT-5.4 in 7 days, $46.67 for GPT-5.5, etc. — when the real cost was the $20 flat sub.

Repro

codeburn plan set claude-max
codeburn plan set custom --monthly-usd 20 --provider codex   # there's no clean way to add a second plan
codeburn plan                                                 # still shows a single plan

Suggested shape

  1. Make plans a list keyed by provider rather than a single scalar.
  2. codeburn plan add <id> [--provider <p>] [--monthly-usd <n>] [--reset-day <d>] and codeburn plan remove <provider>.
  3. Add a built-in chatgpt-plus plan id ($20/mo, provider: codex) so users don't have to roll a custom every time. This pairs naturally with claude-pro / claude-max / cursor-pro.
  4. Optional: codeburn plan list showing the active set with current month overage per plan.

Bonus

Cursor Pro + Claude Max is the same shape — same fix unlocks that combo too.

Happy to test a patch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions