本文へ移動

Hermes Agent

Verified

Nous Research のターミナルエージェント (Linux/macOS/WSL2)。providers に kotoba を足し、model.provider で選ぶ。2026-09-17 に agent coding セッションで実測した設定(下のブロックは全行が測定済みの下限)。

context_length は 98,304(131,072 の slot − 既定出力 32,768): hermes は max_tokens を送らない(config では課せない)ので、出力分を窓から引いて宣言する。timeout は 900 秒: 応答は完了後にまとめて届き、edge は最大 840 秒待つ。compaction の要約は blue route(qwen/qwen3.8-flash)へ: 自分のセッションと slot を取り合わない。要約を red model に向けない: red route が edge 側で 1 時間詰まった 2026-09-18(ADR 2609181900)、そうしていた環境は compaction を毎回失い(120 秒無出力)、blue は終始 3.6 秒で答えていた。auxiliary.compression.fallback_chain(off-edge の :free SKU、key_env 必須)は edge 自体が沈黙したときの逃げ道 —— 要約は素の文章なので他 provider でも transcript を汚さない。main の fallback は同じ edge に: 他 provider の reasoning_details がここへ replay されて 400 になる。auxiliary の title 生成は 1 回ごとに無料枠を 1 件使う(`auxiliary.title_generation.enabled: false` で止められる)。

Setup

Shell
# ~/.hermes/config.yaml (or a profile's config.yaml)
model:
  provider: kotoba
  default: qwen3.8-flash-next-whitehacker
  # no max_tokens: hermes ignores it; the edge's default output budget is 32,768
providers:
  kotoba:
    api: https://api.mithril.fund/v1   # literal: a KOTOBA_API_BASE that already ends in /v1 would become /v1/v1 (405)
    key_env: KOTOBA_API_TOKEN
    transport: chat_completions
    discover_models: true
    request_timeout_seconds: 900
    stale_timeout_seconds: 900
    models:
      qwen3.8-flash-next-whitehacker:
        context_length: 98304   # 131,072 slot - 32,768 output budget
  custom:
    # a named provider runs under this label at runtime — these are the timeouts that apply
    request_timeout_seconds: 900
    stale_timeout_seconds: 900
compression:
  # the answer arrives whole; a summary can take minutes under load
  context_timeout_seconds: 900
  context_total_ceiling_seconds: 900
auxiliary:
  compression:
    provider: kotoba            # REQUIRED with a bare base_url: without it (or key_env) hermes resolves the task to "auto" = the main model
    key_env: KOTOBA_API_TOKEN
    model: qwen/qwen3.8-flash   # the blue route: shares no slot with your session
    base_url: https://api.mithril.fund/v1
    reasoning_effort: none
    timeout: 900
    # optional, off-edge: where the summary goes when THIS edge is silent (needs an OpenRouter key in .env).
    # key_env is required — the stall retry pins the entry as-is and 401s without it. :free SKUs only.
    fallback_chain:
      - provider: openrouter
        model: qwen/qwen3.8-27b:free
        key_env: OPENROUTER_API_KEY
        timeout: 180
      - provider: openrouter
        model: nex-agi/nex-n2.5-mini:free
        key_env: OPENROUTER_API_KEY
        timeout: 120
  title_generation:
    provider: kotoba
    key_env: KOTOBA_API_TOKEN
    model: qwen/qwen3.8-flash
    base_url: https://api.mithril.fund/v1
    reasoning_effort: none
    timeout: 120
fallback_providers:
  - provider: kotoba
    model: qwen/qwen3.8-flash   # same edge; another provider's reasoning_details would be replayed here
    base_url: https://api.mithril.fund/v1
    api_mode: chat_completions

# ~/.hermes/.env — the token is the only thing read from the environment
KOTOBA_API_TOKEN=kc_pat_<your-token>   # issue at https://console.mithril.fund/account (shown once)
OPENROUTER_API_KEY=sk-or-<optional>     # only for auxiliary.compression.fallback_chain; omit the chain without it

# `personal API token refused: token-unknown` = the token in THIS machine's .env is not in the
# account's registry (issued elsewhere, or before the registry): paste a current one here.
# profiles: start them as `hermes -p <profile>` or with HERMES_HOME=~/.hermes/profiles/<profile>,
# not via the sticky `hermes profile use` (subprocesses then write to the default profile)
hermes chat -Q --oneshot -q "Reply with exactly: OK"

The research gates (verification, scope, free quota) are identical to the cookie session; the token only removes the origin gate.

← All tools