aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers
diff options
context:
space:
mode:
Diffstat (limited to 'docs/superpowers')
-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.