diff --git a/apps/marketing/.gitignore b/apps/marketing/.gitignore index fe5e7763a2..af4f1d60ba 100644 --- a/apps/marketing/.gitignore +++ b/apps/marketing/.gitignore @@ -23,3 +23,4 @@ pnpm-debug.log* # jetbrains setting folder .idea/ .vercel +.preview/ diff --git a/apps/marketing/src/components/variants/copy-prompt.astro b/apps/marketing/src/components/variants/copy-prompt.astro new file mode 100644 index 0000000000..120e8354fd --- /dev/null +++ b/apps/marketing/src/components/variants/copy-prompt.astro @@ -0,0 +1,36 @@ +--- +// The "Copy setup prompt" button: a dashed ghost button beside the primary, +// carrying the three agent marks. Copies `setupPrompt`; the click handler +// lives in pages/index.astro. +import { setupPrompt } from "../../content/site-copy"; + +const logos = import.meta.glob("../../assets/logos/*.svg", { + eager: true, + query: "?url", + import: "default", +}); +const logo = (name: string): string => { + const hit = Object.entries(logos).find(([k]) => k.endsWith(`/${name}.svg`)); + if (!hit) throw new Error(`missing logo ${name}`); + return hit[1]; +}; +const marks = ["claude", "codex", "cursor"]; + + +--- + + diff --git a/apps/marketing/src/components/variants/doc-body.astro b/apps/marketing/src/components/variants/doc-body.astro index 60a842abd9..7e48ba3906 100644 --- a/apps/marketing/src/components/variants/doc-body.astro +++ b/apps/marketing/src/components/variants/doc-body.astro @@ -1,32 +1,19 @@ --- // Document-style homepage body. Reads like a short paper about the product: // one modest headline, plain first-person prose, six beats separated by -// hairlines, the two demos kept as numbered figures, and one way to start. +// hairlines, the two demos kept as numbered figures, and one door in: Cloud, +// with a setup prompt for visitors who already have an agent open. // Sits inside the rail layout; the rail's "On this page" list points at the // section ids below. import { AnimatedBeamDemo } from "../animated-beam-demo"; import { ContextBloatDemo } from "../context-bloat-demo"; -import { setupPrompt } from "../../content/site-copy"; import Testimonials from "./testimonials.astro"; +import IntroSteps from "./intro-steps.astro"; +import CopyPrompt from "./copy-prompt.astro"; import "../../styles/variants/doc.css"; // Avatar goes through Vite so it ships as a hashed asset; new /public files // are not picked up by the deploy pipeline. import rhysAvatar from "../../assets/rhys-sullivan.jpg"; -// Brand marks for the hover reveals in the intro steps. -const logos = import.meta.glob("../../assets/logos/*.svg", { - eager: true, - query: "?url", - import: "default", -}); -const logo = (name: string): string => { - const hit = Object.entries(logos).find(([k]) => k.endsWith(`/${name}.svg`)); - if (!hit) throw new Error(`missing logo ${name}`); - return hit[1]; -}; -const toolLogos = ["github", "linear", "sentry", "stripe", "notion", "slack", "jira", "gmail"]; -const agentLogos = ["claude", "codex", "cursor", "chatgpt", "gemini", "hermes", "copilot", "windsurf", "opencode", "zed", "grok"]; -// The three marks on the copy button; the full list would crowd it. -const agentLogosShort = ["claude", "codex", "cursor"]; const X_URL = "https://x.com/RhysSullivan"; interface Props { @@ -39,91 +26,15 @@ const { gh } = Astro.props; {/* ── Intro ── */}

Executor is an MCP gateway.

-
    -
  1. - 01 - - Connect{" "} - - everything - - - {" "}to Executor. - -
  2. -
  3. - 02 - - Give{" "} - - your agent - - - {" "}the Executor tool. - -
  4. -
  5. - 03 - That's it.{" "}Get started. -
  6. -
-

One MCP. All your accounts.

-
- - - -
-
-
-

Sign in, point your agent at one URL, done. Free for up to three people and 100,000 executions a month.

-
Start on Cloud
-
- - + +

One MCP. All your accounts. Free for up to three people.

+ +

+ Rather keep it on your machine? Desktop, CLI, or self-hosted ↓ +

@@ -305,29 +216,6 @@ const { gh } = Astro.props; - -