Skip to content

InferencePoolMember

A resource manifest applied to an Airdress operator.

Canonical schema: https://schemas.airdress.co/operator/InferencePoolMember/v1.json

Add this modeline to the top of your manifest to get validation and completion in any editor with yaml-language-server support (VS Code with the YAML extension, for example):

# yaml-language-server: $schema=https://schemas.airdress.co/operator/InferencePoolMember/v1.json

Values marked PLACEHOLDER-* must be replaced with your own — they show where a required value goes, not what it should be.

# yaml-language-server: $schema=https://schemas.airdress.co/operator/InferencePoolMember/v1.json
apiVersion: airdress.co/v1alpha1
kind: InferencePoolMember
metadata:
name: PLACEHOLDER-name
spec:
backend: PLACEHOLDER-backend
models:
- name: PLACEHOLDER-name
FieldTypeRequiredDefaultDescription
apiVersionconst "airdress.co/v1alpha1"yes
kindconst "InferencePoolMember"yes
metadataobjectyesThe metadata block of a manifest.
specobjectyesspec block of an InferencePoolMember manifest.
FieldTypeRequiredDefaultDescription
labelsobjectno
namestringyes
namespacestring | nullnoAccepted for k8s familiarity but ignored — every operator manages one airdress’s resources (one namespace).
resourceVersionstring | nullnoOptimistic concurrency token. When present, apply is rejected with 409 if the stored row’s resource_version doesn’t match. When absent, last-writer-wins.
FieldTypeRequiredDefaultDescription
authSecretRefstringno""Secret-vault key holding the upstream bearer token. The operator resolves the reference on each reconcile; the manifest only carries the reference name, never the secret value. Omitted for echo, which has no upstream to authenticate to.
backendstringyesBackend identifier. “vllm-openai” (an OpenAI-API upstream) or “echo” (no upstream; answers with the text it was sent). Unknown values are rejected at apply time.
caFileRefstring | nullnoOptional secret-vault key for a private-CA bundle. When set, the operator adds the bundle to the HTTPS client’s root store before connecting to url. Use this for Tailscale-style private CAs and LE staging.
computeOperatorRefstring | nullnoName of the enrolled compute-role operator the homing operator should dispatch through. Required when transport is operator-signal; rejected when transport is http-direct.
drainingbooleannofalseWhen true, the router stops sending new traffic. In-flight requests still complete. Toggling to false re-admits the member after a successful probe. Defaults to false.
modelsarray of objectyesModels this member advertises. The reconciler probes GET /v1/models per tick; declared names not seen in the upstream response flip ModelsAdvertised=False.
traitsobject | nullnoBackend capability declarations. Omitting this block is equivalent to declaring every trait at its default.
transport"http-direct" | "operator-signal" | nullnoTransport discriminator. Omitting the field defaults to http-direct, so existing manifests round trip without changes.
urlstringno""Upstream URL the operator probes and forwards inference to. HTTPS in production; http:// accepted for LAN or private-network development. Required for vllm-openai over http-direct; omitted for echo and for operator-signal members, which have nothing to dial.
FieldTypeRequiredDefaultDescription
contextWindowinteger | nullnoOptional context-window hint. Operator-internal callers may use this to pre-reject oversized requests before forwarding.
namestringyesModel identifier the upstream returns from GET /v1/models.
FieldTypeRequiredDefaultDescription
supportsMultiConversationbooleannotrueWhether this backend can serve more than one concurrent, independent conversation. Every OpenAI-compatible chat-completions backend is stateless per request and trivially satisfies this, as does echo; default true. Set false for a backend that is genuinely session-bound.