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 @@ -55,6 +55,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 |
| [OpenCode](https://github.com/opencode-ai/opencode) | Fully supported |
| [Pi](https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent) | Fully supported |
| Any CLI agent | Will work |

If it runs in a terminal, it runs on Superset
Expand Down
1 change: 1 addition & 0 deletions apps/desktop/src/lib/trpc/routers/settings/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ const DEFAULT_PRESET_AGENTS = [
"codex",
"copilot",
"opencode",
"pi",
"gemini",
] as const;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -502,6 +502,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
"superset chat",
"claude",
"codex",
"pi",
],
},
{
Expand All @@ -518,6 +519,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
"codex",
"gemini",
"opencode",
"pi",
"copilot",
"cursor",
],
Expand Down Expand Up @@ -572,6 +574,7 @@ export const SETTINGS_ITEMS: SettingsItem[] = [
"gemini",
"cursor",
"opencode",
"pi",
"ai",
"assistant",
],
Expand Down
13 changes: 13 additions & 0 deletions apps/desktop/src/shared/utils/agent-settings.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@ describe("resolveAgentConfigs", () => {
taskPromptTemplate: "Chat {{slug}}",
});
});

test("includes pi as a built-in terminal config", () => {
const pi = resolveAgentConfigs({}).find((preset) => preset.id === "pi");

expect(pi).toMatchObject({
id: "pi",
kind: "terminal",
label: "Pi",
command: "pi",
promptCommand: "pi",
enabled: true,
});
});
});

describe("createOverrideEnvelopeWithPatch", () => {
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 @@ -14,6 +14,7 @@ Run AI coding agents in isolated workspaces. Each agent works independently with
- **Claude Code** - Anthropic's CLI
- **Codex** - OpenAI's assistant
- **OpenCode** - Open-source alternative
- **Pi** - Minimal terminal coding harness
- **Gemini CLI** - Google's CLI agent
- **Cursor Agent** - Cursor AI agent

Expand Down
4 changes: 2 additions & 2 deletions apps/docs/content/docs/mcp.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Superset provides an [MCP (Model Context Protocol)](https://modelcontextprotocol
| **Workspaces** | Create, update, switch, delete, list, navigate workspaces |
| **Devices** | List devices, projects, and app context |
| **Organization** | List members and task statuses |
| **AI Sessions** | Start autonomous AI agent sessions (Claude, Codex, Gemini, OpenCode, Copilot, Cursor Agent) and subagents |
| **AI Sessions** | Start autonomous AI agent sessions (Claude, Codex, Gemini, OpenCode, Pi, Copilot, Cursor Agent) and subagents |

## Setup

Expand Down Expand Up @@ -239,7 +239,7 @@ API keys grant full access to your organization. Keep them secret and never comm

| Tool | Description |
|------|-------------|
| `start_agent_session` | Start an autonomous AI agent session for a task. Supports multiple agents: Claude, Codex, Gemini, OpenCode, Copilot, and Cursor Agent (defaults to Claude). Launches the agent with task context in the specified workspace. When `paneId` is provided, adds a new terminal pane to the tab containing that pane (subagent behavior) instead of initializing the workspace. |
| `start_agent_session` | Start an autonomous AI agent session for a task. Supports multiple agents: Claude, Codex, Gemini, OpenCode, Pi, Copilot, and Cursor Agent (defaults to Claude). Launches the agent with task context in the specified workspace. When `paneId` is provided, adds a new terminal pane to the tab containing that pane (subagent behavior) instead of initializing the workspace. |

## Chat Integration

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 @@ -46,6 +46,7 @@ Pre-configured presets for popular AI agents:
- **claude** - `claude --dangerously-skip-permissions`
- **codex** - Full danger mode with high reasoning effort
- **gemini** - `gemini --yolo`
- **pi** - `pi`
- **cursor-agent** - Cursor AI agent
- **opencode** - Open-source AI coding agent

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ const inputSchemaShape = {
.enum(STARTABLE_AGENT_TYPES)
.optional()
.describe(
'AI agent to use: "claude", "codex", "gemini", "opencode", "copilot", "cursor-agent", or "superset-chat". Defaults to "claude".',
'AI agent to use: "claude", "codex", "gemini", "opencode", "pi", "copilot", "cursor-agent", or "superset-chat". Defaults to "claude".',
),
};

Expand Down
11 changes: 11 additions & 0 deletions packages/shared/src/agent-command.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,15 @@ describe("buildAgentPromptCommand", () => {
"claude --dangerously-skip-permissions \"$(cat <<'SUPERSET_PROMPT_abcdefgh'",
);
});

it("uses pi interactive mode for prompt launches", () => {
const command = buildAgentPromptCommand({
prompt: "hello",
randomId: "pi-1234",
agent: "pi",
});

expect(command).toStartWith("pi \"$(cat <<'SUPERSET_PROMPT_pi1234'");
expect(command).not.toContain("pi -p");
});
});
7 changes: 7 additions & 0 deletions packages/shared/src/agent-command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export const AGENT_TYPES = [
"codex",
"gemini",
"opencode",
"pi",
"copilot",
"cursor-agent",
] as const;
Expand All @@ -19,6 +20,7 @@ export const AGENT_LABELS: Record<AgentType, string> = {
codex: "Codex",
gemini: "Gemini",
opencode: "OpenCode",
pi: "Pi",
copilot: "Copilot",
"cursor-agent": "Cursor Agent",
};
Expand All @@ -30,6 +32,7 @@ export const AGENT_PRESET_COMMANDS: Record<AgentType, string[]> = {
],
gemini: ["gemini --yolo"],
opencode: ["opencode"],
pi: ["pi"],
copilot: ["copilot --allow-all"],
"cursor-agent": ["cursor-agent"],
};
Expand All @@ -42,6 +45,7 @@ export const AGENT_PRESET_DESCRIPTIONS: Record<AgentType, string> = {
gemini:
"Google's open-source terminal agent for coding, problem-solving, and task work.",
opencode: "Open-source coding agent for the terminal, IDE, and desktop.",
pi: "Minimal terminal coding harness for flexible coding workflows.",
copilot:
"GitHub's coding agent for planning, editing, and building in your repo.",
"cursor-agent":
Expand Down Expand Up @@ -70,6 +74,9 @@ export const AGENT_PROMPT_COMMANDS: Record<
opencode: {
command: "opencode --prompt",
},
pi: {
command: AGENT_PRESET_COMMANDS.pi[0] ?? "pi",
},
copilot: {
command: "copilot -i --allow-all",
suffix: "--yolo",
Expand Down
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 @@ -7,6 +7,8 @@ import cursorAgentIcon from "./cursor.svg";
import geminiIcon from "./gemini.svg";
import opencodeIcon from "./opencode.svg";
import opencodeWhiteIcon from "./opencode-white.svg";
import piIcon from "./pi.svg";
import piWhiteIcon from "./pi-white.svg";
import supersetIcon from "./superset.svg";

export interface PresetIconSet {
Expand All @@ -19,6 +21,7 @@ export const PRESET_ICONS: Record<string, PresetIconSet> = {
codex: { light: codexIcon, dark: codexWhiteIcon },
copilot: { light: copilotIcon, dark: copilotWhiteIcon },
gemini: { light: geminiIcon, dark: geminiIcon },
pi: { light: piIcon, dark: piWhiteIcon },
superset: { light: supersetIcon, dark: supersetIcon },
"superset-chat": { light: supersetIcon, dark: supersetIcon },
"cursor-agent": { light: cursorAgentIcon, dark: cursorAgentIcon },
Expand All @@ -45,5 +48,7 @@ export {
geminiIcon,
opencodeIcon,
opencodeWhiteIcon,
piIcon,
piWhiteIcon,
supersetIcon,
};
20 changes: 20 additions & 0 deletions packages/ui/src/assets/icons/preset-icons/pi-white.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions packages/ui/src/assets/icons/preset-icons/pi.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading