hermes - 💡(How to fix) Fix Feature request: Type-to-search model picker for Telegram

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Root Cause

  • Nvidia has 136 models (confirmed via live API). Even with a live-fetch fix, that's 28 pages of keyboard navigation at 5 per page.
  • OpenRouter has hundreds. Copilot's catalog is tier-dependent and growing.
  • The curated list pattern exists because the picker UX can't handle large lists — it's a UX workaround that became policy.

Fix Action

Fix / Workaround

  • Nvidia has 136 models (confirmed via live API). Even with a live-fetch fix, that's 28 pages of keyboard navigation at 5 per page.
  • OpenRouter has hundreds. Copilot's catalog is tier-dependent and growing.
  • The curated list pattern exists because the picker UX can't handle large lists — it's a UX workaround that became policy.
RAW_BUFFERClick to expand / collapse

Feature Description

Replace the paginated inline-keyboard model picker in Telegram with a type-to-search picker. Instead of scrolling through pages of model names, the user types part of a model name and gets filtered results.

Motivation

The /model picker currently uses a paginated inline keyboard with max_models per page. This breaks down for providers with large catalogs:

  • Nvidia has 136 models (confirmed via live API). Even with a live-fetch fix, that's 28 pages of keyboard navigation at 5 per page.
  • OpenRouter has hundreds. Copilot's catalog is tier-dependent and growing.
  • The curated list pattern exists because the picker UX can't handle large lists — it's a UX workaround that became policy.

A search-based picker eliminates the need for curation. Show everything, let the user filter.

Proposed Solution

Flow:

  1. /model → "Reply with a model name to search"
  2. User types nemeon
  3. Hermes fuzzy-matches against the full provider catalog (via live fetch_models())
  4. Returns top N matching results as inline keyboard buttons
  5. User taps one → model switch confirmed

Technical approach (Option A — stateful text input):

After /model, the gateway registers a temporary search state per chat. The next text message is captured as the query, fuzzy-matched, and results are returned as inline keyboard. State auto-expires after 60 seconds or on successful selection.

Technical approach (Option B — Telegram inline queries):

Uses Telegram's @botname query... inline query pattern. Type-as-you-search with real-time results. Requires gateway-level support for inline query handling via InlineQueryHandler.

Existing infrastructure:

  • Fuzzy matching exists in models.py:resolve_model_name() via difflib.get_close_matches
  • The ProviderProfile.fetch_models() call already returns full catalogs (tested: 136 models from Nvidia)

Alternatives Considered

  1. Status quo (curated list) — manual maintenance forever, users miss newly added models. Already known to be fragile (#16699, #22990).
  2. Live fetch + bigger pages — still terrible UX for 136+ models. Pagination doesn't scale.
  3. Provider-level filtering first — pick provider, then pick model. Helps but doesn't solve the core problem for big single-provider catalogs.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

hermes - 💡(How to fix) Fix Feature request: Type-to-search model picker for Telegram