Configure models#
OpenProgram needs at least one LLM provider to work. This page covers first-time setup, the provider management commands, and how "enabled models" work.
First-time setup#
openprogram setup
The first-run wizard walks through every configuration section — models, tools, agents, and more. openprogram setup model jumps straight to the model section; openprogram setup menu opens the interactive picker. The Web UI shows the same wizard on first launch (and Settings → Providers is always available afterwards).
To configure provider credentials only, use the narrower entry point:
openprogram providers setup # interactive: scan existing credentials → log in → verify
The providers subcommands#
openprogram providers -h lists every verb. The common ones:
| Command | What it does |
|---|---|
login <provider> |
Log in to a provider. Picks the right method automatically (OAuth or API key); use --api-key-stdin in scripts |
logout <provider> |
Delete the provider's credentials |
status <provider> |
Check whether the current credentials work |
list |
List the configured credential pools by profile |
available [QUERY] |
List every configurable provider catalog entry (including community ones), optionally filtered by keyword |
discover / adopt |
Scan credentials already on this machine (Codex CLI, environment variables, etc.) and import them — see Authentication and credentials |
use <provider> [profile] |
With multiple accounts, choose which one the provider currently runs on |
doctor |
Diagnose credentials: expiry, refresh, cooldown, conflicts |
aliases / profiles / migrate |
Short-name aliases, account profile management, credential format migration |
Enabled models#
Configuring credentials does not by itself make models selectable. Each provider has an "enabled models" list, and only enabled models appear in the chat UI's model picker.
- Mechanism: the registry (
openprogram/providers/enabled_models.py) reads each provider's model entries from the config file at startup and builds the runtime model list; config changes take effect on reload. - Config file:
~/.openprogram/config.json(~/.openprogram-<name>/config.jsonwhen using--profile <name>). Each provider lives underproviders.<id>: anenabledflag and the enabled model entries undermodels(spec rows with context window, pricing, and so on). Models added by hand are stored in the same list, taggedsource: "manual". - How to enable models: tick them in the setup wizard; browse the provider's model list under Settings → Providers in the Web UI and tick them there (the Fetch button re-pulls the official model catalog); subscription providers auto-enable a default model set on login. Editing config.json by hand is normally unnecessary.
- Default model: the top-level
default_provideranddefault_modelconfig keys decide which model a new session uses; switching models in the UI updates them.
Other pages in this section#
- Providers — built-in provider catalog, access methods, library usage
- Authentication and credentials — credential sources, storage location, importing from other CLIs
- Fast tier — routing requests to a faster service tier
- Thinking effort — reasoning depth levels
- Token tracking — how each provider reports usage