Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
285 changes: 285 additions & 0 deletions docs/src/components/landing/EnterpriseReady.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,285 @@
---
import LandingSection from './LandingSection.astro';
import Octicon from '../Octicon.astro';

const base = import.meta.env.BASE_URL.replace(/\/$/, '');
const runtimes = [
{ name: 'Docker', icon: 'container', badge: 'Default', host: 'Linux runners · ARC DinD' },
{ name: 'Cloud Hypervisor', icon: 'shield-lock', badge: 'Preview', host: 'GitHub-hosted Ubuntu · KVM' },
{ name: 'NVX', icon: 'cpu', badge: 'Preview', host: 'Linux x86_64 · KVM' },
] as const;
---

<LandingSection id="enterprise" title="Enterprise ready" lede="Your infrastructure. Your trust policies. Agents that fit both.">
<div slot="intro" class="aw-copy">
<p>Bring your own <a href={`${base}/reference/self-hosted-runners/`}>Linux self-hosted runners</a>, or scale on Kubernetes with <a href={`${base}/reference/arc-dind-copilot-agent/`}>ARC and Docker-in-Docker</a>.</p>
<p>Choose Docker isolation or preview Cloud Hypervisor and NVX microVMs on compatible hosts. Apply <a href={`${base}/reference/integrity/`}>integrity policies</a> to filter GitHub content by author trust and merge status before it reaches the agent.</p>
<a class="aw-link" href={`${base}/reference/agent-runtimes/`}>Explore agent runtimes <span aria-hidden="true">→</span></a>
</div>
<figure slot="aside" class="aw-infra" aria-label="Runners, firewall-protected isolation and integrity filtering, and OpenTelemetry export">
<div class="aw-runner-deck aw-card">
<div class="aw-panel-heading"><Octicon name="server" /><span>Your GitHub Actions runners</span><span class="aw-live" aria-hidden="true" /></div>
<div class="aw-runner-options">
<span>GitHub-hosted</span><span>Self-hosted</span><span>ARC DinD</span>
</div>
</div>
<div class="aw-flow aw-flow-short" aria-hidden="true" />
<div class="aw-firewall">
<a class="aw-firewall-heading" href={`${base}/introduction/architecture/#agent-workflow-firewall-awf`}>
<Octicon name="shield-lock" size={22} />
<span><strong>Agent Workflow Firewall</strong><span class="aw-host">Controlled egress · Isolated credentials</span></span>
<Octicon name="arrow-up-right" />
</a>
<div class="aw-flow" aria-hidden="true"><span>Choose your isolation</span></div>
<div class="aw-runtime-grid">
{runtimes.map((runtime) => (
<a class="aw-runtime aw-card" href={`${base}/reference/agent-runtimes/`}>
<Octicon name={runtime.icon} size={28} class="aw-runtime-icon" />
<span class="aw-runtime-name">{runtime.name}</span>
<span class="aw-badge">{runtime.badge}</span>
<span class="aw-host">{runtime.host}</span>
</a>
))}
</div>
<div class="aw-flow aw-flow-short" aria-hidden="true" />
<a class="aw-trust aw-card" href={`${base}/reference/integrity/`}>
<span class="aw-trust-icon"><Octicon name="filter" size={22} /></span>
<span><strong>Integrity filtering</strong><span class="aw-host">Your trust policy, before inference</span></span>
<Octicon name="shield-check" size={24} class="aw-trust-check" />
</a>
</div>
<div class="aw-flow aw-flow-short" aria-hidden="true" />
<a class="aw-otel aw-card" href={`${base}/reference/open-telemetry/`}>
<div class="aw-panel-heading">
<Octicon name="pulse" size={22} />
<span><strong>OpenTelemetry</strong><span class="aw-host">Workflow, agent and tool-call spans</span></span>
<span class="aw-badge">OTLP</span>
</div>
<div class="aw-export"><span class="aw-export-line" aria-hidden="true" /><Octicon name="graph" size={20} /><strong>Your monitoring stack</strong></div>
</a>
<figcaption>Runtime eligibility varies by host. Cloud Hypervisor and NVX are preview runtimes; ARC DinD uses Docker.</figcaption>
</figure>
</LandingSection>

<style>
.aw-copy {
margin-top: 1.5rem;
max-width: 38.75rem;
font-size: var(--aw-step-0);
line-height: 1.65;
color: var(--aw-color-text-secondary);
}
.aw-copy p {
margin: 0 0 1rem;
text-wrap: pretty;
}
.aw-copy a:not(.aw-link) {
color: var(--aw-color-accent-text);
text-underline-offset: 0.2em;
}
.aw-infra {
margin: 0;
min-width: 0;
font-size: var(--aw-step--1);
}
.aw-panel-heading {
display: flex;
align-items: center;
gap: 0.625rem;
padding: 1rem 1.25rem;
color: var(--aw-color-text-secondary);
}
.aw-live {
flex: none;
width: 0.5rem;
height: 0.5rem;
border-radius: 50%;
background: var(--aw-color-success);
box-shadow: 0 0 0 4px color-mix(in oklab, var(--aw-color-success) 12%, transparent);
}
.aw-panel-heading .aw-live {
margin-left: auto;
}
.aw-runner-deck {
border-radius: var(--aw-radius-lg);
}
.aw-firewall {
padding: 1rem;
border: 1px dashed var(--aw-color-accent);
border-radius: var(--aw-radius-lg);
}
.aw-firewall-heading {
display: flex;
align-items: center;
gap: 0.75rem;
color: var(--aw-color-accent-text);
text-decoration: none;
}
.aw-firewall-heading > :last-child {
margin-left: auto;
}
.aw-otel {
display: block;
border-radius: var(--aw-radius-lg);
color: var(--aw-color-text);
text-decoration: none;
}
.aw-otel:hover,
.aw-otel:focus-visible {
border-color: var(--aw-color-accent);
}
.aw-otel .aw-badge {
margin-left: auto;
}
.aw-otel .aw-export {
padding: 0 1.25rem 1.25rem;
}
.aw-runner-options {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
padding: 0 1.25rem 1.25rem;
}
.aw-runner-options span,
.aw-badge {
padding: 0.2rem 0.5rem;
border: 1px solid var(--aw-color-border);
border-radius: var(--aw-radius-pill);
color: var(--aw-color-text-secondary);
background: var(--aw-color-bg-subtle);
}
.aw-flow {
position: relative;
display: grid;
place-items: center;
height: 3.75rem;
overflow: hidden;
}
.aw-flow::before,
.aw-flow::after {
content: '';
position: absolute;
left: 50%;
height: 100%;
width: 1px;
background: var(--aw-color-border-strong);
}
.aw-flow::after {
height: 1.25rem;
background: var(--aw-color-accent);
}
.aw-flow span {
z-index: 1;
padding: 0.125rem 0.75rem;
color: var(--aw-color-text-muted);
background: var(--aw-color-bg);
}
.aw-flow-short {
height: 1.75rem;
}
.aw-runtime-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 0.625rem;
}
.aw-runtime {
display: flex;
flex-direction: column;
align-items: center;
gap: 0.75rem;
min-width: 0;
padding: 1.5rem 0.5rem 1rem;
border-radius: var(--aw-radius-lg);
text-align: center;
text-decoration: none;
transition: transform 180ms ease, border-color 180ms ease;
}
.aw-runtime:hover,
.aw-runtime:focus-visible {
transform: translateY(-4px);
border-color: var(--aw-color-accent);
}
.aw-runtime-icon {
color: var(--aw-color-accent-text);
}
.aw-runtime-name {
font-weight: 550;
color: var(--aw-color-text-strong);
}
.aw-host {
display: block;
color: var(--aw-color-text-muted);
line-height: 1.5;
}
.aw-trust {
display: flex;
align-items: center;
gap: 0.875rem;
padding: 1rem 1.25rem;
border-radius: var(--aw-radius-lg);
text-decoration: none;
color: var(--aw-color-text);
}
.aw-trust-icon {
display: grid;
place-items: center;
width: 2.75rem;
height: 2.75rem;
flex: none;
border-radius: var(--aw-radius-md);
color: var(--aw-color-accent-text);
background: var(--aw-color-accent-low);
}
.aw-trust-check {
margin-left: auto;
color: var(--aw-color-success);
}
figcaption {
margin: 1rem 0 0;
color: var(--aw-color-text-muted);
line-height: 1.5;
text-wrap: pretty;
}
.aw-export {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.625rem;
color: var(--aw-color-text-secondary);
}
.aw-export-line {
flex: 1;
min-width: 1rem;
border-top: 1px dashed var(--aw-color-accent);
}
@media (max-width: 29.99rem) {
.aw-runtime-grid {
grid-template-columns: minmax(0, 1fr);
}
.aw-runtime {
display: grid;
grid-template-columns: 2rem minmax(0, 1fr) auto;
gap: 0.5rem;
padding: 1rem;
text-align: left;
}
.aw-runtime .aw-host {
grid-column: 2 / -1;
}
}
@media (prefers-reduced-motion: no-preference) {
.aw-flow::after {
animation: aw-packet 3s ease-in-out infinite;
}
}
@media (prefers-reduced-motion: reduce) {
.aw-runtime {
transition: none;
}
}
@keyframes aw-packet {
from { transform: translateY(-2rem); opacity: 0; }
25%, 75% { opacity: 1; }
to { transform: translateY(3rem); opacity: 0; }
}
</style>
2 changes: 2 additions & 0 deletions docs/src/content/docs/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import Gallery from '../../components/landing/Gallery.astro';
import SafeByDefault from '../../components/landing/SafeByDefault.astro';
import CostControl from '../../components/landing/CostControl.astro';
import ForOrganizations from '../../components/landing/ForOrganizations.astro';
import EnterpriseReady from '../../components/landing/EnterpriseReady.astro';
import KeepGoing from '../../components/landing/KeepGoing.astro';
import ClosingCta from '../../components/landing/ClosingCta.astro';

Expand All @@ -30,6 +31,7 @@ import ClosingCta from '../../components/landing/ClosingCta.astro';
<HowItWorks />
<CostControl />
<ForOrganizations />
<EnterpriseReady />
<KeepGoing />
<ClosingCta />
</div>
Loading