hermes - 💡(How to fix) Fix Add named LLM model entities in config and allow skills/cron to reference them [1 participants]

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…
GitHub stats
NousResearch/hermes-agent#12658Fetched 2026-04-20 12:17:32
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
1
Participants

Code Example

models:
  default:
    provider: opencode-go
    model: kimi-k2.5
    context_window: 128000
    temperature: 0.7
    max_output_tokens: 8192
    reasoning_effort: medium
    timeout: 120

  cheap_cron:
    extends: default
    temperature: 0.1
    max_output_tokens: 1024
    reasoning_effort: low
    timeout: 30

---

cron:
  jobs:
    update-service:
      schedule: "*/15 * * * *"
      model_ref: cheap_cron

delegation:
  model_ref: default
RAW_BUFFERClick to expand / collapse

Problem

Hermes currently spreads model configuration across multiple subsystem-specific knobs (model, fallback_model, smart_model_routing.cheap_model, auxiliary.*, delegation). That works for a single default model, but it does not scale well when different jobs need different cost/capability tradeoffs.

Examples:

  • interactive chat should use a strong model
  • simple cron jobs should use a cheap fast model
  • skill generation or complex reasoning may need a different model profile
  • auxiliary workflows like compression, memory flush, or approval may need dedicated settings

Proposal

Add a named model registry to config.yaml so users can define reusable model entities with parameters like:

  • provider
  • model
  • context window
  • temperature
  • max output tokens
  • reasoning effort
  • timeout

Then allow subsystems such as skills, cron jobs, delegation, and auxiliary tasks to reference a model entity by name.

Suggested shape

models:
  default:
    provider: opencode-go
    model: kimi-k2.5
    context_window: 128000
    temperature: 0.7
    max_output_tokens: 8192
    reasoning_effort: medium
    timeout: 120

  cheap_cron:
    extends: default
    temperature: 0.1
    max_output_tokens: 1024
    reasoning_effort: low
    timeout: 30

Example usage

cron:
  jobs:
    update-service:
      schedule: "*/15 * * * *"
      model_ref: cheap_cron

delegation:
  model_ref: default

Benefits

  • cheaper background work
  • clearer intent in config
  • fewer duplicated provider/model blocks
  • easier to tune per workload
  • backward compatible if the current top-level model stays as the default reference

Acceptance criteria

  • users can define named model entities in YAML
  • subsystems can reference model entities by name
  • inheritance/override semantics are documented
  • missing or invalid references fail clearly
  • existing config continues to work without migration

Notes

Hermes already has some adjacent config concepts (smart_model_routing, fallback_model, auxiliary.*), so this could likely be added as a unifying layer rather than a rewrite.

extent analysis

TL;DR

Implement a named model registry in config.yaml to define reusable model entities and allow subsystems to reference them by name.

Guidance

  • Define a models section in config.yaml with named model entities, each containing parameters like provider, model, and context_window.
  • Allow subsystems (e.g., cron, delegation) to reference model entities by name using a model_ref field.
  • Implement inheritance/override semantics for model entities, as shown in the suggested shape example.
  • Ensure that missing or invalid model references fail clearly and provide informative error messages.

Example

models:
  default:
    provider: opencode-go
    model: kimi-k2.5
    context_window: 128000

cron:
  jobs:
    update-service:
      schedule: "*/15 * * * *"
      model_ref: default

Notes

The proposed solution builds upon existing config concepts in Hermes, making it a unifying layer rather than a rewrite. However, careful consideration should be given to the implementation of inheritance/override semantics and error handling for missing or invalid model references.

Recommendation

Apply the proposed workaround by implementing the named model registry and referencing model entities by name in subsystem configurations, as it provides a scalable and flexible solution for managing different model configurations across various workloads.

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