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

Eight 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.

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, then GPT-5.6 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", "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, interactive model setup, model-chain interview, and doctor steps. 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 then GPT-5.6 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.