
Hermes and CLIProxyAPI
For everyday coding I still use Cursor + Claude Code + Codex. Neither of the tools below replaces the IDE. They cover what sits outside it:
| Hermes | CLIProxyAPI | |
|---|---|---|
| Job | Resident local agent; chat apps as extra entry points | Turn a signed-in CLI subscription into a local compatible API |
| Home base | Local process, gateway, memory, and skills | A proxy on 127.0.0.1:8317 |
| Not for | Watching UI or nudging pixels | Acting as an IDE, or creating extra quota |
Hermes can switch providers by itself, so it does not have to go through CLIProxyAPI. CLIProxyAPI is more useful when a client only accepts an OpenAI or Claude endpoint but your access is a CLI subscription.
Hermes Agent
An open-source agent from Nous Research. Repository: NousResearch/hermes-agent. Documentation: hermes-agent.nousresearch.com/docs. MIT licensed.
Switch models with one hermes model command: OpenRouter, OpenAI, Anthropic, DeepSeek, or a local model. I currently use DeepSeek, and the WeChat gateway replies through it too.
Compared with Cursor and Claude Code:
| Cursor / Claude Code | Hermes | |
|---|---|---|
| Home base | Repository, editor, terminal | A resident process on the machine |
| Entry points | IDE / CLI | CLI, desktop app, Telegram / Discord / Slack / WeChat… |
| Memory | Mostly per-session | Remembers preferences, environment, and lessons across sessions |
| Reuse | Project rules / CLAUDE.md | Skills; save a hard workflow and load it next time |
It can search past conversations, and a finished complex task can become a skill. Scheduled tasks can be delivered to WeChat or Telegram.
Installation
macOS / Linux / WSL:
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
source ~/.zshrc
hermes
On Windows PowerShell: iex (irm https://hermes-agent.nousresearch.com/install.ps1).
Run the setup wizard first:
hermes setup
hermes model
hermes doctor
If you do not want a pile of API keys, Nous Portal plus hermes setup --portal binds models and some tool gateways to the subscription. I do not use that route: the model is DeepSeek and tools are enabled as needed.
How I use it
hermes # Terminal chat
hermes desktop # Desktop app
hermes gateway # Message gateway
Configuration lives in ~/.hermes/config.yaml; secrets stay in ~/.hermes/.env. Project conventions still belong in AGENTS.md / CLAUDE.md in the repo; Hermes reads them.
For WeChat, once the gateway is connected, a message from the phone makes the local agent call tools and reply. Closing the lid sleeps the machine and drops the session. Keeping it alive with the lid closed needs something else, such as Amphetamine or Adrafinil.
Good for local automation, scheduled reports, controlling a computer from a phone, and using the same brain across platforms.
Not ideal when you are still watching a UI and adjusting pixels—keep Cursor for that. Keep well-bounded long tasks in Claude Code.
It can run local commands, read files, and open a browser. Enable pairing or an allowlist on the gateway. Do not expose it to everyone, and never put secrets in chat history.
CLIProxyAPI
In my everyday setup, CC Switch solves switching providers under the same Claude Code CLI. CLIProxyAPI does the reverse: you are already signed in to a CLI subscription and want it as an API for Cursor, Cline, or scripts.
Repository: router-for-me/CLIProxyAPI. Manual: help.router-for.me. Desktop client: EasyCLIProxyAPI.
It starts a proxy on your machine. Sign in through each CLI’s OAuth flow (Claude Code, OpenAI Codex, Google Antigravity / Gemini, Grok Build, and Kimi). It then exposes OpenAI-, Gemini-, Claude-, Codex-, and Grok-compatible endpoints. Point the client’s base_url at localhost.
Multiple accounts can rotate. Upstream OpenAI-compatible services such as OpenRouter also work. Streaming, tool calls, and image-and-text input are supported. The default port is 8317.
This is not a reseller. A reseller sells someone else’s key; this runs on your machine with the subscription you signed into.
Installation
On macOS, Homebrew’s service reads $(brew --prefix)/etc/cliproxyapi.conf by default. To keep the file in your home directory, create it first and then symlink; a dangling symlink makes the service exit immediately:
brew install cliproxyapi
mkdir -p ~/.cli-proxy-api
# Prepare ~/.cli-proxy-api/config.yaml according to the official example first:
brew_conf="$(brew --prefix)/etc/cliproxyapi.conf"
ln -sfn "$HOME/.cli-proxy-api/config.yaml" "$brew_conf"
brew services start cliproxyapi
If you would rather avoid the commands, EasyCLIProxyAPI can start, stop, and edit the config from the tray.
Docker:
docker run --rm -p 8317:8317 \
-v /path/to/config.yaml:/CLIProxyAPI/config.yaml \
-v /path/to/auth-dir:/root/.cli-proxy-api \
-v /path/to/plugins:/CLIProxyAPI/plugins \
eceasy/cli-proxy-api:latest
Mount the plugins directory, or store-installed plugins disappear when the container restarts.
Follow the OAuth flow in the official docs; Claude, Codex, Gemini, and Grok each have their own. Then point Cursor, Cline, or OpenCode at http://127.0.0.1:8317.
Usage statistics are no longer built in as of v6.10.0. For a dashboard, use CPA Usage Keeper or CPA-Manager-Plus.
How it fits with existing tools
| Need | Tool |
|---|---|
| Switch Claude Code to DeepSeek / GLM | CC Switch |
| Use a subscription as an API for other clients | CLIProxyAPI |
| Cheap access with direct connectivity from China | Official DeepSeek API |
| Write code in a repository | Cursor / Claude Code; do not treat the proxy as an IDE |
| Resident agent with a WeChat entry point | Hermes; it can switch models itself and does not need this proxy first |
Do not treat it as free lunch
Most subscription terms are written around the official client. Turning an OAuth login into a generic API may violate the terms of service; you bear bans and rate limits. Account pools, rotation, and exposing the port to the public internet add more risk. Keep it on 127.0.0.1, add an access key, and do not expose it bare.
Quota windows still apply—the Codex 5-hour and 7-day windows, for example. A proxy does not create more quota; it only changes the entry point. Follow current docs for model names and channel aliases; README version numbers for GPT, Claude, and Gemini change quickly.
I turn it on when official quotas are tight and a tool only accepts a standard API. For everyday coding, the corresponding official client is still simpler.
Tools will change. Hermes is worth trying because the entry point is not tied to an IDE. CLIProxyAPI is worth trying because a subscription can be reused by other clients. Neither is unlimited free quota.