cmind/modelmanager/v1/model_capabilities.proto
Package: cmind.modelmanager.v1
Enums
ModelType
ModelType is the API surface / task family a model serves — the value clients filter on via GET /v1/models?type=. Exactly one applies; it picks the endpoint the model is invoked through (chat → /v1/chat/completions, embedding → /v1/embeddings, rerank → /v1/rerank, transcription → /v1/audio/transcriptions, image_generation → /v1/images/generations). type describes the API surface, NOT every capability: a vision-capable LLM is still CHAT, with image support expressed via input_modalities. UNSPECIFIED is treated as CHAT by consumers for backward compatibility with models created before this field existed. OCR and guardrail are exceptions to the endpoint rule. OCR models use /v1/chat/completions for document extraction, while guardrail models use the Responses-compatible path to evaluate model output. Their distinct types keep role-specific models out of chat listings (the bare /v1/models filter defaults to type=chat) and identify them for their intended consumers.
| Value | Number | Description |
|---|---|---|
MODEL_TYPE_UNSPECIFIED | 0 | |
MODEL_TYPE_CHAT | 1 | |
MODEL_TYPE_EMBEDDING | 2 | |
MODEL_TYPE_RERANK | 3 | |
MODEL_TYPE_TRANSCRIPTION | 4 | |
MODEL_TYPE_IMAGE_GENERATION | 5 | |
MODEL_TYPE_OCR | 6 | |
MODEL_TYPE_GUARDRAIL | 7 |
Modality
Modality is a data shape a model consumes or produces. The same value serves both input_modalities and output_modalities; direction is carried by the field, not the value (EMBEDDING is only meaningful as an output).
| Value | Number | Description |
|---|---|---|
MODALITY_UNSPECIFIED | 0 | |
MODALITY_TEXT | 1 | |
MODALITY_IMAGE | 2 | |
MODALITY_AUDIO | 3 | |
MODALITY_VIDEO | 4 | |
MODALITY_EMBEDDING | 5 |
Messages
ModelCapabilities
ModelCapabilities describes what a model can do, across three independent axes that GET /v1/models filters on (combined with AND): the task type, the input modalities it accepts, and the output modalities it produces. They are separate concepts rather than one flat list so that "exactly one task" stays a structural guarantee and image-in stays distinguishable from image-out.
| Field | Type | Number | Description |
|---|---|---|---|
type | ModelType | 1 | type is the API surface / task family. UNSPECIFIED is treated as CHAT by consumers for backward compatibility. |
inputModalities | repeated Modality | 2 | input_modalities are the data shapes the model accepts as input. When empty, consumers assume [TEXT]. |
outputModalities | repeated Modality | 3 | output_modalities are the data shapes the model produces. When empty, consumers may derive a default from type (e.g. CHAT → [TEXT]). |