Solidway v0.1.0 is released under AGPL-3.0; source and releases are on GitHub. This documentation is being rewritten against the release — pages outside Quick start and Reference still describe planned behaviour. The current reference lives in docs/getting-started.md and docs/architecture.md in the repository.
Core concepts
Route, provider credential, quota domain, API key, incident — the vocabulary the rest of these pages use.
Six terms carry most of the product. They are defined once here so the rest of the documentation can use them without re-explaining.
Route
The entry point your scripts talk to. A route has an owner, a name (unique per owner), an enabled flag and an archived flag. Clients do not address a route by URL path: they authenticate with an API key, and the key resolves to exactly one route.
A route is also the pool: it holds the provider credentials that serve it. Routes and their credentials are private — an admin sees only the routes they created.
Provider credential
One upstream account: the provider preset (base URL, auth scheme, inbound formats), the credential itself, the model list (client-facing name → upstream id), a selection priority tier, and its current health state.
Add several credentials to one route to build a pool. Adding a second account is the whole of “more capacity”; there is no separate pool object to configure.
Quota domain
The unit of pooling. The quota of an upstream account belongs to a domain, and an API key is a credential of that domain. One account can therefore serve several routes while usage is still attributed per call.
API key
The caller’s credential, bound to exactly one route. The plaintext is shown once at creation; afterwards only prefix and mask are visible. Keys can be disabled or given an expiry date without touching the route.
Incident
A provider failure that says something about the credential: reason, route, provider, start and end time, attempt count and severity. Incidents stay open until the credential recovers or an operator closes them. Retired credentials need a manual restore.
Affinity
A sticky mapping from (route, model, session) to a credential, with a sliding TTL. It
keeps a conversation on the same account when locality helps. Health always wins: a
credential in cooldown or retirement is skipped even if affinity points at it.
How they fit
API key ──► route ──► credential pool ──► selection ──► attempt
│
marked? ─────────────┴──► next candidate