Schema

Use this reference to inspect fields, methods, accepted values and failure outcomes. For setup and working examples, start with the API guide.

Definition: abstraction.router

Service Router [DEF-S1]

Read existing model hosts and choose where a caller may ask. Decisions do not enforce access to hosts outside the router.

Wire identity: abstraction.router/router@1

Handler error codes, declared by router_error_codes: internal, invalid_request, caller_refused, unknown_operation, unavailable, forbidden. Generated bindings name each as a ServiceErrorCode member beside the dispatcher's own codes.

Frames carry version, service, method and typed arguments. Transport owns framing, associated exchanges, deadlines and connections. Unknown version/service/method and malformed arguments are rejected before invoking a handler. One-way WriteFrame success means local submission, not remote acceptance or persistence.

Request-response methods use ExchangeFrame. Replies carry version, service, method, ok and payload; success payload contains typed value (or an empty object for void). Error payload contains nonempty code and message, which may be empty. ServiceError preserves unknown codes. Unexpected handler failures become handler_error without private details; invalid results become invalid_result. Clients validate reply identity and result before exposing it. A malformed frame or transport failure remains a local error; the transport must associate each response with its exchange. C++ dispatchers are pure protocol bindings, not listening servers.

Read model families and aliases. Fresh requests survey the existing hosts.

Models

request-response ModelsSnapshot

Read host residency, duplicate families and routing audit. Who holds the card is abstraction.resource/table@1, outside this subset.

Hosts

request-response HostsSnapshot

Choose a permitted host without loading any model. Missing allowance permits all hosts; an explicit empty allowance permits none. Attribution comes from the bound caller.

Pick

request-response PickResult

List the families a caller may ask for a profile, one name each and the conservative context, after the request's placement and answer reserve. Gated by abstraction.router/inventory.read.

Offer

request-response OfferSnapshot

Encoding [DEF-E1]

settingvaluerule
escapeminimal[DEF-E2]
indent2[DEF-E3]
map_keysutf8-bytes[DEF-E4]
numbersinteger-decimal[DEF-E5]
opaqueverbatim[DEF-E6]
terminatornewline[DEF-E7]
duplicate_keysrefuse[DEF-E8]
depth_limit64[DEF-E9]

Types

kindtypes
built inAvailabilityCause ContextSource OfferOutcome Placement bool i64 string
declared belowCaller Decision HostAllowance Observation
container [DEF-T3]list<string>
repeated record [DEF-A9]list<Alias> list<Ask> list<Component> list<Family> list<HostState> list<Offer>

Named types [DEF-T2]

One spelling is written [DEF-G2] and a wider set is read [DEF-G1]; the width between them is the interoperability guarantee.

nameiswrittenread
timestampstringrfc3339-microsrfc3339-wide

Structs [DEF-T1]

A field is required, or says when it is omitted [DEF-A4]. Each struct says on its own what it does with a field name it has never heard of [DEF-A7]. A wire name never moves; where a language must spell it differently the field says so [DEF-A2].

HostAllowance

unknown fields refuse

idfieldtypepresencenamed elsewhere
1hostslist<string>required—

PickRequest

the document [DEF-A1] · unknown fields refuse

idfieldtypepresencenamed elsewhere
1modelstringrequired—
2freshboolrequired—
3allowedHostAllowanceoptional · omitted when absent—
4profilestringoptional · omitted when zero—

Caller

unknown fields grant

idfieldtypepresencenamed elsewhere
1user_descriptionstringrequired—
2path_descriptionstringrequired—

Observation

unknown fields grant

idfieldtypepresencenamed elsewhere
1callerCallerrequired—
2took_msi64required—
3cache_age_msi64required—

Alias

unknown fields grant

idfieldtypepresencenamed elsewhere
1hoststringrequired—
2namestringrequired—
3residentboolrequired—
4servableboolrequired—
5hostedbooloptional · omitted when zero—
6profileslist<string>optional · omitted when zero—
7held_inlist<string>optional · omitted when zero—
8context_lengthi64optional · omitted when zero—
9effective_context_lengthi64optional · omitted when zero—

Component

unknown fields grant

idfieldtypepresencenamed elsewhere
1storestringrequired—
2rolestringrequired—
3namestringoptional · omitted when zero—

Family

unknown fields grant

idfieldtypepresencenamed elsewhere
1familystringrequired—
2nameslist<Alias>required—
3held_inlist<string>optional · omitted when zero—
4family_sourcestringoptional · omitted when zero—
5componentslist<Component>optional · omitted when zero—

ModelsSnapshot

unknown fields grant

idfieldtypepresencenamed elsewhere
1observationObservationrequired—
2modelslist<Family>required—

HostState

unknown fields grant

idfieldtypepresencenamed elsewhere
1hoststringrequired—
2basestringrequired—
3upboolrequired—
4whystringrequired—
5installedi64required—
6residentlist<string>required—
7servableboolrequired—
8hostedbooloptional · omitted when zero—
9wirestringoptional · omitted when zero—
10credentialstringoptional · omitted when zero—
11declared_bystringoptional · omitted when zero—
12profileslist<string>optional · omitted when zero—
13domainstringoptional · omitted when zero—
14availability_causeAvailabilityCauseoptional · omitted when absent—

Ask

unknown fields grant

idfieldtypepresencenamed elsewhere
1attimestamprequired—
2callerstringrequired—
3userstringrequired—
4modelstringrequired—
5familystringrequired—
6verdictstringrequired—
7hoststringrequired—

HostsSnapshot

unknown fields grant

idfieldtypepresencenamed elsewhere
1observationObservationrequired—
2hostslist<HostState>required—
3doubledlist<string>required—
4askedlist<Ask>required—

Decision

unknown fields grant

idfieldtypepresencenamed elsewhere
1askedstringrequired—
2familystringrequired—
3verdictstringrequired—
4hoststringrequired—
5modelstringrequired—
6endpointstringrequired—
7installed_onlist<string>required—
8authorisedHostAllowanceoptional · omitted when absent—
9withheldlist<string>required—
10loadsi64required—
11whystringrequired—

PickResult

unknown fields grant

idfieldtypepresencenamed elsewhere
1observationObservationrequired—
2decisionDecisionrequired—

OfferRequest

unknown fields refuse

idfieldtypepresencenamed elsewhere
1profilestringrequired—
2placementPlacementrequired—
3reservei64required—
4freshboolrequired—

Offer

unknown fields grant

idfieldtypepresencenamed elsewhere
1familystringrequired—
2nameslist<string>required—
3serverslist<string>required—
4contexti64required—
5context_sourceContextSourcerequired—
6inputi64required—
7unknownlist<string>optional · omitted when zero—

OfferSnapshot

unknown fields grant

idfieldtypepresencenamed elsewhere
1observationObservationrequired—
2offerslist<Offer>required—
3outcomeOfferOutcomerequired—

Enumerations [DEF-T5]

Enum fields carry JSON strings containing exact member wire spellings, never numeric IDs. Unknown names are preserved with grant and refused as bad_enum with refuse on read and write. Optional absent fields preserve presence separately from an empty string.

An enumeration is a closed vocabulary of wire names, and each one says on its own what a reader does with a member it has never heard of [DEF-A5].

AvailabilityCause

a member this reader does not know is grant

idmemberwire
1transport_unavailabletransport_unavailable
2credentialcredential
3rightsrights
4configurationconfiguration
5malformedmalformed
6unknownunknown
7otherother

Placement

a member this reader does not know is refuse

idmemberwire
1locallocal
2hostedhosted
3anyany

ContextSource

a member this reader does not know is grant

idmemberwire
1effectiveeffective
2maximummaximum
3defaultdefault
4unknownunknown
5nonenone

OfferOutcome

a member this reader does not know is refuse

idmemberwire
1offeredoffered
2invalidinvalid
3unavailableunavailable
4forbiddenforbidden
5not_permittednot_permitted

Constants [DEF-A6]

nametypevalue
profileslist<string>chat, embed, transcription, speech, image
verdictslist<string>resident, would-load, hosted, unservable, not-here, unparseable, unauthorised, no-host
wire_kindslist<string>openai-compatible, anthropic-messages, deepgram-prerecorded, elevenlabs-stream, stability-v2beta, fal-queue, replicate-predictions, openai-realtime, oa-remote@1
credential_consumerslist<string>abstraction.router/router@1
router_error_codeslist<string>internal, invalid_request, caller_refused, unknown_operation, unavailable, forbidden

Refusal words [DEF-R1]

orderwordstage
1malformedgrammar
2bad_stringgrammar
3number_spellinggrammar
4wrong_typegrammar
5bad_timestampgrammar
6depth_exceededgrammar
7duplicate_keygrammar
8duplicate_fieldstructure
9unknown_fieldstructure
10missing_fieldstructure
11bad_enumstructure
12trailing_bytesdocument