Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,7 @@ Superset works with any CLI-based coding agent, including:
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
| <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 |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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" },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -867,6 +867,8 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
"moonshot",
"grok",
"xai",
"hermes",
"nous",
"fx",
"vercel",
"antigravity",
Expand Down Expand Up @@ -935,6 +937,8 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
"moonshot",
"grok",
"xai",
"hermes",
"nous",
"fx",
"vercel",
"antigravity",
Expand Down
1 change: 1 addition & 0 deletions apps/docs/content/docs/agent-integration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions apps/docs/content/docs/terminal-presets.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
6 changes: 6 additions & 0 deletions apps/marketing/public/app-icons/hermes.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -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 },
Expand Down
28 changes: 28 additions & 0 deletions packages/shared/src/agent-command.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
11 changes: 11 additions & 0 deletions packages/shared/src/builtin-terminal-agents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
Expand Down
6 changes: 6 additions & 0 deletions packages/ui/src/assets/icons/preset-icons/hermes-white.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions packages/ui/src/assets/icons/preset-icons/hermes.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions packages/ui/src/assets/icons/preset-icons/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand Down Expand Up @@ -42,6 +44,7 @@ export const PRESET_ICONS: Record<string, PresetIconSet> = {
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 },
Expand Down Expand Up @@ -90,6 +93,8 @@ export {
geminiIcon,
grokIcon,
grokWhiteIcon,
hermesIcon,
hermesWhiteIcon,
kimiIcon,
kimiWhiteIcon,
kiroIcon,
Expand Down
Loading