> ## Documentation Index
> Fetch the complete documentation index at: https://site.aspect.build/llms.txt
> Use this file to discover all available pages before exploring further.

# Remote Build Execution for Bazel

> Parallelize Bazel build actions and tests across an auto-scaling worker fleet in your own cloud account. Workers scale up to demand and back down to zero when idle. REv2-compliant, with custom machine types and hardware platforms.

export const MarketingPage = () => <div className="marketing-page-marker" style={{
  display: "none"
}} />;

export const CTA = ({title, subtitle, primaryCta, primaryHref = "#", secondaryCta, secondaryHref = "#"}) => <section className="w-full flex justify-center px-4 py-16 md:py-20">
    <div className="w-full rounded-2xl text-white flex flex-col md:flex-row items-center justify-center gap-10 md:gap-16 p-8 md:p-12 text-center md:text-left" style={{
  maxWidth: "1140px",
  background: "linear-gradient(135deg, #1a3a5c 0%, #176ACC 100%)"
}}>
      <div>
        <h2 className="text-2xl md:text-3xl font-semibold tracking-tight">{title}</h2>
        {subtitle && <div className="mt-3 text-blue-100 text-base">{subtitle}</div>}
      </div>
      <div className="flex flex-wrap gap-3 shrink-0 justify-center">
        {primaryCta && <a href={primaryHref} className="inline-flex items-center px-6 py-3 rounded-lg bg-white text-blue-700 font-semibold hover:bg-blue-50 transition whitespace-nowrap shadow-sm">
            {primaryCta}
          </a>}
        {secondaryCta && <a href={secondaryHref} className={`inline-flex items-center px-6 py-3 rounded-lg border border-blue-300/50 text-white font-semibold hover:bg-blue-700/30 transition whitespace-nowrap ${secondaryHref === "/request-demo" ? "demo-gradient-btn" : ""}`}>
            {secondaryCta}
          </a>}
      </div>
    </div>
  </section>;

export const CustomerLogos = ({title = "TRUSTED BY LEADING ENGINEERING TEAMS", children}) => <section className="w-full flex justify-center px-4 py-10">
    <div className="w-full" style={{
  maxWidth: "1140px"
}}>
      {title && <div className="block text-center text-xs font-semibold tracking-widest text-zinc-400 dark:text-zinc-500 uppercase mb-12">
          {title}
        </div>}
      <div className="customer-logos-grid flex flex-wrap justify-center items-center gap-x-10 gap-y-8 md:gap-x-14">
        {children}
      </div>
    </div>
  </section>;

export const FeatureCard = ({title, description, href, children}) => {
  const Tag = href ? "a" : "div";
  const tagProps = href ? {
    href
  } : {};
  return <Tag {...tagProps} className={`group flex flex-col p-6 rounded-xl border border-zinc-200 dark:border-zinc-700/60 bg-white dark:bg-zinc-800/50 ${href ? "hover:shadow-md hover:border-blue-200 dark:hover:border-blue-700 transition-all duration-200" : ""}`}>
      {children && <div className="feature-card-icon mb-5 flex items-center justify-center rounded-xl bg-blue-50 dark:bg-blue-900/20 border border-blue-100 dark:border-blue-800/30" style={{
    width: "4rem",
    height: "4rem"
  }}>
          {children}
        </div>}
      <h3 className={`text-lg font-semibold text-zinc-900 dark:text-white ${href ? "group-hover:text-blue-600 dark:group-hover:text-blue-400 transition-colors" : ""}`}>
        {title}
      </h3>
      {description && <p className="feature-card-desc text-sm text-zinc-500 dark:text-zinc-400 leading-relaxed">{description}</p>}
    </Tag>;
};

export const FeatureGrid3 = ({children}) => <div className="marketing-grid-3">{children}</div>;

export const SectionHeader = ({title, subtitle, centered = true, label}) => <div className={`mb-12 ${centered ? "text-center" : ""}`}>
    {label && <p className="text-xs font-semibold tracking-widest text-blue-600 dark:text-blue-400 uppercase mb-3">
        {label}
      </p>}
    <h2 className="text-4xl md:text-5xl font-semibold text-zinc-900 dark:text-white tracking-tight">{title}</h2>
    {subtitle && <div className={`subtitle-gap text-lg md:text-xl text-zinc-500 dark:text-zinc-300 leading-relaxed ${centered ? "mx-auto" : ""}`} style={{
  marginTop: "1rem",
  maxWidth: centered ? "700px" : "none"
}}>
        {subtitle}
      </div>}
  </div>;

export const Section = ({children, className = "", gray = false, dark = false, id}) => <section id={id} className={`w-full flex justify-center px-4 py-16 md:py-24 ${gray ? "bg-gray-50 dark:bg-zinc-900" : dark ? "bg-zinc-900 dark:bg-zinc-950" : ""} ${className}`}>
    <div className="w-full" style={{
  maxWidth: "1140px"
}}>
      {children}
    </div>
  </section>;

export const Hero = ({title, subtitle, badge, primaryCta, primaryHref = "#", secondaryCta, secondaryHref = "#", centered = true, children}) => <section className="w-full flex justify-center px-4 pt-16 pb-16 md:pt-24 md:pb-24" style={{
  background: "linear-gradient(180deg, var(--hero-gradient-start, #f8fafc) 0%, var(--hero-gradient-end, #ffffff) 100%)"
}}>
    <div className="w-full" style={{
  maxWidth: "1140px"
}}>
      {centered && !children ? <div className="flex flex-col items-center text-center">
          {badge && <div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-blue-50 dark:bg-blue-900/30 border border-blue-200 dark:border-blue-700 text-blue-700 dark:text-blue-300 text-sm font-medium mb-6">
              {badge}
            </div>}
          <h1 className="text-4xl md:text-5xl font-semibold text-zinc-900 dark:text-white leading-tight tracking-tight" style={{
  maxWidth: "820px"
}}>
            {String(title).split(/\\n|\n/).map((line, i) => i ? [<br key={i} />, line] : line)}
          </h1>
          {subtitle && <div className="subtitle-gap text-lg md:text-xl text-zinc-500 dark:text-zinc-300 leading-relaxed" style={{
  marginTop: "1rem",
  maxWidth: "600px"
}}>
              {subtitle}
            </div>}
          <div className="flex flex-wrap gap-3 mt-10 justify-center">
            {primaryCta && <a href={primaryHref} className="inline-flex items-center px-6 py-3 rounded-lg bg-blue-600 text-white font-semibold hover:bg-blue-700 transition shadow-sm">
                {primaryCta}
              </a>}
            {secondaryCta && <a href={secondaryHref} className={`inline-flex items-center px-6 py-3 rounded-lg border border-zinc-300 dark:border-zinc-600 text-zinc-700 dark:text-zinc-200 font-semibold hover:bg-zinc-50 dark:hover:bg-zinc-800 transition ${secondaryHref === "/request-demo" ? "demo-gradient-btn" : ""}`}>
                {secondaryCta}
              </a>}
          </div>
        </div> : <div className="flex flex-col md:flex-row items-center gap-10 md:gap-16">
          <div className="flex-1 min-w-0">
            {badge && <div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-blue-50 dark:bg-blue-900/30 border border-blue-200 dark:border-blue-700 text-blue-700 dark:text-blue-300 text-sm font-medium mb-6">
                {badge}
              </div>}
            <h1 className="text-4xl md:text-5xl font-semibold text-zinc-900 dark:text-white leading-tight tracking-tight">
            {String(title).split(/\\n|\n/).map((line, i) => i ? [<br key={i} />, line] : line)}
          </h1>
            {subtitle && <div className="subtitle-gap text-lg md:text-xl text-zinc-500 dark:text-zinc-300 leading-relaxed" style={{
  marginTop: "1rem"
}}>
                {subtitle}
              </div>}
            <div className="flex flex-wrap gap-3 mt-8">
              {primaryCta && <a href={primaryHref} className="inline-flex items-center px-6 py-3 rounded-lg bg-blue-600 text-white font-semibold hover:bg-blue-700 transition shadow-sm">
                  {primaryCta}
                </a>}
              {secondaryCta && <a href={secondaryHref} className={`inline-flex items-center px-6 py-3 rounded-lg border border-zinc-300 dark:border-zinc-600 text-zinc-700 dark:text-zinc-200 font-semibold hover:bg-zinc-50 dark:hover:bg-zinc-800 transition ${secondaryHref === "/request-demo" ? "demo-gradient-btn" : ""}`}>
                  {secondaryCta}
                </a>}
            </div>
          </div>
          {children && <div className="flex-1 min-w-0 hero-image">
              {children}
            </div>}
        </div>}
    </div>
  </section>;

<MarketingPage />

<Hero title="Remote Build Execution" subtitle="Parallelize build actions and test runs across an auto-scaling worker fleet in your own cloud account. Workers scale up to demand and back down to zero when idle, so you only pay for compute while building. Built into every Aspect Workflows deployment, ready when your team is." primaryCta="Start a Free Trial" primaryHref="/trial" secondaryCta="Request a Demo" secondaryHref="/request-demo" centered={false} />

<Section>
  <SectionHeader title="How RBE Works" subtitle="Bazel's scheduler already maximizes parallelism on a single machine. RBE removes the single-machine ceiling: actions are dispatched to a remote worker fleet, so a build that would queue behind local cores fans out across as many machines as the work demands." />

  <FeatureGrid3>
    <FeatureCard title="Simple configuration" description="Workflows wires Bazel to the execution cluster for you. Turning RBE on is a config change, not a migration project.">
      <img noZoom src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/images/marketing/icons/setting.svg?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=87006d8dc92b68c74a1d8886c7d0c123" alt="" width="24" height="24" data-path="images/marketing/icons/setting.svg" />
    </FeatureCard>

    <FeatureCard title="Auto-scaling workers" description="The fleet scales up to demand and back down to zero when idle, so you pay nothing for execution capacity you aren't using. Action deduplication means identical work in concurrent builds executes once.">
      <img noZoom src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/images/marketing/icons/Runners_1.svg?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=d548de73f5e999a31a89a51da6112abf" alt="" width="32" height="32" data-path="images/marketing/icons/Runners_1.svg" />
    </FeatureCard>

    <FeatureCard title="Custom images and machine types" description="Pick instance types per platform and bring your own container image. Each platform supports multiple worker size classes, and actions are matched to the right size class and memory automatically: big actions get big machines, small actions stay on inexpensive ones. Docker-based tests are fully supported on workers.">
      <img noZoom src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/images/marketing/icons/customizable.svg?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=1aa79204a9a6914dce58770845dd5de7" alt="" width="48" height="48" data-path="images/marketing/icons/customizable.svg" />
    </FeatureCard>

    <FeatureCard title="Hardware platforms" description="Define multiple RBE platforms side by side, just like runner groups: each with its own instance type, giving you full control over arch, CPU, memory, NVMe, and GPUs per platform. Route compilation to a standard fleet and GPU tests to GPU workers.">
      <img noZoom src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/images/marketing/icons/cloud-server.svg?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=6415fbbb2037813919f53478e83b9cbd" alt="" width="24" height="24" data-path="images/marketing/icons/cloud-server.svg" />
    </FeatureCard>

    <FeatureCard title="REv2 standard protocol" description="Fully compliant with the Bazel Remote Execution Protocol v2. No proprietary client, no lock-in.">
      <img noZoom src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/images/marketing/icons/chain.svg?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=eb48ca77026766b251216ae33176625f" alt="" width="40" height="40" data-path="images/marketing/icons/chain.svg" />
    </FeatureCard>

    <FeatureCard title="Network isolation" description="Executors run inside your VPC with your security posture. Source code and artifacts never leave your network.">
      <img noZoom src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/images/marketing/icons/protect.svg?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=af5818d5725923799e54382c188d5256" alt="" width="40" height="40" data-path="images/marketing/icons/protect.svg" />
    </FeatureCard>
  </FeatureGrid3>
</Section>

<Section gray>
  <div className="max-w-3xl mx-auto text-center space-y-6">
    <div className="h-px bg-zinc-300 dark:bg-zinc-600 w-full" />

    <p className="text-lg text-zinc-700 dark:text-zinc-300 italic leading-relaxed">
      RBE is powerful, but it's rarely the first step. Warm, Bazel-tuned CI runners with a remote cache deliver most of the speedup for most teams, with none of the migration.
    </p>

    <p className="text-lg text-zinc-700 dark:text-zinc-300 italic leading-relaxed">
      RBE is in your deployment from day one for when you're ready for it. Turn it on at your own pace, with Aspect engineers tuning it under our SLA.
    </p>

    <div className="h-px bg-zinc-300 dark:bg-zinc-600 w-full" />

    <p className="text-base text-zinc-500 dark:text-zinc-400">
      Not there yet? Start with <a href="/platform/ci-runners" className="text-blue-600 dark:text-blue-400 font-semibold hover:underline">CI Runners</a> and the <a href="/platform/remote-cache" className="text-blue-600 dark:text-blue-400 font-semibold hover:underline">Remote Cache</a>.
    </p>
  </div>
</Section>

<Section>
  <SectionHeader title="Self-hosted on your cloud" subtitle="The execution fleet runs in your own AWS or GCP account, fully managed by Aspect engineers. You pay your cloud provider for compute; we never bill for usage." />

  <div className="customer-logos-grid flex flex-wrap justify-center items-center gap-x-14 gap-y-8 py-4">
    <img noZoom src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/images/marketing/cloud/aws.svg?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=5a64667baf8f5006d9f63baef181286b" alt="AWS" className="customer-logo" width="81" height="49" data-path="images/marketing/cloud/aws.svg" />

    <img noZoom src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/images/marketing/cloud/google-cloud.png?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=512eb90a4decf03fd39a9842ff56a9b1" alt="Google Cloud" className="customer-logo" width="518" height="96" data-path="images/marketing/cloud/google-cloud.png" />
  </div>
</Section>

<CTA title="Adopt RBE at your own pace" subtitle="Remote execution ships in every Aspect Workflows deployment. Turn it on when you're ready." primaryCta="Start a Free Trial" primaryHref="/trial" secondaryCta="Request a Demo" secondaryHref="/request-demo" />
