Skip to content

models: model capability metadata roadmap tracker #2737

Description

@RaresKeY

Prerequisites

  • 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;
  • keep provider-reported claims, registry-derived facts, admin overrides, and probe-verified behavior distinct;
  • preserve inventory even when capability is unknown;
  • expose and route on normalized evidence only after the schema and storage model are stable.

Roadmap

Current status:

Order Issue / PR Purpose Status
1 #4145 / #2739 Bootstrap canonical capability schema and shape-driven provider readers Complete / merged
2 #4146 / #3031 Prototype request-side reasoning control using the capability/control vocabulary Draft / rebase on #2739
3 #5575 / #5576 Expand native provider capability readers with conservative fallback Open / review
4 #5628 / #5630 Normalize loaded runtime context allocation into a provider evidence shape Draft / after #5576
5 #5193 / #5631 Consume Ollama loaded allocation in runtime prompt budgeting Draft / after #5630
6 #4147 Add durable capability assertion and probe-result storage Later
7 TBD Add admin/manual smoke probes for tools, JSON/schema, vision, image, audio, and determinism Later
8 TBD Expose normalized capability records through /api/models Later
9 TBD Add model-picker capability indicators with evidence levels Later
10 TBD Add routing by explicit ModelRequirement and evidence level Later
11 TBD Add registry/admin override layering Later

Current Next Step

Review the focused provider/runtime stack in dependency order:

  1. models: expand native capability readers with conservative fallback #5575 / feat(models): expand provider-native capability readers #5576 expands provider-native catalog readers on the merged feat(models): define capability schema and readers #2739 foundation.
  2. models: normalize loaded runtime context allocation evidence #5628 / feat(models): normalize runtime context allocation evidence #5630 dogfoods that adapter approach for already-fetched Ollama /api/ps runtime state, without performing network I/O or treating the value as a catalog limit.
  3. Static context-window table overrides the endpoint's actual serving context — silent truncation in long agent sessions #5193 / fix(context): use Ollama loaded runtime allocation #5631 asks eligible Ollama endpoints for the loaded allocation and keeps the unique consumer diff limited to src/model_context.py and its tests.

#4146 / #3031 remains an independent reasoning-control follow-up. #4147 remains the separate durable evidence-storage slice.

Scope

In scope:

  • canonical model capability metadata;
  • endpoint-scoped model identity;
  • provider-reported capability assertions;
  • future verified probe results;
  • deterministic-control metadata;
  • shape-driven provider readers;
  • versioned local backend metadata compatibility;
  • conservative unknown-capability handling;
  • capability evidence exposure through backend APIs;
  • later UI display of evidence levels;
  • later routing by explicit requirements.

Non-goals

  • No model-name or prefix inference as authoritative capability evidence.
  • No claim of complete provider coverage from the first PR.
  • No model-picker UI changes in the bootstrap schema PR.
  • No routing by capability until the evidence model is stable.
  • No automatic paid or GPU-expensive probes.
  • No sending provider-specific reasoning/tool/control fields to generic providers.
  • No mixing provider-reader expansion with UI/routing changes unless a later issue explicitly scopes that.

Working Rules

  • One slice per PR.
  • Target dev.
  • Keep provider readers shape-driven and test-backed.
  • Preserve inventory: unknown capability should not hide a provider-reported model.
  • Keep provider-reported, registry-derived, admin override, and probe-verified evidence distinct.
  • Prefer unknown over wrong.
  • Add provider support only after inspecting real API shape and adding tests.
  • Keep UI badges as display hints, not routing truth.
  • Use verified evidence for higher-risk routing decisions.
  • Keep unsupported provider-native controls from leaking into generic request paths.

Foundation PR Scope

The merged foundation PR #2739 includes:

  • canonical schema and query helpers;
  • 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

Provider-reader follow-up:

models: expand native capability readers with conservative fallback - #5575 / #5576

Runtime evidence adapter:

models: normalize loaded runtime context allocation evidence - #5628 / #5630

Runtime consumer:

fix(context): use Ollama loaded runtime allocation - #5193 / #5631

Durable storage:

models: add durable capability assertion and probe-result storage - #4147

Independent reasoning-control follow-up:

reasoning: align request-side reasoning control with model capabilities - #4146 / #3031

Related Runtime Consumer

Are you willing to implement this?

Yes - I can open focused PRs for the remaining roadmap slices.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestproviderModel/inference provider integrationsready for reviewDescription complete — ready for maintainer review

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions