opencode icon indicating copy to clipboard operation
opencode copied to clipboard

feat(auth): add support for multiple profiles per provider

Open charles-cooper opened this issue 1 month ago • 0 comments

implements https://github.com/sst/opencode/issues/5391

Summary

  • Allow users to store multiple API keys for the same provider with named profiles (e.g., separate OpenRouter keys for different cost tracking)
  • Add auth set-default command to swap a named profile to become the default

Changes

  • Auth module: Added profile support to get/set/remove, plus profiles(), hasDefault(), setDefault() functions
  • CLI commands: login prompts for profile name when default exists, logout/list show profile names, new set-default command
  • Provider: parseModel() extracts profile from provider:profile/model format
  • Config: Added optional profile field to provider schema
  • Errors: Added ProfileNotFoundError and InvalidProfileNameError

Usage

# First login creates default profile
opencode auth login  # select openrouter, enter key

# Second login prompts for profile name
opencode auth login  # select openrouter, enter "work", enter key

# List shows profiles
opencode auth list
# OpenRouter (default) api
# OpenRouter:work api

# Use profile in model string
opencode --model openrouter:work/claude-sonnet-4

# Swap profiles
opencode auth set-default  # select openrouter, select "work"

charles-cooper avatar Dec 14 '25 00:12 charles-cooper