Client or integration
Other
Provider or upstream service
Hermes Agent client export (ocx export --client hermes)
OpenCodex version
2.38.0
Endpoint or capability
Client integration & configuration export (/api/export / ocx export --client hermes)
Current behaviour
When exporting configuration for Hermes Agent via ocx export --client hermes (or Web UI Integration), the models list is serialized as a flat array of model id strings:
providers:
opencodex:
api: "http://127.0.0.1:10100/v1"
api_key: "${OPENCODEX_HERMES_API_KEY}"
api_mode: chat_completions
discover_models: false
models:
- google-antigravity/gemini-3.7-flash
- opencode-go/gpt-5.6-luna
Because opencodex is a custom local provider (not found in Hermes's default models.dev remote registry), Hermes's dynamic router (agent.image_routing._lookup_supports_vision) falls back to None and assumes text-only capability when given a flat list without explicit flags. Consequently, native multimodal image/video requests to vision-capable models (e.g. Gemini 3.7 Flash, GPT-5.6 Luna, Grok 4.6, MiMo v2.5) are intercepted or treated as text-only.
Expected behaviour
ocx export --client hermes should serialize models as a dictionary mapping with capability metadata (e.g. supports_vision: true, supports_video: true) for multimodal models based on OpenCodex's existing catalog modality metadata (modelInputModalities / visionEligible):
providers:
opencodex:
api: "http://127.0.0.1:10100/v1"
api_key: "${OPENCODEX_HERMES_API_KEY}"
api_mode: chat_completions
discover_models: false
models:
google-antigravity/gemini-3.7-flash:
supports_vision: true
supports_video: true
opencode-go/gpt-5.6-luna:
supports_vision: true
opencode-go/grok-4.6:
supports_vision: true
opencode-go/deepseek-v4-flash:
supports_vision: false
Minimal redacted request or reproduction
- Run
ocx export --client hermes
- Inspect the generated
providers.opencodex.models YAML section.
- Paste into
~/.hermes/config.yaml and observe that Hermes treats all custom models as supports_vision: None unless explicitly overridden as a dictionary.
Actual response or error
Flat string array output without per-model capability declarations.
Upstream documentation
Hermes Agent provider capability configuration: https://hermes-agent.nousresearch.com/docs
Suggested mapping or implementation notes
In the Hermes export serializer (where client YAML is generated), inspect the catalog row for each model:
- If model has image/vision input capability, emit
supports_vision: true (and supports_video: true for video-capable models like Gemini).
- Otherwise emit
supports_vision: false or omit the capability mapping.
Additional context and attachments
Both string list and dictionary mapping formats are natively supported by Hermes, but dictionary mapping is required for custom local endpoints to advertise vision capability without falling back to text-only mode.
Checks
Client or integration
Other
Provider or upstream service
Hermes Agent client export (
ocx export --client hermes)OpenCodex version
2.38.0
Endpoint or capability
Client integration & configuration export (
/api/export/ocx export --client hermes)Current behaviour
When exporting configuration for Hermes Agent via
ocx export --client hermes(or Web UI Integration), themodelslist is serialized as a flat array of model id strings:Because
opencodexis a custom local provider (not found in Hermes's defaultmodels.devremote registry), Hermes's dynamic router (agent.image_routing._lookup_supports_vision) falls back toNoneand assumes text-only capability when given a flat list without explicit flags. Consequently, native multimodal image/video requests to vision-capable models (e.g. Gemini 3.7 Flash, GPT-5.6 Luna, Grok 4.6, MiMo v2.5) are intercepted or treated as text-only.Expected behaviour
ocx export --client hermesshould serializemodelsas a dictionary mapping with capability metadata (e.g.supports_vision: true,supports_video: true) for multimodal models based on OpenCodex's existing catalog modality metadata (modelInputModalities/visionEligible):Minimal redacted request or reproduction
ocx export --client hermesproviders.opencodex.modelsYAML section.~/.hermes/config.yamland observe that Hermes treats all custom models assupports_vision: Noneunless explicitly overridden as a dictionary.Actual response or error
Flat string array output without per-model capability declarations.
Upstream documentation
Hermes Agent provider capability configuration: https://hermes-agent.nousresearch.com/docs
Suggested mapping or implementation notes
In the Hermes export serializer (where client YAML is generated), inspect the catalog row for each model:
supports_vision: true(andsupports_video: truefor video-capable models like Gemini).supports_vision: falseor omit the capability mapping.Additional context and attachments
Both string list and dictionary mapping formats are natively supported by Hermes, but dictionary mapping is required for custom local endpoints to advertise vision capability without falling back to text-only mode.
Checks