Point Nous Research's self-improving CLI at the Byoky bridge.
Zero API credits. Keys stay in your wallet.
@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.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.
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.
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.
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.
Three options — pick whichever fits.
claude setup-token in your terminal and paste the result into Byoky. Hermes runs on your existing plan, no API credits needed.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 installbyoky-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.
One command that opens the browser, approves a session, and starts the bridge proxy on :19280.
byoky-bridge connectA 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.
One command patches ~/.hermes/config.yaml so Hermes routes through byoky instead of going direct to api.anthropic.com.
byoky-bridge hermes-setupThat 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# 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_messagesOn 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.
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.
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.)
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.
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.
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.
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.
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).
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.
hermes → HTTP → Bridge (localhost:19280/anthropic) → Extension → api.anthropic.com
↑
Keys live here. Always.~/.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.mcp_* tool names to PascalCase aliases, and relocates the SOUL.md system prompt so Anthropic still classifies the traffic as Claude Code.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.
Grab a free Anthropic token gift from the token pool and you'll be running Hermes Agent on it in under five minutes.