Skip to content

Conversation

@mguttmann
Copy link

Summary

Adds visibility into OAuth rate limits and usage information for authenticated providers, particularly useful for Claude Max users to monitor their 5-hour and 7-day usage limits.

Closes #8911

Changes

Backend (packages/opencode)

  • src/auth/index.ts: Add getUsage() and fetchAnthropicUsage() functions to OAuthPool
  • src/server/server.ts: Add GET /auth/usage API endpoint
  • src/cli/cmd/auth.ts: Add opencode auth usage CLI command

Frontend (packages/app)

  • src/components/dialog-auth-usage.tsx: New dialog component with:
    • Provider list with account counts
    • Anthropic usage limits visualization (5-hour, 7-day)
    • Color-coded progress bars (green/yellow/red)
    • Account status with cooldown indicators
    • Refresh button
  • src/pages/layout.tsx: Add sidebar button to open usage dialog

Screenshots

The dialog displays:

  • Usage bars showing utilization percentage
  • Reset time countdown
  • Active account indicator
  • Cooldown status when rate-limited

Testing

  • Tested with Claude Max account
  • CLI command works correctly
  • API endpoint returns expected data

Note

This PR includes the OAuth multi-account failover commits from @gwizz as a foundation, since the usage dashboard builds on that infrastructure. Credit to gwizz for the excellent OAuth rotation system!

gwizz and others added 11 commits January 16, 2026 16:30
Non-network errors seen in logs:

- AI_APICallError (402 deactivated_workspace)

- AI_APICallError (500 server_error)

- AI_LoadAPIKeyError / OpenAI API key is missing

- ProviderInitError

- ConfigInvalidError

- ProviderAuthOauthCallbackFailed

- NotFoundError

- EditBuffer is destroyed
- Add getUsage() to fetch OAuth account status and health
- Add fetchAnthropicUsage() to fetch Claude Max rate limits from Anthropic API
- Add GET /auth/usage endpoint to expose usage data
- Add DialogAuthUsage component with rate limit visualization
- Display Anthropic 5-hour and 7-day limits with progress bars
- Show OAuth account status, cooldown state, and request counts
- Add button in sidebar to open the dialog
- Add AuthUsageCommand to display rate limit info in terminal
- Show account status, cooldown state, and request counts
- Display Anthropic rate limits when available
@github-actions
Copy link
Contributor

The following comment was made by an LLM, it may be inaccurate:

Based on my search results, I found one potentially related PR:

Related PR:

This PR is related because the current PR (#8912) explicitly mentions that it builds on the OAuth multi-account failover infrastructure, likely from this OAuth Marathon implementation. However, they serve different purposes - #8590 appears to handle the credential rotation logic, while #8912 adds the usage monitoring dashboard on top of that infrastructure.

This is not a duplicate but rather a dependent feature. No exact duplicates found.

The AI SDK's convertToModelMessages() does not accept 'step-start' as a valid
UIMessagePart type. This caused AI_InvalidPromptError during session compaction.

- Remove step-start from being added to UIMessage parts
- Simplify the filter since step-start is no longer included
- Fixes compaction breaking sessions with context overflow
@adamdotdevin
Copy link
Contributor

@mguttmann screenshots please

@mguttmann
Copy link
Author

Closing to rework - will resubmit with improved documentation covering both features (multi-account OAuth rotation + usage dashboard)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Add OAuth rate limits and usage dashboard

2 participants