mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-31 04:12:10 +03:00
2 lines
6.6 KiB
JSON
2 lines
6.6 KiB
JSON
{"author":{"id":"MDQ6VXNlcjQwODM4MTI=","is_bot":false,"login":"apoapostolov","name":"Apostol Apostolov"},"body":"## What\n\nProper first-class Hermes Agent support in the CLI Tools section — with an auto-configured tool card (like Claude Code, OpenClaw, Codex) instead of the current generic guide-based entry.\n\n## Why\n\nHermes Agent (https://github.com/NousResearch/hermes-agent) is a terminal-native AI agent framework by Nous Research, same category as Claude Code, Codex, and OpenClaw. It's approaching feature parity with OpenClaw and in some areas (skills system, credential pooling, multi-platform gateway, profile isolation) it's already ahead.\n\nRight now Hermes shows up as a **guided** tool card with a generic JSON snippet:\n\n```json\n{\n \"provider\": {\n \"type\": \"openai\",\n \"baseURL\": \"{{baseUrl}}\",\n \"apiKey\": \"***\",\n \"model\": \"{{model}}\"\n }\n}\n```\n\nThis doesn't match Hermes Agent's actual config format at all. Hermes uses YAML (`~/.hermes/config.yaml`), not JSON, and has a much richer provider model with several configuration surfaces that OmniRoute could manage automatically:\n\n### What Hermes Agent actually needs\n\nHermes has **three distinct model slots** that OmniRoute could populate:\n\n**1. Core model** (the main conversation model):\n```yaml\nmodel:\n default: omniroute/claude-sonnet-4-6\n provider: omniroute\n base_url: http://localhost:20128/v1\n api_key: sk-...\n```\n\n**2. Delegation model** (for subagents):\n```yaml\ndelegation:\n model: omniroute/claude-sonnet-4-6\n provider: omniroute\n base_url: http://localhost:20128/v1\n api_key: sk-...\n```\n\n**3. Auxiliary models** (for vision, compression, web extraction, etc.):\n```yaml\nauxiliary:\n vision:\n provider: omniroute\n model: omniroute/gemini-3-flash\n base_url: http://localhost:20128/v1\n api_key: sk-...\n compression:\n provider: omniroute\n model: omniroute/kimi-k2.5\n base_url: http://localhost:20128/v1\n api_key: sk-...\n```\n\nThe current guide entry only covers case #1, and even that with the wrong format. An auto-configured card could handle all three, letting users pick which models OmniRoute serves for each slot.\n\n### Hermes Agent is a real integration target\n\n- **YAML config** at `~/.hermes/config.yaml` (readable/writable, well-structured)\n- **Secrets in `.env`** at `~/.hermes/.env` (API keys stored separately, like OpenClaw)\n- **Config path** can be discovered via `hermes config path`\n- **Runtime detection** works — the existing `cliRuntime.ts` already has a `hermes` entry pointing at `CLI_HERMES_BIN` and `.config/hermes/config.json` (though the path is wrong — it should be `.hermes/config.yaml`)\n- **Install detection** via `hermes --version`\n- **Provider-agnostic by design** — adding a custom OpenAI-compatible provider is a first-class config operation\n\n### Config path discrepancy\n\nThe current `cliRuntime.ts` entry has:\n```ts\nhermes: {\n paths: { config: \".config/hermes/config.json\" }\n}\n```\n\nThe actual config lives at `~/.hermes/config.yaml`. This should be corrected.\n\n## Proposed approach\n\nAn auto-configured `HermesToolCard` component, similar to how `OpenClawToolCard` works:\n\n1. **Detect installed Hermes** — run `hermes --version` (already supported by cliRuntime)\n2. **Read current config** — parse `~/.hermes/config.yaml` to check if an `omniroute` provider is already configured\n3. **Offer three configuration modes:**\n - **Core model** — set `model.default`, `model.provider`, `model.base_url`, `model.api_key` (or the key in `.env`)\n - **Delegation model** — set `delegation.*` fields (for subagent tasks)\n - **Auxiliary models** — per-slot (vision, compression, web_extract) with individual model selection\n4. **Write config** — update the YAML file and/or `.env` with the OmniRoute endpoint and API key\n5. **Model selection** — show OmniRoute's available models so users pick which models serve each slot\n6. **Config status** — show whether Hermes is already pointed at OmniRoute (similar to OpenClaw's `getConfigStatus()`)\n\nThe `.env` file would get:\n```\nOMNIROUTE_API_KEY=sk-...\nOMNIROUTE_BASE_URL=http://localhost:20128/v1\n```\n\nAnd `config.yaml` would get the provider reference:\n```yaml\nproviders:\n omniroute:\n type: openai\n base_url: ${OMNIROUTE_BASE_URL}\n api_key: ${OMNIROUTE_API_KEY}\n models:\n - claude-sonnet-4-6\n - gemini-3-flash\n - kimi-k2.5\n\nmodel:\n default: omniroute/claude-sonnet-4-6\n provider: omniroute\n\ndelegation:\n model: omniroute/claude-sonnet-4-6\n provider: omniroute\n```\n\n## Additional context\n\n- Hermes Agent docs: https://hermes-agent.nousresearch.com/docs/user-guide/configuration\n- Provider config reference: https://hermes-agent.nousresearch.com/docs/integrations/providers\n- The existing guide-based card has i18n entries in 30+ languages (\"Hermes AI Terminal Assistant\") which could be reused\n- Hermes Agent users actively use OmniRoute — there are already community guides and a WUPHF integration for it\n- Hermes supports credential pooling and multi-provider routing natively, so an OmniRoute provider fits naturally into its architecture\n","comments":[{"id":"IC_kwDORPf6ys8AAAABA88oPA","author":{"login":"kilo-code-bot"},"authorAssociation":"NONE","body":"This issue appears to be a duplicate of https://github.com/diegosouzapw/OmniRoute/issues/1475.\n\n> **Feature request: add Hermes quick-configuration support to tools** (#1475)\n\nSimilarity score: 91%\n\n*This comment was generated by Kilo Auto-Triage.*","createdAt":"2026-05-01T10:23:59Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/diegosouzapw/OmniRoute/issues/1845#issuecomment-4358875196","viewerDidAuthor":false},{"id":"IC_kwDORPf6ys8AAAABA89ZnQ","author":{"login":"apoapostolov"},"authorAssociation":"NONE","body":"The similarity confusion comes from the fact there is a Hermes, and a Hermes-agent tools, two different cli tools for AI.","createdAt":"2026-05-01T10:28:20Z","includesCreatedEdit":false,"isMinimized":false,"minimizedReason":"","reactionGroups":[],"url":"https://github.com/diegosouzapw/OmniRoute/issues/1845#issuecomment-4358887837","viewerDidAuthor":false}],"createdAt":"2026-05-01T10:23:54Z","labels":[{"id":"LA_kwDORPf6ys8AAAACZXajUw","name":"kilo-triaged","description":"Auto-generated label by Kilo","color":"faf74f"},{"id":"LA_kwDORPf6ys8AAAACZ7FLsw","name":"kilo-duplicate","description":"Auto-generated label by Kilo","color":"faf74f"}],"number":1845,"title":"[Feature] First-class Hermes Agent support — auto-configured tool card with YAML provider integration","url":"https://github.com/diegosouzapw/OmniRoute/issues/1845"}
|