Summary
The interactive /model picker shows providers with total_models > 50, but only loads the first 50 model IDs into the selectable list. As a result, users cannot scroll/page to models after the first 50 even though the picker displays the larger total count.
Repro
- Configure a provider with more than 50 available models. In my current install this is Nous Portal.
- Run Hermes CLI.
- Enter
/model.
- Select the provider.
- Try to navigate past the first 50 models.
Expected
All available models should be reachable from the interactive picker, either by scrolling through the full loaded list or by explicit pagination/search.
Actual
Only the first 50 models are selectable. The provider row may show the real total, but the model selection stage only has the first 50.
In my current install, Hermes reports:
nous: shown=50 total=247 current=False source=hermes
So the inventory knows there are 247 models, but the picker only receives 50.
Code pointers
The CLI picker hard-caps the payload here:
# cli.py
providers = build_models_payload(ctx, max_models=50)["providers"]
build_models_payload() forwards that to list_authenticated_providers():
# hermes_cli/inventory.py
rows = list_authenticated_providers(..., max_models=max_models)
Then list_authenticated_providers() slices the provider model list:
# hermes_cli/model_switch.py
total = len(model_ids)
top = model_ids[:max_models]
The picker viewport/scrolling code appears to work, but it can only scroll through the already-truncated model_list.
Related call sites with the same cap:
cli.py — CLI /model picker (max_models=50)
gateway/run.py — gateway model picker payload (max_models=50)
tui_gateway/server.py — TUI model options/provider rows (max_models=50)
hermes_cli/web_server.py — dashboard/API model options (max_models=50)
Environment checked
Current local install is clean and matches upstream origin/main:
HEAD: 6a72af044c44c9a05137bc448bc65ecf0ace5a89
branch: main
remote: git@github.com:NousResearch/hermes-agent.git
status: ## main...origin/main
No local diff in the relevant files.
Possible fixes
For interactive pickers, either:
- Load all models by passing a non-truncating value, e.g. support
max_models=None and skip slicing when it is None; or
- Implement actual provider-model pagination/search so users can access models beyond the first 50.
A quick local mitigation would be to raise the CLI picker cap, but the cleaner fix is to separate display-preview limits from selectable model inventory.
Summary
The interactive
/modelpicker shows providers withtotal_models > 50, but only loads the first 50 model IDs into the selectable list. As a result, users cannot scroll/page to models after the first 50 even though the picker displays the larger total count.Repro
/model.Expected
All available models should be reachable from the interactive picker, either by scrolling through the full loaded list or by explicit pagination/search.
Actual
Only the first 50 models are selectable. The provider row may show the real total, but the model selection stage only has the first 50.
In my current install, Hermes reports:
So the inventory knows there are 247 models, but the picker only receives 50.
Code pointers
The CLI picker hard-caps the payload here:
build_models_payload()forwards that tolist_authenticated_providers():Then
list_authenticated_providers()slices the provider model list:The picker viewport/scrolling code appears to work, but it can only scroll through the already-truncated
model_list.Related call sites with the same cap:
cli.py— CLI/modelpicker (max_models=50)gateway/run.py— gateway model picker payload (max_models=50)tui_gateway/server.py— TUI model options/provider rows (max_models=50)hermes_cli/web_server.py— dashboard/API model options (max_models=50)Environment checked
Current local install is clean and matches upstream
origin/main:No local diff in the relevant files.
Possible fixes
For interactive pickers, either:
max_models=Noneand skip slicing when it isNone; orA quick local mitigation would be to raise the CLI picker cap, but the cleaner fix is to separate display-preview limits from selectable model inventory.