diff --git a/README.md b/README.md
index 02ecd81b433..1db5907be44 100644
--- a/README.md
+++ b/README.md
@@ -197,6 +197,7 @@ Superset works with any CLI-based coding agent, including:
|
[Gemini CLI](https://github.com/google-gemini/gemini-cli) | Fully supported |
|
[GitHub Copilot](https://github.com/features/copilot) | Fully supported |
|
[Grok](https://x.ai/) | Fully supported |
+|
[Hermes](https://github.com/NousResearch/hermes-agent) | Fully supported |
|
[Kimi Code](https://www.kimi.com/) | Fully supported |
|
[Kiro](https://kiro.dev/cli/) | Fully supported |
|
[Mastra Code](https://mastra.ai/) | Fully supported |
diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/agents/components/V2AgentsSettings/components/AgentIconPicker/agent-icon-options.ts b/apps/desktop/src/renderer/routes/_authenticated/settings/agents/components/V2AgentsSettings/components/AgentIconPicker/agent-icon-options.ts
index a7968bb21e2..509bdf28672 100644
--- a/apps/desktop/src/renderer/routes/_authenticated/settings/agents/components/V2AgentsSettings/components/AgentIconPicker/agent-icon-options.ts
+++ b/apps/desktop/src/renderer/routes/_authenticated/settings/agents/components/V2AgentsSettings/components/AgentIconPicker/agent-icon-options.ts
@@ -22,6 +22,7 @@ export const AGENT_ICON_OPTIONS: readonly AgentIconOption[] = [
{ id: "vibe", label: "Mistral Vibe" },
{ id: "kimi", label: "Kimi Code" },
{ id: "grok", label: "Grok" },
+ { id: "hermes", label: "Hermes" },
{ id: "fx", label: "fx" },
{ id: "agy", label: "Antigravity" },
{ id: "kiro", label: "Kiro" },
diff --git a/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts b/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts
index 9002bd5960e..d13fdcd10e5 100644
--- a/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts
+++ b/apps/desktop/src/renderer/routes/_authenticated/settings/utils/settings-search/settings-search.ts
@@ -867,6 +867,8 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
"moonshot",
"grok",
"xai",
+ "hermes",
+ "nous",
"fx",
"vercel",
"antigravity",
@@ -935,6 +937,8 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
"moonshot",
"grok",
"xai",
+ "hermes",
+ "nous",
"fx",
"vercel",
"antigravity",
diff --git a/apps/docs/content/docs/agent-integration.mdx b/apps/docs/content/docs/agent-integration.mdx
index b81f9fa1e84..2d369993527 100644
--- a/apps/docs/content/docs/agent-integration.mdx
+++ b/apps/docs/content/docs/agent-integration.mdx
@@ -25,6 +25,7 @@ Run AI coding agents in isolated workspaces. Each agent works independently with
- **Cursor Agent** - Cursor AI agent
- **Droid** - Factory's autonomous coding agent
- **Polygraph** - Meta-harness with cross-repo visibility and persistent memory
+- **Hermes** - Nous Research's autonomous coding and research agent
- **fx** - Vercel's terminal coding agent
- **Antigravity** - Google's Antigravity CLI (`agy`)
- **Kiro** - AWS's spec-driven CLI coding agent
diff --git a/apps/docs/content/docs/terminal-presets.mdx b/apps/docs/content/docs/terminal-presets.mdx
index f723335b32d..e881712899e 100644
--- a/apps/docs/content/docs/terminal-presets.mdx
+++ b/apps/docs/content/docs/terminal-presets.mdx
@@ -55,6 +55,7 @@ Pre-configured presets for popular AI agents. Defaults mirror the bundled Supers
- **vibe** - `vibe --trust --auto-approve` (Mistral's coding agent; trust grants access to `AGENTS.md` and `.agents/skills/`)
- **kimi** - `kimi` (Kimi Code CLI; prompt launches run with `kimi -p` and resume in the interactive TUI)
- **grok** - `grok --always-approve` (xAI's Grok Build CLI; prompts seed the interactive session directly)
+- **hermes** - `hermes chat --yolo` (Nous Research's Hermes Agent; prompt launches run with `-q` and continue in the interactive chat)
- **fx** - `fx` (Vercel's coding agent; prompt launches run `fx ask --auto` and resume the session in the TUI)
- **agy** - `agy --mode accept-edits` (Google's Antigravity CLI; prompt launches seed the interactive session with `-i`)
- **kiro** - `kiro-cli chat --trust-all-tools` (AWS's Kiro CLI; prompts seed the interactive session directly)
diff --git a/apps/marketing/public/app-icons/hermes.svg b/apps/marketing/public/app-icons/hermes.svg
new file mode 100644
index 00000000000..45fd164ca2b
--- /dev/null
+++ b/apps/marketing/public/app-icons/hermes.svg
@@ -0,0 +1,6 @@
+
diff --git a/apps/marketing/src/app/components/FeaturesSection/components/UniversalCompatibilityDemo/UniversalCompatibilityDemo.tsx b/apps/marketing/src/app/components/FeaturesSection/components/UniversalCompatibilityDemo/UniversalCompatibilityDemo.tsx
index ba514e2b50b..eccd78a645a 100644
--- a/apps/marketing/src/app/components/FeaturesSection/components/UniversalCompatibilityDemo/UniversalCompatibilityDemo.tsx
+++ b/apps/marketing/src/app/components/FeaturesSection/components/UniversalCompatibilityDemo/UniversalCompatibilityDemo.tsx
@@ -15,6 +15,7 @@ const AGENTS = [
{ name: "Mistral Vibe", icon: "/app-icons/vibe.svg", size: 18 },
{ name: "Kimi Code", icon: "/app-icons/kimi.svg", size: 18 },
{ name: "Grok CLI", icon: "/app-icons/grok.svg", size: 18 },
+ { name: "Hermes", icon: "/app-icons/hermes.svg", size: 18 },
{ name: "fx", icon: "/app-icons/fx.svg", size: 18 },
{ name: "Antigravity", icon: "/app-icons/agy.svg", size: 18 },
{ name: "Kiro", icon: "/app-icons/kiro.svg", size: 18 },
diff --git a/packages/shared/src/agent-command.test.ts b/packages/shared/src/agent-command.test.ts
index 6742662d957..f657d77ac7b 100644
--- a/packages/shared/src/agent-command.test.ts
+++ b/packages/shared/src/agent-command.test.ts
@@ -181,6 +181,34 @@ describe("fx agent registration", () => {
});
});
+describe("hermes agent registration", () => {
+ it("is a registered terminal agent with the right label", () => {
+ expect(AGENT_TYPES).toContain("hermes");
+ expect(AGENT_LABELS.hermes).toBe("Hermes");
+ });
+
+ it("runs prompt launches as a one-shot query and continues them in the chat", () => {
+ const command = buildAgentPromptCommand({
+ prompt: "hello",
+ randomId: "hermes-1234",
+ agent: "hermes",
+ });
+
+ expect(command).toStartWith(
+ "hermes chat --yolo -q \"$(cat <<'SUPERSET_PROMPT_hermes1234'",
+ );
+ expect(command).toEndWith('\n)" ; hermes chat --yolo -c');
+ });
+
+ it("derives host preset prompt and resume args from the base command", () => {
+ const preset = getPresetById("hermes");
+ expect(preset?.command).toBe("hermes");
+ expect(preset?.args).toEqual(["chat", "--yolo"]);
+ expect(preset?.promptArgs).toEqual(["-q"]);
+ expect(preset?.resumeArgs).toEqual(["-r"]);
+ });
+});
+
describe("grok agent registration", () => {
it("is a registered terminal agent with the right label", () => {
expect(AGENT_TYPES).toContain("grok");
diff --git a/packages/shared/src/builtin-terminal-agents.ts b/packages/shared/src/builtin-terminal-agents.ts
index 9bff7604cd9..a09222d9f59 100644
--- a/packages/shared/src/builtin-terminal-agents.ts
+++ b/packages/shared/src/builtin-terminal-agents.ts
@@ -231,6 +231,17 @@ export const BUILTIN_TERMINAL_AGENTS = [
resumeCommand: "fx resume",
nonInteractiveCommand: "fx ask --auto",
}),
+ createBuiltinTerminalAgent({
+ id: "hermes",
+ label: "Hermes",
+ description:
+ "Nous Research's autonomous agent for coding, research, and terminal workflows.",
+ command: "hermes chat --yolo",
+ promptCommand: "hermes chat --yolo -q",
+ promptCommandSuffix: "; hermes chat --yolo -c",
+ resumeCommand: "hermes chat --yolo -r",
+ nonInteractiveCommand: "hermes chat -q",
+ }),
] as const;
export type BuiltinTerminalAgentType =
diff --git a/packages/ui/src/assets/icons/preset-icons/hermes-white.svg b/packages/ui/src/assets/icons/preset-icons/hermes-white.svg
new file mode 100644
index 00000000000..45fd164ca2b
--- /dev/null
+++ b/packages/ui/src/assets/icons/preset-icons/hermes-white.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/ui/src/assets/icons/preset-icons/hermes.svg b/packages/ui/src/assets/icons/preset-icons/hermes.svg
new file mode 100644
index 00000000000..1b8bd4fa874
--- /dev/null
+++ b/packages/ui/src/assets/icons/preset-icons/hermes.svg
@@ -0,0 +1,6 @@
+
diff --git a/packages/ui/src/assets/icons/preset-icons/index.ts b/packages/ui/src/assets/icons/preset-icons/index.ts
index 509ad880bd2..f4eb3bcf998 100644
--- a/packages/ui/src/assets/icons/preset-icons/index.ts
+++ b/packages/ui/src/assets/icons/preset-icons/index.ts
@@ -13,6 +13,8 @@ import fxWhiteIcon from "./fx-white.svg";
import geminiIcon from "./gemini.svg";
import grokIcon from "./grok.svg";
import grokWhiteIcon from "./grok-white.svg";
+import hermesIcon from "./hermes.svg";
+import hermesWhiteIcon from "./hermes-white.svg";
import kimiIcon from "./kimi.svg";
import kimiWhiteIcon from "./kimi-white.svg";
import kiroIcon from "./kiro.svg";
@@ -42,6 +44,7 @@ export const PRESET_ICONS: Record = {
fx: { light: fxIcon, dark: fxWhiteIcon },
gemini: { light: geminiIcon, dark: geminiIcon },
grok: { light: grokIcon, dark: grokWhiteIcon },
+ hermes: { light: hermesIcon, dark: hermesWhiteIcon },
kimi: { light: kimiIcon, dark: kimiWhiteIcon },
kiro: { light: kiroIcon, dark: kiroIcon },
pi: { light: piIcon, dark: piWhiteIcon },
@@ -90,6 +93,8 @@ export {
geminiIcon,
grokIcon,
grokWhiteIcon,
+ hermesIcon,
+ hermesWhiteIcon,
kimiIcon,
kimiWhiteIcon,
kiroIcon,