Viro API

Integrations / Hermes Agent

Hermes Agent

Hermes Agent, the terminal coding tool from Nous Research, takes any OpenAI-compatible endpoint as a custom provider. No plugin — one block in ~/.hermes/config.yaml.

Status: unverified. The configuration below follows Hermes' own documentation, but we have not run a live session against Viro ourselves.
Configure

Add Viro under providers in ~/.hermes/config.yaml:

providers:
  viro:
    type: openai
    base_url: https://api.viro.app/v1
    api_key: ${VIRO_API_KEY}
    models:
      viro/clean:
        context_length: 131072
      viro/gpt-oss-120b:
        context_length: 131072
      anthropic/claude-sonnet-5:
        context_length: 1000000

model:
  provider: viro
  model: viro/clean

Or set the same values from the command line, which writes the key to ~/.hermes/.env rather than into the config file:

hermes config set providers.viro.type openai
hermes config set providers.viro.base_url https://api.viro.app/v1
hermes config set providers.viro.api_key viro_sk_live_...
hermes config set model viro/viro/clean

The base URL ends in /v1 — Hermes appends /chat/completions itself. Get a key from API Keys.

Context lengths

Hermes wants a context_length per model, and GET /v1/models does not carry one — it returns OpenAI's four fields and nothing else. Take the numbers from the Models page's Context column.

Setting one too high means Hermes packs a prompt the model then rejects; too low just wastes context. When in doubt, the smaller number is the safe mistake.

Which model

A router slug is usually the right answer for an agent — it picks per request, so a quick edit and a hard refactor do not have to share a model. See Routing.

  • viro/clean — renewable-verified providers only, and errors rather than falling back to unverified infrastructure
  • viro/optimized — cheapest model that still clears the task, across the whole catalog
  • viro/frontier — strongest available, cost and energy disregarded

Which model actually ran comes back in the x-viro-resolved-model response header.