configure in admin. That tag is literal:
the catalogue is populated and credentialed from the authenticated admin
surface, and the operator console only reads the result.
What the catalogue contains
The screen calls a single procedure,providers.list, and renders whatever it
returns. Each catalogue entry carries:
An entry appears in this catalogue because it exists in the provider catalogue
maintained in the admin surface. Nothing in the operator console creates,
edits, or removes entries — there is no write path on this screen. If a vendor
you expect is missing, it has not been added in admin; if a vendor is listed
but calls to it fail, the entry exists but its credentials or base URL need
attention in admin.
The three summary cards at the top of the screen are derived, not stored: each
one counts the entries whose
cat matches that category. The count in a
section header is the same number, computed the same way. A category card
reading 0 means no entries of that category are in the catalogue at all.
Categories: LLM, ASR, TTS
The catalogue groups entries into exactly three categories. The grouping is what the console uses to decide which section a row is drawn in, and it is the same axis an agent pipeline uses when it picks a provider for a pipeline stage.
Categories are not hierarchical and an entry belongs to one category only. A
vendor that offers both transcription and synthesis appears as two separate
catalogue entries, one per category, each with its own
id, baseUrl, and
credentials.
Base URL and routing
baseUrl is the endpoint the fabric sends requests to for that entry. It is
the field that decides where traffic goes; the category decides what shape
the request has.
This is the field that lets one catalogue entry point at a hosted vendor API
and another point at your own deployment. A self-hosted OpenAI-compatible
server — for example a vLLM instance — is a normal LLM entry whose baseUrl
is your server’s address rather than the vendor’s. The console does not
distinguish the two cases: both render as ordinary rows in the LLM section.
Two consequences worth knowing:
- Moving a workload between vendors or between hosted and self-hosted is a base-URL change on the catalogue entry, not a change to every agent config that references it. Agents reference the entry, not the URL.
- A blank base URL renders as
—. The console shows this without complaint, because it performs no validation and no reachability check. An entry with no base URL is listed as present but has no route.
Where credentials are configured
Credentials are held in the admin surface and are never read by, rendered in, or writable from this console. That is why each row’s status column is a fixedconfigure in admin tag rather than a per-provider state: the operator console
has no visibility into whether a key is present, valid, or expired, so it
asserts nothing about it.
The practical split:
This follows the same principle as the rest of the platform: powerful,
long-lived credentials stay on the authenticated surface that owns them, and
read surfaces get names and identifiers only. See
Authentication.
Referencing a provider from an agent config
An agent pipeline does not embed a vendor URL or a key. It names a catalogue entry by itsid, per pipeline stage, and the fabric resolves that id to the
entry’s category, base URL, and credentials at call time.
Because the resolution happens at call time, a credential rotation or a base
URL change made in admin applies to every agent that references the entry,
with no agent-side edit.
When you are wiring up an agent and need the id for a vendor you can see on
this screen, the id is the value in the entry’s id field — the row label is
the name, which is a display string and may change. Pin configs to id.
Two things to check when an agent’s stage fails to resolve:
- The id exists in the catalogue. If
providers.listdoes not return it, the entry has not been added in admin. - The id’s category matches the stage. An
ASRentry cannot serve a synthesis stage, and anLLMentry cannot serve a transcription stage. The category on the row is the authoritative answer.
Related
- Authentication — where credentials live and how they are scoped
- Telemetry — where provider-facing request behaviour is observable

