You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I searched open issues and this has not already been proposed.
I searched discussions and this is not already being debated there.
This is a concrete, actionable proposal - not a vague feature request.
Area
API / Backend
Problem or Motivation
Odysseus now has the canonical capability foundation merged in #2739, but provider coverage, runtime evidence, durable storage, API/UI exposure, and routing remain separate incremental slices. Endpoint configuration can say an endpoint is generally llm or image, and provider model list responses can expose model IDs, but downstream consumers still need normalized evidence for what a specific served model can read, produce, support, or allocate at runtime.
Without those follow-up layers, several workflows remain fragile:
Generic OpenAI-compatible /v1/models responses often prove availability only, not capability.
Model names and IDs are tempting to parse, but they are not reliable capability evidence.
Local servers and hosted providers expose different model-list shapes, and local backend APIs can differ across installed versions.
Chat, vision, embeddings, image generation, audio, tools, reasoning, context limits, and deterministic controls are currently spread across endpoint config, provider-specific behavior, frontend catalogs, and heuristics.
Future UI badges or routing decisions need to ask capability questions instead of relying on provider/model name guesses.
The goal remains incremental: extend the merged foundation with conservative provider and runtime evidence, then build storage, API/UI, and routing behavior on those explicit layers.
Proposed Solution
Use this issue as the parent tracker for the Model Capability Metadata roadmap.
The core direction is:
extend the canonical capability/control vocabulary for model family, task, modalities, limits, deterministic controls, runtime allocation, source, confidence, and endpoint-scoped model identity;
map explicit provider payload shape through reader modules, not model names;
shape-driven provider readers for the tested bootstrap set: LM Studio, llama.cpp, Google AI Studio, OpenRouter, OpenAI, and Ollama;
focused unit tests for source/confidence behavior and no-name-inference behavior;
Google native catalog probing with pagination and no keyed curated fallback.
That foundation slice excludes:
model-picker UI changes;
/api/models capability response changes;
standalone probe tooling;
durable probe result storage;
routing by capability;
claims of complete capability metadata for unvalidated providers.
Acceptance Criteria
Bare model IDs do not produce authoritative capabilities.
OpenAI official model-list payloads normalize to identity-only, unknown capability records.
OpenRouter records derive capabilities from explicit catalog shape.
Google AI Studio records derive only from explicit native model fields and do not infer image/video/audio from names.
Ollama /api/tags remains inventory-only, while /api/show.capabilities drives claimed capability records.
llama.cpp does not treat owned_by=llamacpp as capability evidence.
Versioned local backend readers prefer latest native metadata, parse tested common legacy shapes, and fall back to inventory-only when no capability fields are available.
Google endpoint probing uses native paginated /v1beta/models.
Keyed Google catalog failures do not fall back to curated local model lists.
Focused tests cover schema normalization, reader behavior, endpoint-scoped stable IDs, and Google catalog probing behavior.
The issue/PR language makes clear that this is bootstrap infrastructure, not complete provider coverage from day one.
Recommended Next Issues
Foundation:
feat(models): define capability schema and readers - #4145 / #2739
Prerequisites
Area
API / Backend
Problem or Motivation
Odysseus now has the canonical capability foundation merged in #2739, but provider coverage, runtime evidence, durable storage, API/UI exposure, and routing remain separate incremental slices. Endpoint configuration can say an endpoint is generally
llmorimage, and provider model list responses can expose model IDs, but downstream consumers still need normalized evidence for what a specific served model can read, produce, support, or allocate at runtime.Without those follow-up layers, several workflows remain fragile:
/v1/modelsresponses often prove availability only, not capability.The goal remains incremental: extend the merged foundation with conservative provider and runtime evidence, then build storage, API/UI, and routing behavior on those explicit layers.
Proposed Solution
Use this issue as the parent tracker for the Model Capability Metadata roadmap.
The core direction is:
Roadmap
Current status:
/api/modelsModelRequirementand evidence levelCurrent Next Step
Review the focused provider/runtime stack in dependency order:
/api/psruntime state, without performing network I/O or treating the value as a catalog limit.src/model_context.pyand its tests.#4146 / #3031 remains an independent reasoning-control follow-up. #4147 remains the separate durable evidence-storage slice.
Scope
In scope:
Non-goals
Working Rules
dev.Foundation PR Scope
The merged foundation PR #2739 includes:
That foundation slice excludes:
/api/modelscapability response changes;Acceptance Criteria
/api/tagsremains inventory-only, while/api/show.capabilitiesdrives claimed capability records.owned_by=llamacppas capability evidence./v1beta/models.Recommended Next Issues
Foundation:
feat(models): define capability schema and readers- #4145 / #2739Provider-reader follow-up:
models: expand native capability readers with conservative fallback- #5575 / #5576Runtime evidence adapter:
models: normalize loaded runtime context allocation evidence- #5628 / #5630Runtime consumer:
fix(context): use Ollama loaded runtime allocation- #5193 / #5631Durable storage:
models: add durable capability assertion and probe-result storage- #4147Independent reasoning-control follow-up:
reasoning: align request-side reasoning control with model capabilities- #4146 / #3031Related Runtime Consumer
/api/psadapter after feat(models): expand provider-native capability readers #5576.src/model_context.py.num_ctx, and loaded runtime allocation remain distinct facts with different lifetimes.Are you willing to implement this?
Yes - I can open focused PRs for the remaining roadmap slices.