Problem
Currently Hermes Agent uses a single global model configuration (model.provider and model.default in config.yaml). All messaging platforms share the same model, with only per-session overrides via /model <name>.
Use case: A user wants Feishu to use mimo-v2.5 on a custom provider, while keeping CLI on MiniMax-M2.7.
Current Workaround
Using /model <name> --provider <provider> in a session sets a per-session override (stored in _session_model_overrides), but it does not persist and does not allow platform-wide defaults.
Desired Behavior
Allow per-platform model configuration in config.yaml:
platforms:
feishu:
model: mimo-v2.5
provider: Token-plan-cn.xiaomimimo.com
cli:
model: MiniMax-M2.7
provider: minimax-cn
Technical Notes
GatewayConfig (gateway/config.py) has PlatformConfig per platform but lacks model/provider fields
_session_model_overrides in gateway/run.py provides per-session switching, not per-platform
- Model switching pipeline:
hermes_cli/model_switch.py (switch_model()) handles resolution
- Session override system already in place at
gateway/run.py:1050-1122 (_resolve_session_agent_runtime)
Problem
Currently Hermes Agent uses a single global model configuration (
model.providerandmodel.defaultinconfig.yaml). All messaging platforms share the same model, with only per-session overrides via/model <name>.Use case: A user wants Feishu to use
mimo-v2.5on a custom provider, while keeping CLI onMiniMax-M2.7.Current Workaround
Using
/model <name> --provider <provider>in a session sets a per-session override (stored in_session_model_overrides), but it does not persist and does not allow platform-wide defaults.Desired Behavior
Allow per-platform model configuration in
config.yaml:Technical Notes
GatewayConfig(gateway/config.py) hasPlatformConfigper platform but lacksmodel/providerfields_session_model_overridesingateway/run.pyprovides per-session switching, not per-platformhermes_cli/model_switch.py(switch_model()) handles resolutiongateway/run.py:1050-1122(_resolve_session_agent_runtime)