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_KEY—GOOGLE_PROJECT_ID, GOOGLE_LOCATION
openrouterOPENROUTER_API_KEY——
ollama—OLLAMA_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'"
}
}