diff --git a/src/content/docs/factories/infrastructure-and-security.mdx b/src/content/docs/factories/infrastructure-and-security.mdx
index 4be57f77..655cf362 100644
--- a/src/content/docs/factories/infrastructure-and-security.mdx
+++ b/src/content/docs/factories/infrastructure-and-security.mdx
@@ -1,16 +1,116 @@
---
title: Warp Factories infrastructure and security
description: >-
- Warp Factories give you control over inference, hosting, and data exhaust
- so you own your factory's infrastructure and outputs.
+ Warp Factories gives you control over inference, hosting, and run data so
+ you own your factory's infrastructure and outputs.
sidebar:
label: "Infrastructure & security"
---
-[STUB — pending content from HYC/content team for the 8/18 closed-beta soft launch. Owner: HYC.
+Warp Factories runs on the infrastructure your team chooses. You decide where a factory runs code, which model providers serve its inference requests, where run data such as transcripts and artifacts is stored, and which credentials each agent receives. Warp coordinates the work the same way regardless of these choices.
-Lightweight aggregation page — mostly link into existing detailed docs rather than duplicate them. Cover:
-- AI sovereignty positioning: bring your own inference, bring your own hosting, own your data exhaust (agent conversations, evals, memories), ZDR
-- Self-hosting (cross-link to the Automation Platform tab's Self-hosting docs rather than duplicating)
-- Security, permissions, and governance for factory agent runs
-- Closed beta / apply for access treatment consistent with other Factories pages]
+## Control plane and execution plane
+
+Every factory splits responsibilities across two planes:
+
+* **Control plane** - Warp coordinates runs, identity and configuration, observability, integrations, storage, and inference routing.
+* **Execution plane** - A Warp-hosted sandbox or a managed self-hosted worker checks out code, runs setup, invokes tools, builds the project, and executes commands.
+
+```mermaid
+flowchart LR
+ I["Integrations and triggers"] --> C["Warp control plane
coordination · identity/config
observability · inference routing"]
+ C --> H["Warp-hosted sandbox"]
+ C -->|"task, config, and scoped
runtime credentials"| S["Managed self-hosted worker"]
+ H -->|"results, transcripts,
artifacts, telemetry"| C
+ S -->|"results, transcripts, attachments,
artifacts, and telemetry
can contain code context"| C
+ C --> P["Warp-managed or
customer-configured inference"]
+ C --> D["Warp or supported
customer-owned storage"]
+```
+
+Self-hosting moves only the execution plane: with a managed self-hosted worker, repository checkouts, command execution, and the sandbox filesystem stay on machines you control, but content that enters prompts, results, transcripts, attachments, artifacts, or telemetry still flows through Warp and the providers you configure. See [deployment patterns](../platform/deployment-patterns) and [self-hosting security and networking](../platform/self-hosting/security-and-networking) for the broader data model.
+
+## Environments and runners
+
+Two configurations define where and how a factory's agents work:
+
+| Configuration | Defines | Key settings |
+| --- | --- | --- |
+| **Environment** | What an agent works on: the workspace and runtime context | Repositories, setup commands, secrets, toolchain image, and provider configuration |
+| **Runner** | Where the work executes: the compute | Operating system, architecture, sandbox image, vCPUs, and memory |
+
+When a run starts, Warp resolves its compute in a fixed order: the runner the run selects explicitly, then the environment's execution defaults, then the system default. Use [environments](../platform/environments) to define the workspace; see the [runner reference](../platform/runners) for compute options and resolution behavior. A factory references both through its [definition as code](./factory-as-code).
+
+The **Runners** page in the [control room](./control-room) shows each runner's operating system and architecture, setup commands, size, and whether it's the default. Where you edit runners depends on where the factory's source lives:
+
+* **Externally managed source** - The `runners/*.yaml` files in the connected repository are the source of truth, and edits open in that repository.
+* **Warp-managed source** - Authorized users create and edit runner files directly in the control room.
+
+Your team's plan sets the maximum instance shape (vCPUs and memory) for Warp-hosted runners, and Warp rejects hosted shapes above that limit. Managed self-hosted runners are exempt because your team supplies the compute.
+
+## Choose an execution host
+
+A factory runs its work on one of two execution hosts: Warp-hosted compute or a managed self-hosted worker.
+
+| Decision area | Warp-hosted | Managed self-hosted |
+| --- | --- | --- |
+| **Compute** | Warp provisions the sandbox | Your team provisions the worker |
+| **Checkout and commands** | Run on Warp-managed compute | Run on your infrastructure |
+| **Control plane** | Runs through Warp | Runs through Warp |
+| **Network** | Warp manages sandbox connectivity | The worker connects outbound to Warp; no inbound firewall port |
+| **Private services** | Must be reachable from the hosted sandbox | Reachable through the worker's network access |
+| **Operations** | Warp manages capacity and lifecycle | Your team manages capacity, isolation, updates, and availability |
+
+To route factory work to a managed self-hosted worker (an Enterprise feature):
+
+1. **Deploy a worker** - Review the [self-hosting requirements](../platform/self-hosting/), then connect a worker that authenticates to Warp with an agent API key. Workers run on `linux/amd64` and `linux/arm64`, and the worker's platform determines which workloads it can run.
+2. **Pair it with a compatible runner** - Choose a runner that matches the worker's platform.
+3. **Select the worker in the factory definition** - Set [`workerHost`](./factory-as-code) so the factory routes work to it.
+
+Unmanaged self-hosted agents and other CLI agents can't serve as a factory's execution host, but they can exchange work with a factory through [Factory MCP](./factory-mcp).
+
+## Choose execution, inference, and storage independently
+
+Execution, inference, and storage are independent choices: each moves one boundary and leaves the rest of the run flow with Warp.
+
+| Team choice | What it changes | What stays with Warp |
+| --- | --- | --- |
+| **Execution**: Warp-hosted or managed self-hosted | Where checkout, commands, and the sandbox filesystem run | Coordination, configuration, observability, and inference routing |
+| **Inference**: Warp-managed or customer-supplied | The provider account, model routing, billing, and provider-side retention | Run coordination and inference routing |
+| **Storage**: Warp or customer-owned | Where supported transcripts, artifacts, and run attachments persist | Orchestration, the write path, and other factory and control-plane state |
+
+:::note
+Managed self-hosted execution and customer-supplied inference require an Enterprise plan. Warp enables customer-owned storage for eligible teams.
+:::
+
+Factory runs execute as [cloud agents](../platform/), so customer-supplied inference is limited to providers that support cloud agents. See [team-managed model keys and endpoints](../enterprise/enterprise-features/team-managed-keys-and-endpoints) and [Bring Your Own LLM](../enterprise/enterprise-features/bring-your-own-llm) for the supported providers. When you supply the provider, provider-side retention follows your provider account and contract; Warp can't configure or enforce it for you. The [security overview](../enterprise/security-and-compliance/security-overview) covers Warp's broader data handling.
+
+For storage, eligible teams can keep the supported data classes above (transcripts, artifacts, and run attachments) in a customer-owned Amazon S3 or Google Cloud Storage bucket. Warp writes the applicable data to the bucket you configure, and your team owns the bucket's access and lifecycle policies. Customer-owned storage doesn't move all factory state into your account: configuration, run metadata, and other control-plane state stay with Warp.
+
+## Credential boundaries
+
+A factory handles four kinds of credentials, each with its own boundary:
+
+| Credential | Used for | Boundary |
+| --- | --- | --- |
+| **Inference credentials** | Model provider requests | Used only at the inference boundary; never injected into the sandbox |
+| **Execution secrets** | APIs, package registries, and tools an agent uses | Delivered from an explicit per-agent allowlist; factory agents that don't act as a specific user receive no managed secrets by default |
+| **Harness authentication** | Third-party harnesses such as Claude Code or Codex | Configured separately from the agent's secret allowlist |
+| **Repository identity** | Checking out code and pushing changes | Runs act with the creating user's authorization (changes are attributed to them) or as a team executor identity for unattended work |
+
+Scope each credential to the resources and actions its agent needs. Warp redacts known secret values at output boundaries, but redaction is a backstop, not a substitute for narrow external permissions and rotation. See [cloud agent secrets](../platform/secrets), [harness authentication](../platform/harnesses/authentication), [secret redaction](../support-and-community/privacy-and-security/secret-redaction), and [team identity](../platform/team-access-billing-and-identity) for the underlying controls.
+
+## Governance and metering
+
+Factories use your existing [team roles](../enterprise/team-management/roles-and-permissions): Team Owners and Admins control factory definitions, environments, runners, secrets, and provider configuration. Warp Factories doesn't add a factory-specific approval role, so who reviews specifications and who approves merges stays a workflow and repository policy decision. Treat factory-definition changes as operational code: review them like any other change, and keep merge access with the people responsible for shipping.
+
+Warp meters hosted compute, Warp-provided inference, and platform services. Managed self-hosted execution moves compute costs to your own infrastructure, and customer-supplied inference bills model usage through your provider account. Platform services consume credits regardless of these choices. See [platform credits](../support-and-community/plans-and-billing/platform-credits) for details.
+
+## Deployment checklist
+
+1. **Classify the workload** - Identify the repositories, data, internal services, and regulated systems the factory can reach.
+2. **Choose execution** - Decide where checkout, commands, and the sandbox filesystem must run.
+3. **Define environments and runners** - Set repositories, setup commands, secrets, operating system, architecture, image, and compute.
+4. **Choose inference and storage** - Select provider routing and where supported run data persists.
+5. **Scope credentials** - Set each agent's secret allowlist, harness authentication, and repository identity.
+6. **Set review gates** - Decide where humans review specifications and pull requests, and enforce those gates in workflow and repository policy.
+7. **Validate operations** - Test network egress, isolation, rotation, redaction, capacity, observability, and metering before increasing volume.
diff --git a/src/content/docs/platform/self-hosting/index.mdx b/src/content/docs/platform/self-hosting/index.mdx
index 5cc939db..28f514c6 100644
--- a/src/content/docs/platform/self-hosting/index.mdx
+++ b/src/content/docs/platform/self-hosting/index.mdx
@@ -52,7 +52,7 @@ With any self-hosted architecture:
* **Resource limits are controlled by your infrastructure** — Concurrency and compute are only limited by the machines you provision, not by Warp.
:::note
-Enterprise teams that need full control over LLM inference routing can use [Bring Your Own LLM (BYOLLM)](/enterprise/enterprise-features/bring-your-own-llm/) to route inference through their own cloud provider accounts. BYOLLM currently applies to interactive (local) agents; cloud agent support is coming.
+Enterprise teams that need full control over LLM inference routing can use [Bring Your Own LLM (BYOLLM)](/enterprise/enterprise-features/bring-your-own-llm/) to route inference through their own cloud provider accounts. Cloud agent support varies by provider; see each provider's setup guide for details.
:::
---
diff --git a/src/content/docs/platform/self-hosting/security-and-networking.mdx b/src/content/docs/platform/self-hosting/security-and-networking.mdx
index c039db6a..8b9bee94 100644
--- a/src/content/docs/platform/self-hosting/security-and-networking.mdx
+++ b/src/content/docs/platform/self-hosting/security-and-networking.mdx
@@ -29,7 +29,7 @@ Self-hosted execution keeps repository clones, source files, build artifacts, ru
* LLM inference requests and responses, which include code context from the agent's interactions.
:::note
-While repositories are cloned and stored only on your infrastructure, code content appears in session transcripts and LLM prompts as part of normal agent operation. All data routed through Warp's backend is covered by [ZDR](/enterprise/security-and-compliance/security-overview/#zero-data-retention-zdr) agreements — Warp does not persistently store your source code or use it for model training.
+Repositories are cloned and stored only on your infrastructure, but code content can still appear in session transcripts, artifacts, and LLM prompts as part of normal agent operation. Warp does not persistently store your source code or train on it. For retention with customer-supplied inference, see [LLM inference and BYOLLM](#llm-inference-and-byollm).
:::
---
@@ -102,9 +102,7 @@ See [GitLab](/platform/integrations/gitlab/) and [Bitbucket](/platform/integrati
## LLM inference and BYOLLM
-LLM inference routes through Warp's backend, which has [ZDR](/enterprise/security-and-compliance/security-overview/#zero-data-retention-zdr) agreements with all contracted model providers. Enterprise teams that need full control over inference routing can use [Bring Your Own LLM (BYOLLM)](/enterprise/enterprise-features/bring-your-own-llm/) to route inference through their own cloud provider accounts.
-
-BYOLLM currently applies to interactive (local) agents; cloud agent BYOLLM support is coming.
+LLM inference routes through Warp's backend. With Warp-managed inference, requests go to contracted providers covered by [ZDR](/enterprise/security-and-compliance/security-overview/#zero-data-retention-zdr) agreements. With customer-supplied inference, provider-side retention follows your team's agreement with that provider. Enterprise teams that want inference routed and billed through their own accounts can use [team-managed model keys and endpoints](/enterprise/enterprise-features/team-managed-keys-and-endpoints/) or [Bring Your Own LLM (BYOLLM)](/enterprise/enterprise-features/bring-your-own-llm/); cloud agent support varies by provider, so check each provider's page.
---