diff --git a/packages/app/src/assets/acp-provider-icons.ts b/packages/app/src/assets/acp-provider-icons.ts
index 296721622..dc0462777 100644
--- a/packages/app/src/assets/acp-provider-icons.ts
+++ b/packages/app/src/assets/acp-provider-icons.ts
@@ -70,6 +70,8 @@ export const ACP_PROVIDER_ICON_SVGS = {
'\n\n',
stakpak:
'\n',
+ traecli:
+ '\n',
vtcode:
'\n',
} as const;
diff --git a/packages/app/src/components/provider-icon-name.test.ts b/packages/app/src/components/provider-icon-name.test.ts
index 956e40d0b..fabfbd25e 100644
--- a/packages/app/src/components/provider-icon-name.test.ts
+++ b/packages/app/src/components/provider-icon-name.test.ts
@@ -18,6 +18,7 @@ describe("resolveProviderIconName", () => {
it("returns the catalog identifier for ACP catalog provider ids that ship an icon", () => {
expect(resolveProviderIconName("amp-acp")).toEqual({ kind: "catalog", id: "amp-acp" });
expect(resolveProviderIconName("gemini")).toEqual({ kind: "catalog", id: "gemini" });
+ expect(resolveProviderIconName("traecli")).toEqual({ kind: "catalog", id: "traecli" });
});
it("falls back to the bot icon for unknown custom providers", () => {
diff --git a/packages/app/src/data/acp-provider-catalog.ts b/packages/app/src/data/acp-provider-catalog.ts
index 95451bf55..b987c590e 100644
--- a/packages/app/src/data/acp-provider-catalog.ts
+++ b/packages/app/src/data/acp-provider-catalog.ts
@@ -335,6 +335,15 @@ const CATALOG_DATA = [
installLink: "https://stakpak.dev/",
command: ["stakpak", "acp"],
},
+ {
+ id: "traecli",
+ title: "TRAE CLI",
+ description: "ByteDance's official TRAE coding agent with native ACP support",
+ version: "manual",
+ iconId: "traecli",
+ installLink: "https://docs.trae.cn/cli",
+ command: ["traecli", "acp", "serve"],
+ },
{
id: "vtcode",
title: "VT Code",
diff --git a/packages/app/src/hooks/use-acp-provider-catalog.test.ts b/packages/app/src/hooks/use-acp-provider-catalog.test.ts
index 7d7e6c2cf..5128b9533 100644
--- a/packages/app/src/hooks/use-acp-provider-catalog.test.ts
+++ b/packages/app/src/hooks/use-acp-provider-catalog.test.ts
@@ -43,6 +43,7 @@ describe("ACP provider catalog", () => {
expect(findProvider("junie").command).toEqual(["junie", "--acp", "true"]);
expect(findProvider("kiro").command).toEqual(["kiro-cli", "acp"]);
expect(findProvider("poolside").command).toEqual(["pool", "acp"]);
+ expect(findProvider("traecli").command).toEqual(["traecli", "acp", "serve"]);
});
it("maps a catalog entry to the daemon provider config patch", () => {
diff --git a/packages/protocol/src/provider-icon-names.ts b/packages/protocol/src/provider-icon-names.ts
index 43c65685d..c471a68c6 100644
--- a/packages/protocol/src/provider-icon-names.ts
+++ b/packages/protocol/src/provider-icon-names.ts
@@ -41,6 +41,7 @@ export const ACP_PROVIDER_ICON_NAMES = [
"qwen-code",
"sigit",
"stakpak",
+ "traecli",
"vtcode",
];
diff --git a/public-docs/supported-providers.md b/public-docs/supported-providers.md
index 1b8395682..57462f38d 100644
--- a/public-docs/supported-providers.md
+++ b/public-docs/supported-providers.md
@@ -56,6 +56,7 @@ Pick any of these from the in-app provider catalog. Each entry is a one-click in
- [Qwen Code](https://qwenlm.github.io/qwen-code-docs/en/users/overview), Alibaba's Qwen coding assistant.
- [siGit Code](https://github.com/getsigit/sigit), local-first coding agent with optional on-device LLM.
- [Stakpak](https://stakpak.dev/), Rust-based DevOps agent.
+- [TRAE CLI](https://docs.trae.cn/cli), ByteDance's official TRAE coding agent.
- [VT Code](https://github.com/vinhnx/VTCode/blob/main/docs/guides/zed-acp.md), open-source multi-provider coding agent.
The in-app catalog is the canonical, version-pinned source. Anything not listed here can still be added manually, see [Custom providers](/docs/custom-providers).