All plugins

hermes-kame-provider

Companion to hermes-kame-api-rotation (install both). A model-provider plugin that re-registers Hermes' bundled API-key profiles unchanged except for create_client and create_messages_client, which return the rotation plugin's key-rotating client; otherwise None and Hermes builds its own. Same endpoints as Hermes, no third-party service, no core override.

Kame6962Modelsv1.8.3.0Updated 3 days ago

About

Companion to hermes-kame-api-rotation (install both). A model-provider plugin that re-registers Hermes' bundled API-key profiles unchanged except for create_client and create_messages_client, which return the rotation plugin's key-rotating client; otherwise None and Hermes builds its own. Same endpoints as Hermes, no third-party service, no core override.

hermes-kame-provider

The provider half of KAME API Rotation.

Hermes asks a provider profile for its model client before it builds its own
(ProviderProfile.create_client, and create_messages_client for Anthropic
Messages endpoints). This model-provider plugin registers, for every bundled
API-key provider, a profile that inherits everything from Hermes' own —
endpoints, models, auth, request shaping — and adds only those two client
factories, which ask hermes-kame-api-rotation for a client that rotates the
provider's keys on every request: Chat Completions, Responses API and
Anthropic Messages.

  • Nothing in Hermes is replaced, wrapped or rebound: the bundled profile
    objects are copied into new ones, and Hermes' own registry keeps them as the
    documented per-home override.
  • Without hermes-kame-api-rotation installed and loaded for the same profile
    home, or with KAME switched off (KAME_ROTATION_DISABLED=1), both answer
    None and Hermes builds its own client exactly as it always does. A Hermes
    that does not yet ask create_messages_client builds its own Messages
    client; the other wires still rotate.
hermes plugins install Kame696/kame-api-rotation-for-hermes/hermes-kame-api-rotation
hermes plugins install Kame696/kame-api-rotation-for-hermes/hermes-kame-provider
hermes plugins enable hermes-kame-api-rotation

Restart Hermes once after installing. MIT licence.

README from the reviewed commit 5e4a12f; it updates when the author re-pins.

More by Kame696

2 plugins by Kame696 in the catalog.

Kame696hermes-kame-api-rotationSmart API key rotation: the healthiest key for every call, each 429 / RESOURCE_EXHAUSTED / quota refusal sized from its own evidence. Install with its companion hermes-kame-provider, which hands Hermes this plugin's rotating client through ProviderProfile.create_client (and create_messages_client where Hermes offers it); no core override. When Hermes has a fallback list, a reply whose model is busy, resting or slow moves down a ladder: the model the reply started on, then the main model (model.default), then the rest of the list; a model of the same provider answers inside the plugin on the same keys and endpoint, a model of another provider is handed to Hermes' own fallback (which walks the list), and a late reply can be raced by the next model of the same provider; nothing moves once part of the reply is on screen, and never_fall_back_to_another_model turns every switch off (the plugin reads the model and fallback_providers from config.yaml, read-only; no new network destination). Disclosure — /kame-keys add|import|split, and on start a key variable holding several comma-joined keys, write one auth.json pool row per key through Hermes' pool API after an owner-only plaintext backup (last 5 kept; switch: resolver_disabled); settings changed from /kame or the Desktop panel are saved as KAME_* lines in Hermes' .env; key-redacted, size-capped owner-only local logs (current file plus one previous) and a status file per profile; the Desktop panel reads that file and queues its settings requests through its own dashboard/plugin_api.py route (GET /state, POST /control, this plugin's plugin-data folder only); after Hermes' own fallback answered a reply, the Desktop page sets that conversation's model back to the model the reply started on with config.set --session (never --global; config.yaml is not written); while every key is resting and no fallback model can take over, chats (CLI, Desktop, messaging gateway) keep waiting with no total limit (each key's rest capped by max_hold_seconds) and cron runs give up after 300 s with the provider's refusal unless max_total_wait_seconds is set. Extra billed requests (chat replies only; hedge_mode off turns them all off): a late reply may also be sent to up to two more keys of the same model (about 10% of replies, 30% in "Faster", bursts of 3), to up to two next models of your fallback list on the same provider, keys and endpoint, and to one more model of the list when it stays silent; a busy best model may be asked again beside a reply at most every 20 s; and when keys keep coming back out of quota the next attempt asks 4, then 8, then up to 16 keys at once (probe_burst_max_legs). Titles and other background jobs are limited to a few requests and are stopped with a timeout so Hermes moves them down your own list.Communitymodels2