# `LlmCore.Provider.Definition`
[🔗](https://github.com/fosferon/llm_core/blob/v0.3.0/lib/llm_core/provider/definition.ex#L1)

Normalized provider metadata loaded from TOML configuration and runtime discovery.

These structs are stored in `LlmCore.Config.Store` and consumed by the agent
registry and routing pipeline for capability-aware decisions.

## Provider Kinds

  * `:module` — traditional module-based providers implementing `LlmCore.LLM.Provider`
  * `:cli` — CLI-based providers configured via `%CLIProvider.Config{}` structs

# `t`

```elixir
@type t() :: %LlmCore.Provider.Definition{
  agent_config: map(),
  aliases: [String.t()],
  auth: map(),
  availability: :ok | {:error, term()},
  available?: boolean(),
  capabilities: map(),
  cli_config: struct() | nil,
  default_agent: String.t() | nil,
  default_model: (String.t() | nil) | nil,
  enabled: boolean(),
  id: String.t(),
  metadata: map(),
  model_resolution: :gc_default | :provider_runtime | :explicit_only | nil,
  module: (module() | nil) | nil,
  options: map(),
  provider_kind: :module | :cli,
  type: atom()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
