Canonicalize OpenRouter model selection across CLI, Telegram, and Discord#9418
Closed
g-guthrie wants to merge 72 commits into
Closed
Canonicalize OpenRouter model selection across CLI, Telegram, and Discord#9418g-guthrie wants to merge 72 commits into
g-guthrie wants to merge 72 commits into
Conversation
- move CLI and gateway startup onto the shared runtime config loader - centralize env bridging and runtime config normalization in hermes_cli.config - fix get_missing_config_fields() to compare against raw user config - add focused tests for runtime defaults and shared auxiliary env bridging
# Conflicts: # gateway/platforms/matrix.py # hermes_cli/auth.py # hermes_cli/main.py # hermes_cli/models.py # hermes_cli/providers.py # plugins/memory/honcho/__init__.py # trajectory_compressor.py
# Conflicts: # cli.py # hermes_cli/commands.py # hermes_cli/config.py # plugins/memory/honcho/__init__.py # trajectory_compressor.py
# Conflicts: # hermes_cli/config.py # plugins/memory/honcho/__init__.py # trajectory_compressor.py
# Conflicts: # hermes_cli/config.py # plugins/memory/honcho/__init__.py # trajectory_compressor.py
Contributor
Author
|
Closing this draft because the branch history includes the broader anti-bloat integration stack. Reopening this OpenRouter work as a correctly based stacked draft with an atomic diff. |
jankadlecek
added a commit
to jankadlecek/hermes-agent
that referenced
this pull request
May 24, 2026
OpenAI's "Enable device code authorization for Codex" toggle in ChatGPT Settings is broken/missing for many account types since early 2026 (openai/codex NousResearch#9253, NousResearch#9282, NousResearch#9327, NousResearch#9418). Hermes dashboard's KEYS → Codex LOGIN button uses device code internally, so it fails out of the box. Local `codex login` uses PKCE with a localhost callback and is unaffected, so let the operator do that login on their Mac and ship the resulting tokens to the container via a base64 env var. The bootstrap runs once when CODEX_AUTH_JSON_B64 is set AND the Hermes auth store does not yet exist on the volume. It writes both the Codex CLI shared file and the Hermes auth.json with active_provider set to "openai-codex", so Hermes's auto-detect picks Codex without needing any further dashboard interaction. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR canonicalizes OpenRouter model selection across the three interactive picker surfaces:
/model/model/modelInstead of relying on a short hardcoded OpenRouter model list, Hermes now uses one canonical OpenRouter picker backend and groups OpenRouter models by vendor/provider before presenting them to users.
What changed
hermes_cli/openrouter_catalog.pyprovider=openrouterat selection timeWhy
OpenRouter now exposes too many models for a flat picker to be usable.
Previously:
Now:
Scope
This PR is intentionally limited to OpenRouter model selection.
Not included:
Testing
Ran:
venv/bin/python -m pytest tests/cli/test_cli_model_picker.py tests/gateway/test_model_picker_integration.py tests/gateway/test_telegram_approval_buttons.py tests/hermes_cli/test_models.py tests/hermes_cli/test_model_selection.py tests/hermes_cli/test_model_validation.py tests/hermes_cli/test_model_provider_persistence.py tests/hermes_cli/test_opencode_go_in_model_list.py tests/hermes_cli/test_overlay_slug_resolution.py tests/hermes_cli/test_model_switch_custom_providers.py -qResult:
150 passed