aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-09 12:05:15 +0200
committerDanilo M. <danix@danix.xyz>2026-08-09 12:05:15 +0200
commit4df1523aae7f99b36d9d3696e4406e58ce095fe4 (patch)
tree5b98a946a6902b90efe9fb83177cc1aa41e78584 /docs
parent949c5be9143d4f1a0d803747e634da3477daf613 (diff)
downloadllamachat-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')
-rw-r--r--docs/superpowers/specs/2026-08-09-external-providers-design.md26
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.