Hermes Agent × Byoky

Run Hermes Agent — on your Pro/Max plan or a free gift.

Hermes Agent

Point Nous Research's self-improving CLI at the Byoky bridge.
Zero API credits. Keys stay in your wallet.

Start Setupor
Requires Byoky extension v0.9.13+ and @byoky/bridge@0.9.12+ (session persistence, the long-context billing fix, and bridge auto-recovery on service-worker recycle — needed for long Hermes sessions). Stores still on v0.9.5 in review — until they update, grab the extension from the latest GitHub release.
Two ways to run Hermes for free

Token gift from the token pool

Anyone can gift Anthropic token access on the Byoky token pool. Hermes runs entirely on the gifter's budget — capped, revocable, and proxied through their wallet so their key never leaves their machine.

No card, no signup, no Anthropic account.

Your Claude Pro/Max subscription

Already paying for Claude Pro or Max? Connect it to Byoky with a setup token and Hermes runs on the same subscription credits you already use in claude.ai. No API credits, no per-token billing.

Uses your existing plan.

Coming from OpenClaw?

Hermes is the spiritual successor to OpenClaw and ships a built-in migrator. After installing Hermes, run hermes claw migrate to import your settings, memories, skills, and (optionally) API keys. It also drops a byoky-anthropic entry into ~/.hermes/config.yaml under custom_providers — but with api_mode: chat_completions, which the bridge returns 404 on. Change it to api_mode: anthropic_messages (covered in step 5) and you're done. The wallet credential and bridge plumbing are otherwise identical.

1

Install the Byoky wallet

The wallet holds the Anthropic credential (yours, gifted, or a Claude Pro/Max setup token) and proxies every request. Hermes runs on your desktop, so the wallet needs to live in a desktop browser on the same machine.

Pick your browser:

iOS and Android wallets exist but can't host Hermes — the hermes CLI and the Byoky Bridge need a desktop OS. (The mobile wallets are for gift senders or browsing the token pool on the go.)

2

Add an Anthropic credential

Three options — pick whichever fits.

Free token gift — grab one from the Token Pool. Filter for Anthropic. The gifter's key runs the calls; you just burn their budget.
Claude Pro/Max setup token — run claude setup-token in your terminal and paste the result into Byoky. Hermes runs on your existing plan, no API credits needed.
Your own API key — add an Anthropic API key directly. Only do this if you already pay for the API tier (otherwise Anthropic won't classify the traffic as first-party and will fail with a billing error).
3

Install Hermes Agent and the Byoky Bridge

Hermes is Nous Research's self-improving CLI agent. The Bridge is the tiny local proxy that sits between Hermes and your wallet.

# Hermes — clones into ~/.hermes, sets up a uv venv, registers `hermes` on PATH.
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash -s -- --skip-setup

# Byoky bridge
npm install -g @byoky/bridge
byoky-bridge install

byoky-bridge install writes a native messaging host manifest that whitelists the Byoky extension. Restart your browser once so Chrome picks up the manifest. You only ever do this once per machine.

Native Windows is not supported by Hermes — install WSL2 and run the command above. macOS, Linux, and Android via Termux are supported.

4

Connect the wallet

One command that opens the browser, approves a session, and starts the bridge proxy on :19280.

byoky-bridge connect

A browser tab opens on http://127.0.0.1:<ephemeral>. Click Connect wallet, approve the session in the Byoky popup, and the tab reports success. The bridge is now listening on 127.0.0.1:19280 and stays up as long as your browser is running. Re-run the command after a browser restart.

Verify it:

curl http://127.0.0.1:19280/health
# → {"status":"ok","providers":["anthropic",...]}

If anthropic is missing, the wallet doesn't have an Anthropic credential loaded yet — go back to step 2.

5

Wire Hermes to the bridge

One command patches ~/.hermes/config.yaml so Hermes routes through byoky instead of going direct to api.anthropic.com.

byoky-bridge hermes-setup

That writes a byoky-anthropic entry into custom_providers with api_mode: anthropic_messages, flips model.provider to byoky-anthropic, and backs up the original to config.yaml.bak. Re-running is a no-op if the file is already configured.

Then run Hermes:

hermes chat -q "ping" -Q       # one-shot smoke test
hermes                          # interactive
Prefer to edit by hand? Show the manual diff.
# At the top of ~/.hermes/config.yaml:
model:
  default: claude-sonnet-4-6        # or claude-opus-4-7, claude-haiku-4-5
  provider: byoky-anthropic         # was: anthropic

# In the custom_providers list, add (or fix) the byoky entry.
# api_mode MUST be anthropic_messages — chat_completions yields 404 from the bridge.
custom_providers:
- name: byoky-anthropic
  base_url: http://127.0.0.1:19280/anthropic
  api_key: ''
  api_mode: anthropic_messages

On a successful first call, hermes status shows Provider: custom and Endpoint: http://127.0.0.1:19280/anthropic. Token usage shows up in the wallet's Sessions view in real time. If you're using a gifted credential, the gifter's budget ticks down and the session stops cleanly at zero.

Why not env vars? The Hermes built-in anthropic provider hits api.anthropic.com directly and doesn't read ANTHROPIC_BASE_URL.--provider anthropic, hermes model → Anthropic, and any leftover ANTHROPIC_API_KEY in ~/.hermes/.env all bypass byoky. Routing has to go through a custom_providers entry, which is what the edits above set up.

Coming from hermes claw migrate? The migrator already drops a byoky-anthropic entry in custom_providers, but with api_mode: chat_completions — which yields a 404 from the bridge. Change it to api_mode: anthropic_messages and you're done.

Pro tip: Hermes ships a 36KB system prompt (its “SOUL.md”). Byoky relocates it into a <system_context> block in the first user message so Anthropic's third-party detection still classifies the traffic as Claude Code. No tuning required.

If something doesn't work

hermes status shows Endpoint: https://api.anthropic.com

Hermes is bypassing the bridge — it's using its built-in anthropic provider, which ignores ANTHROPIC_BASE_URL and goes direct. Confirm ~/.hermes/config.yaml has model.provider: byoky-anthropic at the top and a byoky-anthropic entry under custom_providers with api_mode: anthropic_messages. After the edit hermes status should report Provider: custom and Endpoint: http://127.0.0.1:19280/anthropic.

HTTP 404 from http://127.0.0.1:19280/anthropic

The byoky-anthropic entry in custom_providers is set to api_mode: chat_completions — that path doesn't exist on the bridge. Change it to api_mode: anthropic_messages. (This is the default Hermes leaves behind after hermes claw migrate; it has to be flipped manually.)

HTTP 401 "Byoky bridge session expired or revoked" mid-conversation

The wallet's 20-minute idle auto-lock fired while you were using Hermes — CLI traffic wasn't counting as wallet activity, so the timer ran out even during active sessions. Fixed in v0.9.10: bridge requests now reset the idle timer, and the bridge's authorized session key persists across MV3 service-worker evictions. v0.9.13 closes the last gap — when MV3 evicts the service worker mid-session, the bridge auto-restarts on the next keepalive tick instead of leaving Hermes stuck onECONNREFUSED. Upgrade extension to v0.9.13+ (until the stores update, download from the latest GitHub release and load unpacked). On v0.9.5 the only workaround is clicking the wallet popup every ~15 minutes to reset the timer.

"Third-party apps now draw from your extra usage..."

Anthropic classified your request as non-Claude-Code, which only happens when the request didn't actually go through the bridge. Run hermes status — if it shows Endpoint: api.anthropic.com, see the endpoint shows api.anthropic.com entry above. If the endpoint already points at :19280/anthropic and you still see this error, the wallet credential itself is the issue: swap to a fresh claude setup-token or a gift from the token pool.

ECONNREFUSED 127.0.0.1:19280

The bridge proxy isn't listening yet. Run byoky-bridge connect — it opens a tab, waits for you to approve the session in the wallet, and starts the proxy on :19280. After a browser restart the proxy stops (the extension's service worker holds it open), so re-run the command to bring it back.

"invalid x-api-key" or "Invalid bearer token"

The key stored in your wallet is wrong or revoked. Grab a fresh one from console.anthropic.com, re-run claude setup-token, or use a free gift from the token pool.

Anthropic keeps returning 429 rate_limit_error on a gift

The gifter's upstream key is being throttled (the limit is on their account, not yours). Try a different Anthropic gift, or wait for the window to clear (usually 1 hour).

I want to switch models or providers mid-session

hermes model opens a picker for provider + model. Pick Anthropic and any Claude model that the wallet credential covers. For non-Anthropic providers, set the matching env var (e.g. OPENROUTER_API_KEY) and re-run hermes model — the Byoky bridge supports multi-provider routing too if you pass --providers anthropic,openai to byoky-bridge connect.

The bridge logs to stderr — tail it with tail -f ~/Library/Logs/byoky-bridge.log (macOS) if you need to see raw request errors. For a deep dive on why some configurations classify as third-party, see Bisecting Anthropic's Claude Code fingerprint.

How it works

hermes → HTTP → Bridge (localhost:19280/anthropic) → Extension → api.anthropic.com
                                                       ↑
                                              Keys live here. Always.
  1. Your ~/.hermes/config.yaml declares a byoky-anthropic entry under custom_providers with base_url: http://127.0.0.1:19280/anthropic and api_mode: anthropic_messages. That tells Hermes to POST native Anthropic-shaped requests at the bridge instead of going to api.anthropic.com.
  2. The bridge receives the request on :19280, strips the placeholder auth header, and forwards the body to your Byoky extension via native messaging.
  3. The extension injects the real Anthropic credential (your own API key, your OAuth setup token, or a gifted credential routed through the gifter's extension), rewrites Hermes's mcp_* tool names to PascalCase aliases, and relocates the SOUL.md system prompt so Anthropic still classifies the traffic as Claude Code.
  4. The streaming response flows back through the same path with tool names translated back. Hermes sees plain SSE, exactly as if it talked to api.anthropic.com directly.

For OAuth credentials (Pro/Max setup tokens), the extension routes outbound calls through the bridge a second time so the request is made from Node instead of Chrome. That bypasses the TLS fingerprint Anthropic uses to classify Claude Code vs. third-party apps — see the fingerprint post for the full story.

Ready to try it?

Grab a free Anthropic token gift from the token pool and you'll be running Hermes Agent on it in under five minutes.