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 is the exception to the endpoint rule: OCR models are invoked through /v1/chat/completions like CHAT, but are transcription engines tuned for document extraction, not conversation. The distinct type keeps them out of chat model listings (the bare /v1/models filter defaults to type=chat) and marks them as the intended fill for the RAG vision/OCR role.
| 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 |
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]). |