hermes - ✅(Solved) Fix Bug: vision_analyze and browser_vision hardcoded to Gemma, ignore auxiliary.vision config [2 pull requests, 1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

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…
GitHub stats
NousResearch/hermes-agent#24842Fetched 2026-05-14 03:51:17
View on GitHub
Comments
1
Participants
2
Timeline
7
Reactions
0
Participants
Timeline (top)
labeled ×4cross-referenced ×2commented ×1

The vision_analyze and browser_vision tools are hardcoded to use google/gemma-4-31b-it:free regardless of the auxiliary.vision configuration in config.yaml.

Error Message

The error message always shows: 5. Observe the error still references Gemma

Root Cause

The vision_analyze and browser_vision tools are hardcoded to use google/gemma-4-31b-it:free regardless of the auxiliary.vision configuration in config.yaml.

Fix Action

Fixed

PR fix notes

PR #24872: fix: read auxiliary.vision.model from config.yaml in vision/browser tools

Description (problem / solution / changelog)

Problem

vision_analyze, browser_vision, and video_analyze tools only read the vision model from the AUXILIARY_VISION_MODEL environment variable, ignoring the auxiliary.vision.model setting in config.yaml.

When users configure a custom vision model via config.yaml:

auxiliary:
  vision:
    model: nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free
    api_key: sk-...

The tools still use the auto-detected default (often google/gemma-4-31b-it:free from Nous Portal free tier), making it impossible to work around rate limits by switching to a different vision model.

Fix

Each tool now reads from config.yaml as fallback when the env var is not set.

Resolution order: env var (AUXILIARY_VISION_MODEL) > auxiliary.vision.model in config.yaml > None (lets auxiliary router auto-detect)

Files changed:

  • tools/browser_tool.py: _get_vision_model() now reads auxiliary.vision.model from config
  • tools/vision_tools.py: _handle_vision_analyze and _handle_video_analyze now read auxiliary.vision.model / auxiliary.video.model from config

Before vs After

ScenarioBeforeAfter
auxiliary.vision.model set in config, no env varIgnored (auto-detect picks Gemma)Respected ✓
AUXILIARY_VISION_MODEL env var setUsed ✓Used ✓ (still takes precedence)
Neither setAuto-detectAuto-detect (unchanged)

Tests

  • py_compile passes on both modified files
  • 189 vision-related tests pass (0 regressions)
  • Pre-existing test failures (missing optional deps) unchanged

Fixes #24842

Changed files

  • tools/browser_tool.py (modified, +21/-2)
  • tools/vision_tools.py (modified, +27/-0)

PR #24875: fix(vision): respect auxiliary vision routing

Description (problem / solution / changelog)

Summary

  • stop vision_analyze from passing stale AUXILIARY_VISION_MODEL values as explicit model overrides
  • let browser_vision rely on call_llm(task="vision") so auxiliary.vision provider/model/base_url/api_key resolve together
  • update regression tests around stale env bridges and browser screenshot vision routing

Fixes #24842

Tests

  • scripts/run_tests.sh tests/tools/test_vision_tools.py tests/tools/test_browser_console.py tests/tools/test_vision_native_fast_path.py tests/agent/test_vision_resolved_args.py tests/agent/test_auxiliary_config_bridge.py
  • .venv/bin/ruff check tools/vision_tools.py tools/browser_tool.py tests/tools/test_vision_tools.py tests/tools/test_browser_console.py tests/agent/test_auxiliary_config_bridge.py

Changed files

  • tests/agent/test_auxiliary_config_bridge.py (modified, +5/-8)
  • tests/tools/test_browser_console.py (modified, +23/-4)
  • tests/tools/test_vision_tools.py (modified, +6/-9)
  • tools/browser_tool.py (modified, +5/-12)
  • tools/vision_tools.py (modified, +4/-4)

Code Example

google/gemma-4-31b-it:free is temporarily rate-limited upstream
RAW_BUFFERClick to expand / collapse

Description

The vision_analyze and browser_vision tools are hardcoded to use google/gemma-4-31b-it:free regardless of the auxiliary.vision configuration in config.yaml.

Expected Behavior

When configuring a different vision model in auxiliary.vision.model (e.g., nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free or anthropic/claude-sonnet-4), the vision tools should respect this setting.

Actual Behavior

Both vision_analyze and browser_vision always use Gemma 4 31B, even after:

  1. Changing auxiliary.vision.model to a different model
  2. Changing auxiliary.vision.api_key to a different API key
  3. Restarting the gateway with hermes gateway restart

The error message always shows:

google/gemma-4-31b-it:free is temporarily rate-limited upstream

Even when the configured model is not Gemma.

Steps to Reproduce

  1. Set auxiliary.vision.model to any non-Gemma model (e.g., nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free)
  2. Set auxiliary.vision.api_key to a valid API key
  3. Run hermes gateway restart
  4. Call vision_analyze with any image
  5. Observe the error still references Gemma

Impact

When Gemma is rate-limited (HTTP 429), all vision capabilities are broken even when alternative models are configured. Users cannot work around Gemma rate limits by switching to a different vision model.

Environment

  • Hermes Agent version: latest (installed via git)
  • Platform: WSL2 Ubuntu
  • Provider: OpenRouter
  • Config: auxiliary.vision.model set to nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free

Suggested Fix

Make vision_analyze and browser_vision read the model and API key from auxiliary.vision configuration instead of using a hardcoded value.

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 - ✅(Solved) Fix Bug: vision_analyze and browser_vision hardcoded to Gemma, ignore auxiliary.vision config [2 pull requests, 1 comments, 2 participants]