LLM Providers
dgov uses OpenAI-compatible endpoints for worker execution at dgov run
time. Provider definitions live in .dgov/project.toml; plans and tasks can
select a named provider from that registry.
dgov init scaffolds commented provider placeholders. Configure or add named
providers in .dgov/project.toml before running executable worker plans.
Configuration
The [providers] registry defines endpoints. [project].provider selects the
default provider for tasks that do not name one.
[project]
provider = "llm"
[providers.llm]
default_agent = "provider/model-name"
base_url = "https://provider.example.com/v1"
api_key_env = "PROVIDER_API_KEY"| Field | Meaning |
|---|---|
[project].provider | Default provider name |
[providers.<name>].default_agent | Default model/router for that provider |
[providers.<name>].base_url | OpenAI-compatible API base URL |
[providers.<name>].api_key_env | Env var that holds the API key |
Task-level provider = "..." selects a provider endpoint. Task-level
agent = "..." overrides only the model/router name.
Generic endpoint example
[project]
provider = "llm"
[providers.llm]
default_agent = "provider/model-name"
base_url = "https://provider.example.com/v1"
api_key_env = "PROVIDER_API_KEY"export PROVIDER_API_KEY=your-key-hereOpenAI-compatible endpoint
[project]
provider = "llm"
[providers.llm]
default_agent = "provider/model-name"
base_url = "https://provider.example.com/v1"
api_key_env = "PROVIDER_API_KEY"export PROVIDER_API_KEY=your-key-hereOther API-compatible clients
dgov itself uses OpenAI-compatible endpoints. For tools that call a different
API shape, use that provider's matching base URL and model name outside dgov:
base_url = "https://provider.example.com/v1"
model = "provider/model-name"
api_key_env = "PROVIDER_API_KEY"export PROVIDER_API_KEY=your-key-hereOther OpenAI-compatible endpoints
[project]
provider = "custom"
[providers.custom]
default_agent = "your-model-name"
base_url = "https://your-provider.example.com/v1"
api_key_env = "YOUR_PROVIDER_API_KEY"export YOUR_PROVIDER_API_KEY=your-key-herePlan selection
Set a plan-wide default in _root.toml:
[plan]
name = "provider-demo"
sections = ["tasks"]
default_provider = "openai"Override one task in a task TOML:
[tasks.review]
summary = "Review with another endpoint"
provider = "openrouter"
agent = "openrouter/model-name"Common mistakes
Wrong env var name. .dgov/project.toml might say api_key_env = "PROVIDER_API_KEY" under the selected provider, so dgov run reads that env
var literally.
Confusing model name with endpoint. default_agent is the model or
router identifier. The provider endpoint is selected by provider.
Assuming a task agent switches provider. Per-task agent overrides the
model name only. Use task provider for endpoint selection.
Recommendation
For most repos:
- set
default_agent - set
base_url - set
api_key_env - set
[project].provider - export the matching env var
That is the complete provider configuration surface.