Skip to content

feat: capabilities in /v1/models, replacing features - #12

Merged
Marketen merged 2 commits into
mainfrom
feat/publish-model-capabilities
Oct 15, 2026
Merged

Marketen merged 2 commits into
mainfrom
feat/publish-model-capabilities

Conversation

@Marketen

@Marketen Marketen commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Summary

GET /v1/models describes each model's capabilities in one field, capabilities: what the operator states the model accepts, published exactly as stored. The field names follow models.dev:

"capabilities": {
  "modalities": { "input": ["text", "image"], "output": ["text"] },
  "tool_call": true,
  "structured_output": true,
  "reasoning": true,
  "reasoning_options": [{ "type": "effort", "values": ["low", "high", "max"], "default": "high" }]
}
  • Unknown is left out: a missing field means not stated, and a model with nothing stated has no capabilities field.
  • features is removed. What it said is now in capabilities, kind (router) and proof_mode (Tinfoil attested transport).
  • Gateway's model type no longer carries the five capability flags. Nothing in Gateway rejects requests because of capabilities.

Compatibility

  • Clients that read features stop seeing it. The Nexus website moves to capabilities in dappnode/dappnode-nexus#145.
  • Works with any Metering: with #145 the record comes from Metering; with an older Metering it is rebuilt from the flags that Metering still sends.
  • New capability fields are passed through without a Gateway change.

Tests

  • Unit:
    • the record is published unchanged, including a field Gateway doesn't know;
    • an empty record is left out;
    • no features list is published;
    • with older Metering, the record is rebuilt from the flags.
  • End to end: Metering from #145 and this Gateway, on a database migrated to 026. Every model in /v1/models has capabilities and none has features. A model given image input and effort levels in the database shows them unchanged.

🤖 Generated with Claude Code

Marketen and others added 2 commits October 15, 2026 16:32
/v1/models now includes each model's capabilities, the operator's record from
Metering, unchanged: models.dev field names such as modalities (image input),
tool_call, structured_output, reasoning and reasoning_options (effort
levels). A missing field means not stated, and an empty record is not
published. features stays, now derived from capabilities, so existing
clients see the same values.

Gateway's model no longer carries the five capability flags. With a Metering
that does not send capabilities yet, they are rebuilt from the flags it still
sends.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
/v1/models no longer has a features list. What it said is in capabilities
(streaming, tool_call, parallel_tool_calls, structured_output, reasoning),
kind (router) and proof_mode (Tinfoil attested transport).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Marketen Marketen changed the title feat: publish operator-stated model capabilities in /v1/models feat: capabilities in /v1/models, replacing features Oct 15, 2026
@Marketen
Marketen merged commit cffaf37 into main Oct 15, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant