From daae71d1a89ea5f327e6eb3a5d6c750576ca07e6 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Fri, 29 May 2026 18:10:51 +0700 Subject: [PATCH] Add Grok to the website and supported-providers docs Adds the /grok SEO landing page (and its auto-generated route/sitemap entries), the /agents directory card, and the Grok line in the ACP catalog docs, following the Grok Build provider added to the in-app catalog. --- packages/website/src/data/agent-pages.ts | 10 ++++++++++ packages/website/src/routeTree.gen.ts | 21 +++++++++++++++++++++ packages/website/src/routes/grok.tsx | 4 ++++ public-docs/supported-providers.md | 1 + 4 files changed, 36 insertions(+) create mode 100644 packages/website/src/routes/grok.tsx diff --git a/packages/website/src/data/agent-pages.ts b/packages/website/src/data/agent-pages.ts index 26902c6e1..fb5192c26 100644 --- a/packages/website/src/data/agent-pages.ts +++ b/packages/website/src/data/agent-pages.ts @@ -378,6 +378,16 @@ export const AGENT_PAGES = [ metaDescription: "Open source mobile and desktop app for Autohand AI's coding agent. Launch sessions on your machine, monitor progress, ship from anywhere.", }, + { + slug: "grok", + name: "Grok", + title: "Open source app for Grok", + subtitle: + "Run xAI's Grok Build coding agent on your machine, drive it from your phone or desktop.", + metaTitle: "Grok Mobile and Desktop App, Open Source", + metaDescription: + "Open source mobile and desktop app for xAI's Grok Build coding agent. Launch sessions on your machine, monitor progress, and ship from anywhere. Self-hosted.", + }, ] as const satisfies readonly AgentPage[]; export const AGENT_PAGE_SLUGS: readonly string[] = AGENT_PAGES.map((p) => p.slug); diff --git a/packages/website/src/routeTree.gen.ts b/packages/website/src/routeTree.gen.ts index 21fc1bdfc..26adb97ae 100644 --- a/packages/website/src/routeTree.gen.ts +++ b/packages/website/src/routeTree.gen.ts @@ -25,6 +25,7 @@ import { Route as KimiRouteImport } from "./routes/kimi"; import { Route as KiloRouteImport } from "./routes/kilo"; import { Route as JunieRouteImport } from "./routes/junie"; import { Route as HermesRouteImport } from "./routes/hermes"; +import { Route as GrokRouteImport } from "./routes/grok"; import { Route as GooseRouteImport } from "./routes/goose"; import { Route as GlmRouteImport } from "./routes/glm"; import { Route as GeminiRouteImport } from "./routes/gemini"; @@ -139,6 +140,11 @@ const HermesRoute = HermesRouteImport.update({ path: "/hermes", getParentRoute: () => rootRouteImport, } as any); +const GrokRoute = GrokRouteImport.update({ + id: "/grok", + path: "/grok", + getParentRoute: () => rootRouteImport, +} as any); const GooseRoute = GooseRouteImport.update({ id: "/goose", path: "/goose", @@ -335,6 +341,7 @@ export interface FileRoutesByFullPath { "/gemini": typeof GeminiRoute; "/glm": typeof GlmRoute; "/goose": typeof GooseRoute; + "/grok": typeof GrokRoute; "/hermes": typeof HermesRoute; "/junie": typeof JunieRoute; "/kilo": typeof KiloRoute; @@ -384,6 +391,7 @@ export interface FileRoutesByTo { "/gemini": typeof GeminiRoute; "/glm": typeof GlmRoute; "/goose": typeof GooseRoute; + "/grok": typeof GrokRoute; "/hermes": typeof HermesRoute; "/junie": typeof JunieRoute; "/kilo": typeof KiloRoute; @@ -436,6 +444,7 @@ export interface FileRoutesById { "/gemini": typeof GeminiRoute; "/glm": typeof GlmRoute; "/goose": typeof GooseRoute; + "/grok": typeof GrokRoute; "/hermes": typeof HermesRoute; "/junie": typeof JunieRoute; "/kilo": typeof KiloRoute; @@ -489,6 +498,7 @@ export interface FileRouteTypes { | "/gemini" | "/glm" | "/goose" + | "/grok" | "/hermes" | "/junie" | "/kilo" @@ -538,6 +548,7 @@ export interface FileRouteTypes { | "/gemini" | "/glm" | "/goose" + | "/grok" | "/hermes" | "/junie" | "/kilo" @@ -589,6 +600,7 @@ export interface FileRouteTypes { | "/gemini" | "/glm" | "/goose" + | "/grok" | "/hermes" | "/junie" | "/kilo" @@ -641,6 +653,7 @@ export interface RootRouteChildren { GeminiRoute: typeof GeminiRoute; GlmRoute: typeof GlmRoute; GooseRoute: typeof GooseRoute; + GrokRoute: typeof GrokRoute; HermesRoute: typeof HermesRoute; JunieRoute: typeof JunieRoute; KiloRoute: typeof KiloRoute; @@ -773,6 +786,13 @@ declare module "@tanstack/react-router" { preLoaderRoute: typeof HermesRouteImport; parentRoute: typeof rootRouteImport; }; + "/grok": { + id: "/grok"; + path: "/grok"; + fullPath: "/grok"; + preLoaderRoute: typeof GrokRouteImport; + parentRoute: typeof rootRouteImport; + }; "/goose": { id: "/goose"; path: "/goose"; @@ -1061,6 +1081,7 @@ const rootRouteChildren: RootRouteChildren = { GeminiRoute: GeminiRoute, GlmRoute: GlmRoute, GooseRoute: GooseRoute, + GrokRoute: GrokRoute, HermesRoute: HermesRoute, JunieRoute: JunieRoute, KiloRoute: KiloRoute, diff --git a/packages/website/src/routes/grok.tsx b/packages/website/src/routes/grok.tsx new file mode 100644 index 000000000..06d470c36 --- /dev/null +++ b/packages/website/src/routes/grok.tsx @@ -0,0 +1,4 @@ +import { createFileRoute } from "@tanstack/react-router"; +import { agentRouteOptions } from "~/components/agent-route"; + +export const Route = createFileRoute("/grok")(agentRouteOptions("grok")); diff --git a/public-docs/supported-providers.md b/public-docs/supported-providers.md index 31e1b84dc..11f1c8d49 100644 --- a/public-docs/supported-providers.md +++ b/public-docs/supported-providers.md @@ -41,6 +41,7 @@ Pick any of these from the in-app provider catalog. Each entry is a one-click in - [GitHub Copilot](https://github.com/features/copilot/cli/), GitHub's AI pair programmer via ACP. - [GLM Agent](https://github.com/stefandevo/glm-acp-agent), Zhipu AI's GLM coding agent. - [goose](https://block.github.io/goose/), Block's local open-source AI agent. +- [Grok](https://docs.x.ai/build/overview), xAI's Grok Build agentic coding CLI. - [Hermes Agent](https://hermes-agent.nousresearch.com/docs/user-guide/features/acp), Nous Research's self-improving agent. - [Junie](https://junie.jetbrains.com/docs/junie-cli-acp.html), JetBrains' coding agent. - [Kilo Code](https://kilo.ai/docs/code-with-ai/platforms/cli), open-source coding agent.