Skip to content

Commit 011724e

Browse files
authored
feat(shared): add Hermes as a built-in terminal agent (#6766)
* feat(shared): add Hermes as a built-in terminal agent Adds Nous Research's Hermes Agent to BUILTIN_TERMINAL_AGENTS, with light/dark preset icons, README row, docs bullet, and marketing demo entry. Builds on #5802; hermes chat has no positional prompt, so prompt launches run -q and continue interactively with -c (kimi pattern); resume is -r <session>. Co-authored-by: Yash <116657771+hackice20@users.noreply.github.com> Claude-Session: https://claude.ai/code/session_01DuAhw6Ao5Cru3acdkrzx9f * feat(desktop): expose Hermes in the icon picker, settings search, and preset docs Claude-Session: https://claude.ai/code/session_01DuAhw6Ao5Cru3acdkrzx9f
1 parent 219af5d commit 011724e

12 files changed

Lines changed: 71 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ Superset works with any CLI-based coding agent, including:
197197
| <img height="16" align="top" alt="Gemini CLI" src="packages/ui/src/assets/icons/preset-icons/gemini.svg" /> &nbsp;[Gemini CLI](https://github.com/google-gemini/gemini-cli) | Fully supported |
198198
| <picture><source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/assets/icons/preset-icons/copilot-white.svg" /><img height="16" align="top" alt="GitHub Copilot" src="packages/ui/src/assets/icons/preset-icons/copilot.svg" /></picture> &nbsp;[GitHub Copilot](https://github.com/features/copilot) | Fully supported |
199199
| <picture><source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/assets/icons/preset-icons/grok-white.svg" /><img height="16" align="top" alt="Grok" src="packages/ui/src/assets/icons/preset-icons/grok.svg" /></picture> &nbsp;[Grok](https://x.ai/) | Fully supported |
200+
| <picture><source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/assets/icons/preset-icons/hermes-white.svg" /><img height="16" align="top" alt="Hermes" src="packages/ui/src/assets/icons/preset-icons/hermes.svg" /></picture> &nbsp;[Hermes](https://github.com/NousResearch/hermes-agent) | Fully supported |
200201
| <picture><source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/assets/icons/preset-icons/kimi-white.svg" /><img height="16" align="top" alt="Kimi Code" src="packages/ui/src/assets/icons/preset-icons/kimi.svg" /></picture> &nbsp;[Kimi Code](https://www.kimi.com/) | Fully supported |
201202
| <img height="16" align="top" alt="Kiro" src="packages/ui/src/assets/icons/preset-icons/kiro.svg" /> &nbsp;[Kiro](https://kiro.dev/cli/) | Fully supported |
202203
| <picture><source media="(prefers-color-scheme: dark)" srcset="packages/ui/src/assets/icons/preset-icons/mastracode-white.svg" /><img height="16" align="top" alt="Mastra Code" src="packages/ui/src/assets/icons/preset-icons/mastracode.svg" /></picture> &nbsp;[Mastra Code](https://mastra.ai/) | Fully supported |

apps/desktop/src/renderer/routes/_authenticated/settings/agents/components/V2AgentsSettings/components/AgentIconPicker/agent-icon-options.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const AGENT_ICON_OPTIONS: readonly AgentIconOption[] = [
2222
{ id: "vibe", label: "Mistral Vibe" },
2323
{ id: "kimi", label: "Kimi Code" },
2424
{ id: "grok", label: "Grok" },
25+
{ id: "hermes", label: "Hermes" },
2526
{ id: "fx", label: "fx" },
2627
{ id: "agy", label: "Antigravity" },
2728
{ id: "kiro", label: "Kiro" },

apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -867,6 +867,8 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
867867
"moonshot",
868868
"grok",
869869
"xai",
870+
"hermes",
871+
"nous",
870872
"fx",
871873
"vercel",
872874
"antigravity",
@@ -935,6 +937,8 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
935937
"moonshot",
936938
"grok",
937939
"xai",
940+
"hermes",
941+
"nous",
938942
"fx",
939943
"vercel",
940944
"antigravity",

apps/docs/content/docs/agent-integration.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ Run AI coding agents in isolated workspaces. Each agent works independently with
2525
- **Cursor Agent** - Cursor AI agent
2626
- **Droid** - Factory's autonomous coding agent
2727
- **Polygraph** - Meta-harness with cross-repo visibility and persistent memory
28+
- **Hermes** - Nous Research's autonomous coding and research agent
2829
- **fx** - Vercel's terminal coding agent
2930
- **Antigravity** - Google's Antigravity CLI (`agy`)
3031
- **Kiro** - AWS's spec-driven CLI coding agent

apps/docs/content/docs/terminal-presets.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Pre-configured presets for popular AI agents. Defaults mirror the bundled Supers
5555
- **vibe** - `vibe --trust --auto-approve` (Mistral's coding agent; trust grants access to `AGENTS.md` and `.agents/skills/`)
5656
- **kimi** - `kimi` (Kimi Code CLI; prompt launches run with `kimi -p` and resume in the interactive TUI)
5757
- **grok** - `grok --always-approve` (xAI's Grok Build CLI; prompts seed the interactive session directly)
58+
- **hermes** - `hermes chat --yolo` (Nous Research's Hermes Agent; prompt launches run with `-q` and continue in the interactive chat)
5859
- **fx** - `fx` (Vercel's coding agent; prompt launches run `fx ask --auto` and resume the session in the TUI)
5960
- **agy** - `agy --mode accept-edits` (Google's Antigravity CLI; prompt launches seed the interactive session with `-i`)
6061
- **kiro** - `kiro-cli chat --trust-all-tools` (AWS's Kiro CLI; prompts seed the interactive session directly)
Lines changed: 6 additions & 0 deletions
Loading

apps/marketing/src/app/components/FeaturesSection/components/UniversalCompatibilityDemo/UniversalCompatibilityDemo.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const AGENTS = [
1515
{ name: "Mistral Vibe", icon: "/app-icons/vibe.svg", size: 18 },
1616
{ name: "Kimi Code", icon: "/app-icons/kimi.svg", size: 18 },
1717
{ name: "Grok CLI", icon: "/app-icons/grok.svg", size: 18 },
18+
{ name: "Hermes", icon: "/app-icons/hermes.svg", size: 18 },
1819
{ name: "fx", icon: "/app-icons/fx.svg", size: 18 },
1920
{ name: "Antigravity", icon: "/app-icons/agy.svg", size: 18 },
2021
{ name: "Kiro", icon: "/app-icons/kiro.svg", size: 18 },

packages/shared/src/agent-command.test.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,34 @@ describe("fx agent registration", () => {
181181
});
182182
});
183183

184+
describe("hermes agent registration", () => {
185+
it("is a registered terminal agent with the right label", () => {
186+
expect(AGENT_TYPES).toContain("hermes");
187+
expect(AGENT_LABELS.hermes).toBe("Hermes");
188+
});
189+
190+
it("runs prompt launches as a one-shot query and continues them in the chat", () => {
191+
const command = buildAgentPromptCommand({
192+
prompt: "hello",
193+
randomId: "hermes-1234",
194+
agent: "hermes",
195+
});
196+
197+
expect(command).toStartWith(
198+
"hermes chat --yolo -q \"$(cat <<'SUPERSET_PROMPT_hermes1234'",
199+
);
200+
expect(command).toEndWith('\n)" ; hermes chat --yolo -c');
201+
});
202+
203+
it("derives host preset prompt and resume args from the base command", () => {
204+
const preset = getPresetById("hermes");
205+
expect(preset?.command).toBe("hermes");
206+
expect(preset?.args).toEqual(["chat", "--yolo"]);
207+
expect(preset?.promptArgs).toEqual(["-q"]);
208+
expect(preset?.resumeArgs).toEqual(["-r"]);
209+
});
210+
});
211+
184212
describe("grok agent registration", () => {
185213
it("is a registered terminal agent with the right label", () => {
186214
expect(AGENT_TYPES).toContain("grok");

packages/shared/src/builtin-terminal-agents.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,17 @@ export const BUILTIN_TERMINAL_AGENTS = [
231231
resumeCommand: "fx resume",
232232
nonInteractiveCommand: "fx ask --auto",
233233
}),
234+
createBuiltinTerminalAgent({
235+
id: "hermes",
236+
label: "Hermes",
237+
description:
238+
"Nous Research's autonomous agent for coding, research, and terminal workflows.",
239+
command: "hermes chat --yolo",
240+
promptCommand: "hermes chat --yolo -q",
241+
promptCommandSuffix: "; hermes chat --yolo -c",
242+
resumeCommand: "hermes chat --yolo -r",
243+
nonInteractiveCommand: "hermes chat -q",
244+
}),
234245
] as const;
235246

236247
export type BuiltinTerminalAgentType =
Lines changed: 6 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)