Skip to content

CLIver reads its configuration from ~/.cliver/config.yaml. The config covers providers, models, permissions, and runtime behavior.

~/.cliver/
├── config.yaml # Main configuration
├── identity.md # Agent profile (name, role, preferences)
├── memory.md # Persistent knowledge
├── skills/ # User-global skills
├── tasks/ # Task definitions
└── audit_logs/ # Token usage logs

API keys are resolved through three layers:

  1. KeyStore — encrypted secrets stored in CLIver’s database
  2. Environment variable — all-uppercase names resolve from os.environ
  3. Literal — used as-is if no match above
api_key: deepseek # 1. Looks up "deepseek" in KeyStore
api_key: DEEPSEEK_API_KEY # 2. Falls back to env var
api_key: sk-abc123 # 3. Used literally

Manage keys with:

Terminal window
cliver keys add deepseek # Store encrypted in KeyStore
cliver keys list # List stored key names

A working config needs one provider and one model:

providers:
deepseek:
type: openai
api_url: https://api.deepseek.com
api_key: DEEPSEEK_API_KEY
models:
text:
deepseek-chat:
provider: deepseek
model: deepseek-chat