Skip to main content

viben provider

Manage API providers for AI models.

Usage

viben provider <subcommand> [options]

Subcommands

SubcommandDescription
listList all configured providers (supports --category, --surface filters)
createCreate a new provider
showShow provider details
updateUpdate provider configuration
removeRemove a provider
set-defaultSet the default provider
enableEnable a provider
disableDisable a provider
statusCheck provider connectivity
typesList supported provider types

Provider Types

LLM Providers

TypeDescriptionAuthentication
openaiOpenAI APIAPI Key
openai-responsesOpenAI Responses APIAPI Key
anthropicAnthropic APIAPI Key
googleGoogle AI (Gemini)API Key, OAuth
azureAzure OpenAIAPI Key, Azure AD
openrouterOpenRouterAPI Key
ollamaOllama (local)None
volcengineVolcano Engine (字节跳动)API Key
grokGrok (xAI)API Key

Media Providers

TypeDescriptionAuthentication
nanobananaNano Banana (image)API Key
imagerouterImage RouterAPI Key
falFal.ai (image/video)API Key
leonardoLeonardo AI (image)API Key
minimaxMiniMax (video/music)API Key
elevenlabsElevenLabs (speech)API Key
fishaudioFish Audio (speech)API Key
senseaudioSenseAudio (speech)API Key
aihubmixAIHubMixAPI Key
sunoSuno (music)API Key
udioUdio (music)API Key

Commands

List Providers

# List all providers
viben provider list

# Filter by category
viben provider list --category llm
viben provider list --category media

# Filter by surface
viben provider list --surface image
viben provider list --surface chat

# JSON output
viben provider list --json

Output:

Providers:
ID Category Type Surfaces Base URL Default Enabled
anthro-main llm anthropic chat (default) Yes Yes
openai-main llm openai chat (default) Yes
dalle-img media nanobanana image (default) Yes

Create Provider

# Create with explicit name and type
viben provider create -n my-anthropic -t anthropic --api-key sk-ant-xxx

# Create with auto-generated name
viben provider create -t openai --api-key sk-xxx

# Create with custom base URL
viben provider create -t openai --base-url https://api.example.com/v1 -d

# Create media provider
viben provider create -t nanobanana --category media --surface image --api-key sk-xxx

Options:

OptionDescription
-n, --name <name>Provider name (auto-generated if omitted)
-t, --type <type>Provider type (required, see valid types above)
--category <category>Provider category: llm or media
--surface <surface>Supported surface (repeatable)
-u, --base-url <url>Custom base URL
-k, --api-key <key>API key
--auth <method>Authentication method
--timeout <seconds>Request timeout
--max-retries <count>Retry attempts
-d, --defaultSet as default provider

Show Provider

viben provider show -n my-provider

Update Provider

viben provider update -n my-provider \
--api-key sk-new-key \
--timeout 60 \
--max-retries 5

Remove Provider

viben provider remove -n my-provider
# or
viben provider rm -n my-provider

Set Default Provider

viben provider set-default -n openai-main

Enable / Disable Provider

viben provider enable -n my-provider
viben provider disable -n my-provider

Provider Status

# Check all providers
viben provider status

# Check specific provider
viben provider status -n anthropic-main

Output:

Providers:
Provider Connected Latency Error
anthropic-main Yes 120ms -
openai-main Yes 85ms -
local-ollama No - connection refused

List Provider Types

viben provider types

Output:

Type Default Base URL API Key Env Var
openai https://api.openai.com/v1 OPENAI_API_KEY
anthropic https://api.anthropic.com ANTHROPIC_API_KEY
openai-responses https://api.openai.com/v1 OPENAI_API_KEY
...

Environment Variables

Providers can be configured using environment variables:

Provider TypeAPI KeyBase URLOther
anthropicANTHROPIC_API_KEYANTHROPIC_BASE_URL
openaiOPENAI_API_KEYOPENAI_BASE_URLOPENAI_ORG_ID
openai-responsesOPENAI_API_KEYOPENAI_BASE_URL
azureAZURE_OPENAI_API_KEYAZURE_OPENAI_ENDPOINTAZURE_OPENAI_API_VERSION, AZURE_OPENAI_DEPLOYMENT
googleGOOGLE_API_KEYGOOGLE_PROJECT_ID, GOOGLE_LOCATION
openrouterOPENROUTER_API_KEY
ollamaOLLAMA_HOST
grokXAI_API_KEY

Priority

Provider configuration is resolved in order:

  1. Command-line arguments (--api-key)
  2. Values in configuration file
  3. Provider-specific environment variables (e.g., ANTHROPIC_API_KEY)
  4. Default base URLs

Configuration File

Provider configuration is stored in ~/.viben/models.yaml:

# ~/.viben/models.yaml
version: 1

providers:
anthropic-main:
type: anthropic
category: llm
surfaces: [chat]
# API key from ANTHROPIC_API_KEY env var

openai-main:
type: openai
category: llm
surfaces: [chat]
# API key from OPENAI_API_KEY env var

local-ollama:
type: ollama
category: llm
surfaces: [chat]
OLLAMA_HOST: "http://localhost:11434"

dalle-images:
type: nanobanana
category: media
surfaces: [image]

Error Handling

Provider Not Found

{
"success": false,
"error": {
"code": "PROVIDER_NOT_FOUND",
"message": "Provider 'unknown-provider' not found"
}
}

Invalid API Key

{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid API key for provider 'anthropic-main'"
}
}