diff options
| author | Danilo M. <danix@danix.xyz> | 2026-08-09 12:05:15 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-08-09 12:05:15 +0200 |
| commit | 4df1523aae7f99b36d9d3696e4406e58ce095fe4 (patch) | |
| tree | 5b98a946a6902b90efe9fb83177cc1aa41e78584 /docs/superpowers/specs | |
| parent | 949c5be9143d4f1a0d803747e634da3477daf613 (diff) | |
| download | llamachat-4df1523aae7f99b36d9d3696e4406e58ce095fe4.tar.gz llamachat-4df1523aae7f99b36d9d3696e4406e58ce095fe4.zip | |
docs: name the local provider "local", not "default"
The name is behaviour, not config: it decides which provider a bare
base_url synthesizes, which one renders without a prefix, which one
skips filtering, and which one is exempt from the model dialog. All
four live in code, so the name had to be picked before implementation.
"default" was doing double duty as "the fallback" and "the local one",
and only the second is true.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'docs/superpowers/specs')
| -rw-r--r-- | docs/superpowers/specs/2026-08-09-external-providers-design.md | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/docs/superpowers/specs/2026-08-09-external-providers-design.md b/docs/superpowers/specs/2026-08-09-external-providers-design.md index 1174ded..cb4a070 100644 --- a/docs/superpowers/specs/2026-08-09-external-providers-design.md +++ b/docs/superpowers/specs/2026-08-09-external-providers-design.md @@ -18,10 +18,10 @@ putting an approximate cost next to the context meter. ## Providers `config.toml` grows a `[providers.*]` table. The local router stops being -special and becomes an ordinary entry named `default`. +special and becomes an ordinary entry named `local`. ```toml -[providers.default] +[providers.local] base_url = "http://localhost:8181" [providers.together] @@ -48,19 +48,19 @@ Per-provider keys, all optional except `base_url`: ### Backward compatibility A top-level `base_url` with no `[providers]` table synthesizes -`[providers.default]` from it. An existing config keeps working untouched +`[providers.local]` from it. An existing config keeps working untouched and nothing needs migrating. If both a top-level `base_url` and an explicit -`[providers.default]` are present, the explicit one wins. +`[providers.local]` are present, the explicit one wins. ### Model identity -Models are addressed as `provider:model`. The `default` provider is the +Models are addressed as `provider:model`. The `local` provider is the exception: its models are shown and stored bare, so the local dropdown reads exactly as it does now and existing sessions keep resolving. A model id containing a colon is therefore ambiguous only in principle; the split is on the first colon, and any provider name that is not configured -falls back to treating the whole string as a `default` model. That keeps an +falls back to treating the whole string as a `local` model. That keeps an old session pointing at a local model working even if the model name itself grows a colon. @@ -71,7 +71,7 @@ together.ai lists roughly 200 models. A model is kept when any filter substring appears in its id, compared case-insensitively. `"qwen"` matches `Qwen/Qwen2.5-72B-Instruct-Turbo`. -The `default` provider is never filtered. +The `local` provider is never filtered. When a provider's filter matches nothing, the status bar reports it by name with the counts, e.g. `together: 0 of 213 models matched filter`. The @@ -123,7 +123,7 @@ Unknown degrades per value: | --- | --- | | `ctx_size` | Meter shows tokens used with no limit and no percentage. Attachment budget uses a fallback. | | `vision` | Treated as unknown, not as false: attaching an image is permitted and no dialog offers to switch models. | -| `price_in` / `price_out` | No cost figure. Shown as blank for `default`, `?` for a provider that has an `api_key`. | +| `price_in` / `price_out` | No cost figure. Shown as blank for `local`, `?` for a provider that has an `api_key`. | The `?` distinguishes "local, free" from "cloud, price not entered". Both would otherwise render as an empty label, which reads as free. @@ -161,7 +161,7 @@ price fields are valid and mean unpriced. Two triggers: - **First selection.** Choosing a model in the dropdown that has no - `models.ini` section and belongs to a provider other than `default` opens + `models.ini` section and belongs to a provider other than `local` opens the dialog once, before anything is typed. Cancel writes `configured = false`. - **On demand.** A button beside the model dropdown opens the dialog for the @@ -256,14 +256,14 @@ usable. Following the project's existing test approach, written before the implementation: -- Config: providers parsed, bare `base_url` synthesizing `default`, explicit - `default` winning over it, filter matching case-insensitively, empty - filter meaning all, `default` never filtered. +- Config: providers parsed, bare `base_url` synthesizing `local`, explicit + `local` winning over it, filter matching case-insensitively, empty + filter meaning all, `local` never filtered. - Key resolution: each prefix form, lazy resolution not firing for local requests, caching after first resolution, timeout and failure paths reported as errors. - Model ids: split on first colon, unknown provider falling back to - `default`, `default` models rendering bare. + `local`, `local` models rendering bare. - Metadata resolution: the three layers in order, unknown values degrading as tabulated, `configured = false` suppressing the dialog. - `models.ini` round trip: written, reread, values preserved. |
