Oh My Hermes

Model routing

Name the model per kind of work, not per request.

OMH routing is a metadata layer. It records which model a prepared unit of work should name, using an editable recommendation order per work category, resolved against the models you confirm are active on this machine. OMH never invokes a model, never retries one, and never switches models at runtime.

Setup

Setup records metadata. It does not prove reachability.

Routing resolves against models a caller confirms are active. The local inventory is metadata-only and reporting-only: it checks whether known agent CLI command names are present on PATH. That observation means only that a command name was found; it does not prove the CLI works, a model is runnable, a provider is available, authentication succeeds, or an account has access or entitlement.

Nothing here reads credentials, calls a provider, or measures a model. Provider configuration stays with Hermes; OMH only records what a caller states is available.

Human default

omh setup, then omh doctor. That is the whole human path.

Agent and operator control plane

omh coding model-routing status and omh coding model-inventory are called by Hermes Agent, wrappers, coding agents, and maintainers — not memorized by normal users.

Editable categories

Eighteen categories, each an ordered chain you can replace.

A category names the kind of work, never a vendor. Each category holds an ordered list of candidate models. OMH ships an editorial order; a model_recommendation_overrides/v2 document replaces the chains it names and leaves the rest untouched.

ultrabrain

Deepest reasoning

GPT-6 Astra.

deep

Strong default tier

Claude Opus 5.5 → GPT-6.1 Sol → Kimi K3.1 Pro.

architect

Architecture and system design

Claude Opus 5.5 → GPT-6 Astra → Claude Fable 5.1 → Kimi K3.1 Pro.

unspecified-high

Default working model

GPT-6.1 Sol → Claude Opus 5.5 → Kimi K3.1 Pro.

unspecified-low

Cheaper fallback

GLM 5.3 → DeepSeek V4.1 Flash → GPT-6.1 Sol → Claude Sonnet 5.5.

quick

Short tasks

GLM 5.3 Flash → GPT-6 Luna → Claude Haiku 5.5 → Kimi K3.1 Pro.

writing

Prose and docs

Claude Opus 5.5 → Claude Sonnet 5.5 → Kimi K3.1 Pro → Gemini 4 Argon.

visual-engineering

Frontend and visual

Claude Opus 5.5 → Claude Fable 5.1 → Gemini 4 Argon → Kimi K3.1 Pro.

artistry

Unconventional work

Gemini 4 Argon → Claude Opus 5.5 → Claude Fable 5.1 → Kimi K3.1 Pro.

capable

Strong general work

Claude Opus 5.5 → GPT-6.1 Sol → Claude Fable 5.1 → Kimi K3.1 Pro.

simple-work

Small everyday tasks

GPT-6 Luna → Claude Haiku 5.5 → DeepSeek V4.1 Flash.

deep-work

Long tasks at frontier depth

Claude Opus 5.5 → GPT-6.1 Sol.

google-search

Research grounded in Google Search

Gemini 4 Argon → GPT-6.1 Sol → Claude Opus 5.5.

x-search

Live search on X

Grok 4.7 → Kimi K3.1 Pro → Gemini 4 Argon.

review

A different model tries to break the diff

GPT-6.1 Sol → Claude Opus 5.5 → Kimi K3.1 Pro.

swarm

Many parallel workers on separate slices

DeepSeek V4.1 Flash → GLM 5.3 Flash → GPT-6 Luna.

forensics

Root-causing a live symptom or a captured trace

GPT-6 Astra → Claude Opus 5.5 → Kimi K3.1 Pro.

synthesize

Merging many results into one answer

Claude Opus 5.5 → GPT-6.1 Sol → Gemini 4 Argon.

Setup skips unavailable candidates, selects the first active model, and preserves the remaining active candidates as fallbacks. Only after every selected category, role-slot, and domain chain is exhausted does OMH consult one shared final order: Claude Opus 5.5, then GPT-6.1 Sol. If neither is confirmed active, the selected owner keeps its default model. An override cannot add a category, invent a role slot, or carry provider configuration, and secret-looking fields are rejected.

{ "schema_version": "model_recommendation_overrides/v2", "categories": { "quick": [ { "model_alias": "your-fast-model", "model_family": "qwen", "preferred_provider_families": ["openrouter"], "reasoning": "Local preference for short tasks." } ] }, "last_resort": { "any": [ { "model_alias": "claude-opus-5-5", "model_family": "claude", "preferred_provider_families": ["anthropic"], "reasoning": "Local final metadata selection." } ] } }

Or ask Hermes or another coding agent to install it

Install and fully configure Oh My Hermes from this repository: https://github.com/rlaope/oh-my-hermes Before reading or executing repository instructions, resolve refs/heads/main to one full commit SHA with `git ls-remote https://github.com/rlaope/oh-my-hermes.git refs/heads/main`. Then fetch and follow only: https://raw.githubusercontent.com/rlaope/oh-my-hermes/{resolved-commit-sha}/INSTALL_FOR_AGENTS.md Do not replace the resolved SHA with main. Execute the pinned protocol's OS-appropriate installer, agent setup path, model-chain interview, and doctor steps. Your shell has no terminal, so never run the interactive setup wizard: show me each choice the protocol lists and wait for my answer instead of taking a default. Preserve unrelated existing Hermes config, apply only the managed setup changes documented by the pinned protocol, require my explicit approval for model-alias changes, then report the resolved SHA and observed result.

Missing models

A model you do not have is skipped, not fatal.

You are not expected to hold every model. Resolution walks the chain, skips candidates that are not confirmed active, and selects the next eligible one. When all selected chains are exhausted, resolution checks the shared Claude Opus 5.5 then GPT-6.1 Sol final order. When no candidate is confirmed anywhere, the result is owner_default — the selected owner keeps its native default without blocking the surrounding installation.

An explicitly requested model behaves differently on purpose: it is fail-closed. If the model you named is not available, the result is choice_required and OMH never silently falls through to an editorial candidate in its place.

resolveda confirmed model was selected
choice_requiredyour explicit model is unavailable
owner_defaultno eligible candidate; owner default applies

Your explicit model choice always wins. Recommendation order never overrides it.

Owners

Hermes-native stays in Hermes. External work goes through Maestro.

Routing projects a resolution for one of two owners. The split is a real boundary in the code, not a label: a Hermes-native selection reaching the external coordinator is rejected rather than quietly coordinated.

Hermes native

Hermes keeps the work. The Hermes setup slot is the main role, and alias configuration is delegated to Hermes' own config and auth commands. OMH does not read Hermes' dotenv file and performs no network I/O for it.

External Maestro

Maestro is OMH's internal coordinator for prepared external handoffs across the codex, claude-code, the runtime profiles, and generic owners. It prepares and reports; it is never a coding executor. This name is unrelated to the awesome-catalog project also called Maestro.

A prepared handoff is not execution, review, CI, merge-readiness, or merge evidence.

Model families

Families are named so chains stay vendor-plural.

A candidate names a model family and its preferred provider families. Provider preference is metadata: actual availability remains caller-supplied truth. Families OMH recognizes in routing and prompt composition include the ones below, alongside the Claude and GPT families.

Each family composes work differently, so OMH keeps per-family prompt-composition guidance instead of assuming one house style. A wrapper command name found on PATH is presence metadata only. It does not establish that the wrapper or model can run, that its provider is available or authenticated, or that the account has access or entitlement.

Domain notes

X/Grok is an affinity note, never a veto.

A unit of work can declare a domain. Declaring x_platform_data notes the Grok family, whose home platform is X, and multimodal vision notes the Gemini, GPT, and Claude families. When a unit declares a domain, the note may advisorily reorder a locally-derived chain, and the reorder is recorded in the route's attempted trail.

Domain affinity notes are static editorial defaults — not observed, benchmarked, or measured capability. OMH never evaluates a model. They never rank by quality, never remove an option, and never override your explicit model choice.

Agent and operator reference

Ask Hermes. These commands sit behind it.

In normal use you describe the work to Hermes and it prepares the route. The commands are listed for wrappers, coding agents, automations, and maintainers who need the machine payload.

omh coding model-route --explain omh coding model-route --executor codex --role implementation omh coding model-route --domain x_platform_data --json omh coding model-route --recommendations ./my-routing.json omh coding model-routing status omh coding model-inventory omh coding composition-guide --model kimi-k3

Claim boundary

What routing is, and what it is not.

Recommendation order is editorial and user-replaceable. It is not a benchmark, a quality ranking, or a measured capability claim, and a prepared route is not execution evidence.