> ## Documentation Index
> Fetch the complete documentation index at: https://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 on Aspect Enterprise, hosted by Aspect or 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 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 FeatureGrid2 = ({children}) => <div className="marketing-grid-2">{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-3xl 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, eyebrow, heroImageClassName = "", primaryCta, primaryHref = "#", secondaryCta, secondaryHref = "#", note, 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>}
          {eyebrow && <div className="text-xs font-semibold tracking-widest uppercase text-blue-600 dark:text-blue-400 mb-4">
              {eyebrow}
            </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>}
          {(primaryCta || secondaryCta) && <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>}
          {note && <div className="mt-4 text-sm text-center text-zinc-500 dark:text-zinc-400">{note}</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>}
            {eyebrow && <div className="text-xs font-semibold tracking-widest uppercase text-blue-600 dark:text-blue-400 mb-4">
                {eyebrow}
              </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>
            {note && <div className="mt-4 text-sm text-zinc-500 dark:text-zinc-400">{note}</div>}
          </div>
          {children && <div className={`flex-1 min-w-0 hero-image ${heroImageClassName}`}>
              {children}
            </div>}
        </div>}
    </div>
  </section>;

<MarketingPage />

<Hero eyebrow="Remote execution" title={"Fan your build out\npast one machine"} subtitle="Actions run in parallel on Linux (x86, Arm, GPU) and macOS workers, hosted by Aspect or in your AWS or GCP account." primaryCta="Start a 30-day trial" primaryHref="/trial" secondaryCta="Request a demo" secondaryHref="/request-demo" centered={false}>
  <img noZoom src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/images/marketing/product/Remote-img_1.avif?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=c3f0392787bfb2fea1eec4f420cdb166" alt="Remote build execution" width="1296" height="720" data-path="images/marketing/product/Remote-img_1.avif" />
</Hero>

<Section gray>
  <SectionHeader title="How remote execution works" subtitle="Bazel's scheduler already maximizes parallelism on a single machine. Remote execution 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." />

  <FeatureGrid2>
    <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="Workers on your own hardware" description="Machines you run yourself join the deployment's fleet as remote execution workers, for any worker type, including your own Macs.">
      <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 in an isolated deployment no other customer shares. Self-hosted, they run inside your VPC, so 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>
  </FeatureGrid2>
</Section>

<Section>
  <div className="flex flex-col md:flex-row items-center gap-10 md:gap-16 py-10">
    <div className="flex-1 min-w-0 space-y-8">
      <div>
        <h3 className="text-2xl md:text-3xl font-bold text-zinc-900 dark:text-white tracking-tight">Worker images you control</h3>
        <div className="mt-4 text-zinc-500 dark:text-zinc-300 leading-relaxed text-base">Bring a customizable OCI image per platform, with several worker size classes on each.</div>
      </div>

      <div>
        <h3 className="text-2xl md:text-3xl font-bold text-zinc-900 dark:text-white tracking-tight">Docker-in-Docker actions</h3>
        <div className="mt-4 text-zinc-500 dark:text-zinc-300 leading-relaxed text-base">Container-based tests run on workers as they do locally.</div>
      </div>

      <div>
        <h3 className="text-2xl md:text-3xl font-bold text-zinc-900 dark:text-white tracking-tight">Hardware platforms</h3>
        <div className="mt-4 text-zinc-500 dark:text-zinc-300 leading-relaxed text-base">Define multiple remote execution platforms side by side, each with its own instance type, for control over arch, CPU, memory, NVMe and GPUs per platform. Route compilation to a standard fleet and GPU tests to GPU workers.</div>
      </div>
    </div>

    <div className="flex-1 min-w-0 feature-showcase-image">
      <img noZoom src="https://mintcdn.com/aspectbuild/ZGBmuFf3o3yTed6U/images/marketing/illustrations/aspect-control.svg?fit=max&auto=format&n=ZGBmuFf3o3yTed6U&q=85&s=ea0ba8ad293a69bf76134685c7a9b20f" alt="Worker configuration: instance type, sizing and options per platform" className="transparent-showcase" width="720" height="480" data-path="images/marketing/illustrations/aspect-control.svg" />
    </div>
  </div>
</Section>

<Section gray>
  <SectionHeader title="When to adopt" subtitle="Warm, Bazel-tuned CI runners with a remote cache deliver most of the speedup for most teams. Remote execution is in your deployment from day one, and turning it on later is a configuration change on the same deployment." />

  <div className="ladder">
    <div>
      <div className="ladder-step">1</div>

      <div className="flex flex-col flex-1 p-6 rounded-xl border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-zinc-800">
        <h3 className="text-lg font-semibold text-zinc-900 dark:text-white">Remote cache</h3>
        <div className="mt-2 text-sm text-zinc-600 dark:text-zinc-400">One cache shared by CI and every developer.</div>
        <div className="mt-auto pt-4"><a href="/platform/remote-cache" className="text-sm text-blue-600 dark:text-blue-400 font-semibold hover:underline">Remote cache →</a></div>
      </div>
    </div>

    <div className="ladder-label">Most of the speedup</div>

    <div>
      <div className="ladder-step">2</div>

      <div className="flex flex-col flex-1 p-6 rounded-xl border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-zinc-800">
        <h3 className="text-lg font-semibold text-zinc-900 dark:text-white">CI runners</h3>
        <div className="mt-2 text-sm text-zinc-600 dark:text-zinc-400">Warm, Bazel-tuned runners on the CI you already use.</div>
        <div className="mt-auto pt-4"><a href="/platform/ci-runners" className="text-sm text-blue-600 dark:text-blue-400 font-semibold hover:underline">CI runners →</a></div>
      </div>
    </div>

    <div className="ladder-label">When local cores run out</div>

    <div>
      <div className="ladder-step">3</div>

      <div className="flex flex-col flex-1 p-6 rounded-xl border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-zinc-800">
        <h3 className="text-lg font-semibold text-zinc-900 dark:text-white">Remote execution</h3>
        <div className="mt-2 text-sm text-zinc-600 dark:text-zinc-400">Turn it on at your own pace, with Aspect engineers tuning it.</div>
        <div className="mt-auto pt-4"><a href="/docs/aspect-workflows/platform/features/remote-execution" className="text-sm text-blue-600 dark:text-blue-400 font-semibold hover:underline">Read the docs →</a></div>
      </div>
    </div>
  </div>

  <div className="mt-10 text-center">
    <a href="/platform/aspect-enterprise" className="text-blue-600 dark:text-blue-400 font-semibold hover:underline">Aspect Enterprise →</a>
  </div>
</Section>

<Section>
  <SectionHeader title="Where you can run it" />

  <FeatureGrid2>
    <div className="flex flex-col p-8 rounded-xl border-2 border-blue-600 bg-white dark:bg-zinc-800">
      <div className="avail-status">Available now</div>
      <h3 className="mt-2 text-xl font-bold text-zinc-900 dark:text-white">Aspect Enterprise</h3>
      <p className="mt-3 text-sm text-zinc-600 dark:text-zinc-400">Available today in every deployment, hosted by Aspect or in your own AWS or GCP account.</p>
    </div>

    <div className="flex flex-col p-8 rounded-xl border-2 border-dashed border-zinc-300 dark:border-zinc-600 bg-white dark:bg-zinc-800">
      <div><span className="coming-soon-chip">Coming soon</span></div>
      <h3 className="mt-2 text-xl font-bold text-zinc-900 dark:text-white">Aspect Cloud</h3>
      <p className="mt-3 text-sm text-zinc-600 dark:text-zinc-400">Coming to Aspect Cloud in early 2027.</p>
      <div className="mt-2"><a href="/contact?topic=early-access" className="text-blue-600 dark:text-blue-400 font-semibold hover:underline">Join the early access list →</a></div>
    </div>
  </FeatureGrid2>
</Section>

<CTA title="Adopt remote execution at your own pace" subtitle="Turn it on when you're ready." primaryCta="Start a 30-day trial" primaryHref="/trial" secondaryCta="Request a demo" secondaryHref="/request-demo" />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.