diff --git a/src/content/docs/agents/capabilities/control-web-browsers.mdx b/src/content/docs/agents/capabilities/control-web-browsers.mdx
new file mode 100644
index 00000000000000..08618a97c854a2
--- /dev/null
+++ b/src/content/docs/agents/capabilities/control-web-browsers.mdx
@@ -0,0 +1,10 @@
+---
+pcx_content_type: navigation
+title: Control Web Browsers (Browser Rendering API)
+external_link: /browser-rendering/
+sidebar:
+ order: 1
+head: []
+description: The Workers Browser Rendering API allows developers to programmatically control and interact with a headless browser instance and create automation flows for their applications and products.
+
+---
diff --git a/src/content/docs/agents/capabilities/index.mdx b/src/content/docs/agents/capabilities/index.mdx
new file mode 100644
index 00000000000000..dfcca68ba21de9
--- /dev/null
+++ b/src/content/docs/agents/capabilities/index.mdx
@@ -0,0 +1,14 @@
+---
+pcx_content_type: reference
+title: Capabilities
+sidebar:
+ order: 2
+ group:
+ hideIndex: true
+---
+
+import { DirectoryListing } from "~/components";
+
+Capabilities
+
+
diff --git a/src/content/docs/agents/capabilities/run-models.mdx b/src/content/docs/agents/capabilities/run-models.mdx
new file mode 100644
index 00000000000000..86a14253478d37
--- /dev/null
+++ b/src/content/docs/agents/capabilities/run-models.mdx
@@ -0,0 +1,9 @@
+---
+pcx_content_type: navigation
+title: Run models (Workers AI)
+external_link: /workers-ai/
+sidebar:
+ order: 2
+head: []
+description: Run popular open-source AI models on Cloudflare's network.
+---
\ No newline at end of file
diff --git a/src/content/docs/agents/capabilities/send-email.mdx b/src/content/docs/agents/capabilities/send-email.mdx
new file mode 100644
index 00000000000000..b23feac138d75a
--- /dev/null
+++ b/src/content/docs/agents/capabilities/send-email.mdx
@@ -0,0 +1,11 @@
+---
+pcx_content_type: navigation
+title: Send Email
+external_link: /email-routing/email-workers/send-email-workers/
+sidebar:
+ order: 2
+head: []
+description: Send emails from your Worker for async updates to a user.
+---
+
+
diff --git a/src/content/docs/agents/capabilities/webrtc-realtime.mdx b/src/content/docs/agents/capabilities/webrtc-realtime.mdx
new file mode 100644
index 00000000000000..3acddf48f2e141
--- /dev/null
+++ b/src/content/docs/agents/capabilities/webrtc-realtime.mdx
@@ -0,0 +1,9 @@
+---
+pcx_content_type: navigation
+title: Realtime voice (WebRTC)
+external_link: /calls/
+sidebar:
+ order: 4
+head: []
+description: Build real-time serverless video, audio and data applications.
+---
\ No newline at end of file
diff --git a/src/content/docs/agents/index.mdx b/src/content/docs/agents/index.mdx
new file mode 100644
index 00000000000000..c396697639ca9f
--- /dev/null
+++ b/src/content/docs/agents/index.mdx
@@ -0,0 +1,529 @@
+---
+title: Build agents on Cloudflare
+type: overview
+pcx_content_type: overview
+sidebar:
+ order: 1
+head:
+ - tag: title
+ content: Agents
+---
+
+import {
+ CardGrid,
+ Description,
+ Feature,
+ LinkButton,
+ LinkTitleCard,
+ Plan,
+ RelatedProduct,
+ Render,
+ TabItem,
+ Tabs,
+} from "~/components";
+
+Build AI-powered agents that can autonomously perform tasks, persist state, browse the web, and communicate back to users in real-time over any channel.
+
+- **Non I/O bound pricing:** don't pay for long-running processes when your code is not executing. Cloudflare Workers is designed to scale down and [only charge you for CPU time](https://blog.cloudflare.com/workers-pricing-scale-to-zero/), as opposed to wall-clock time.
+- **Designed for durable execution:** [Durable Objects](/durable-objects/) and [Workflows](/workflows) are built for a programming model that enables guaranteed execution for async tasks like long-running deep thinking LLM calls, human-in-the-loop, or unreliable API calls.
+- **Scalable, and reliable, without compromising on performance:** by running on Cloudflare's network, agents can execute tasks close to the user without introducing latency for real-time experiences.
+
+## Start building
+
+
+
+
+Build agents that can execute complex tasks, progressively save state, and call out to _any_ third party API they need to using [Workflows](/workflows/). Send emails or [text messages](/workflows/examples/twilio/), [browse the web](/browser-rendering/), process and summarize documents, and/or query your database.
+
+```sh
+npm create cloudflare@latest workflows-starter -- --template "cloudflare/workflows-starter"
+cd workflows-starter
+npm i resend
+```
+
+```ts collapse={30-1000}
+import { WorkflowEntrypoint, WorkflowStep, WorkflowEvent } from 'cloudflare:workers';
+import { Resend } from 'resend';
+
+type Env = {
+ MY_WORKFLOW: Workflow;
+ RESEND_API_KEY: string;
+};
+
+type Params = {
+ email: string;
+ metadata: Record;
+};
+
+export class MyWorkflow extends WorkflowEntrypoint {
+ async run(event: WorkflowEvent, step: WorkflowStep) {
+
+ const files = await step.do('my first step', async () => {
+ // Fetch a list of files from $SOME_SERVICE
+ return {
+ files: [
+ 'doc_7392_rev3.pdf',
+ 'report_x29_final.pdf',
+ 'memo_2024_05_12.pdf',
+ 'file_089_update.pdf',
+ 'proj_alpha_v2.pdf',
+ 'data_analysis_q2.pdf',
+ 'notes_meeting_52.pdf',
+ 'summary_fy24_draft.pdf',
+ ],
+ };
+ });
+
+ const summaries = await step.do('summarize text', async () => {
+ const results = {};
+ for (const filename of files.files) {
+ const fileContent = await this.env.MY_BUCKET.get(filename);
+ if (!fileContent) continue;
+
+ const text = await fileContent.text();
+ const summary = await this.env.WORKERS_AI.run('@cf/meta/llama-3.2-3b-instruct', {
+ messages: [{
+ role: 'user',
+ content: `Please summarize the following text concisely: ${text}`
+ }]
+ });
+ results[filename] = summary.response;
+ }
+ return results;
+ });
+
+ await step.sleep('wait on something', '1 minute');
+
+ let summaryKey = await step.do(
+ 'store summaries in R2',
+ async () => {
+ const summaryKey = `summaries-${Date.now()}.json`;
+ await this.env.MY_BUCKET.put(summaryKey, JSON.stringify(summaries));
+ return summaryKey;
+ },
+ );
+
+ await step.do(
+ 'email summaries',
+ {
+ retries: {
+ limit: 3,
+ delay: '5 second',
+ backoff: 'exponential',
+ }
+ },
+ async () => {
+ const summaryText = Object.entries(summaries)
+ .map(([filename, summary]) => `${filename}:\n${summary}\n\n`)
+ .join('');
+
+ const resend = new Resend(this.env.RESEND_API_KEY);
+
+ await resend.emails.send({
+ from: 'notifications@yourdomain.com',
+ to: event.payload.email,
+ subject: 'Your Document Summaries',
+ text: summaryText,
+ });
+ }
+ );
+
+ return summaryKey;
+ }
+}
+
+export default {
+ async fetch(req: Request, env: Env): Promise {
+ let id = new URL(req.url).searchParams.get('instanceId');
+
+ if (id) {
+ let instance = await env.MY_WORKFLOW.get(id);
+ return Response.json({
+ status: await instance.status(),
+ });
+ }
+
+ let instance = await env.MY_WORKFLOW.create();
+ return Response.json({
+ id: instance.id,
+ details: await instance.status(),
+ });
+ },
+};
+```
+
+
+
+
+Use [Durable Objects](/durable-objects/) — stateful, serverless, long-running micro-servers — to ship interactive, real-time agents that can connect to the latest AI models.
+
+Stream responses over [WebSockets](/durable-objects/best-practices/websockets/), and don't time out while waiting for the latest chain-of-thought models — including `o1` or `deepseek-r1` — to respond.
+
+```ts
+npm i openai
+```
+
+```ts collapse={30-1000}
+import { DurableObject } from "cloudflare:workers";
+
+export interface Env {
+ DURABLE_AGENT: DurableObjectNamespace;
+ OPENAI_API_KEY: string;
+}
+
+export default {
+ async fetch(request: Request, env: Env, ctx: ExecutionContext) {
+ if (request.url.endsWith("/agent/chat")) {
+ const upgradeHeader = request.headers.get("Upgrade");
+ if (!upgradeHeader || upgradeHeader !== "websocket") {
+ return Response.json(
+ { error: "Durable Object expected Upgrade: websocket" },
+ { status: 426 }
+ );
+ }
+
+ const url = new URL(request.url);
+ const agentId = url.searchParams.get("id") || (await crypto.randomUUID());
+
+ let id = env.DURABLE_AGENT.idFromName(agentId);
+ let agent = env.DURABLE_AGENT.get(id);
+
+ return agent.fetch(request);
+ }
+
+ return Response.json({ message: "Bad Request" }, { status: 400 });
+ },
+};
+
+export class DurableAgent extends DurableObject {
+ constructor(private state: DurableObjectState, private env: Env) {
+ super();
+ }
+
+ async fetch(request: Request): Promise {
+ const webSocketPair = new WebSocketPair();
+ const [client, server] = Object.values(webSocketPair);
+
+ this.ctx.acceptWebSocket(server);
+
+ return new Response(null, {
+ status: 101,
+ webSocket: client,
+ });
+ }
+
+ async webSocketMessage(ws: WebSocket, message: ArrayBuffer | string) {
+ try {
+ const openai = new OpenAI({
+ apiKey: this.env.OPENAI_API_KEY,
+ timeout: 10 * 60 * 1000, // Don't let it think TOO long.
+ });
+
+ // Stream the response to immediately start sending chunks to the client,
+ // rather than buffering the entire response and making the user wait
+ const stream = await openai.chat.completions.create({
+ model: "o1",
+ messages: [{ role: "user", content: message.toString() }],
+ stream: true,
+ });
+
+ for await (const chunk of stream) {
+ const content = chunk.choices[0]?.delta?.content;
+ if (content) {
+ ws.send(content);
+ }
+ }
+ } catch (error) {
+ ws.send(
+ JSON.stringify({
+ error: "OpenAI request failed",
+ message: error.message,
+ })
+ );
+ }
+ }
+
+ async webSocketClose(ws: WebSocket, code: number, reason: string, wasClean: boolean) {
+ ws.close(code, "Durable Object is closing WebSocket");
+ }
+}
+```
+
+
+
+
+Use the [Browser Rendering API](/browser-rendering/) to allow your agents to search the web, take screenshots, and directly interact with websites.
+
+```sh
+npm install @cloudflare/puppeteer --save-dev
+```
+
+```ts collapse={30-1000}
+import puppeteer from "@cloudflare/puppeteer";
+
+interface Env {
+ MYBROWSER: Fetcher;
+ BROWSER_KV_DEMO: KVNamespace;
+}
+
+export default {
+ async fetch(request: Request, env: Env): Promise {
+ const { searchParams } = new URL(request.url);
+ const url = searchParams.get("url");
+
+ if (!url) {
+ return new Response("Please add an ?url=https://example.com/ parameter");
+ }
+
+ const normalizedUrl = new URL(url).toString();
+ let img = await env.BROWSER_KV_DEMO.get(normalizedUrl, { type: "arrayBuffer" });
+
+ if (img === null) {
+ const browser = await puppeteer.launch(env.MYBROWSER);
+ const page = await browser.newPage();
+ await page.goto(normalizedUrl);
+ img = await page.screenshot() as Buffer;
+
+ await env.BROWSER_KV_DEMO.put(normalizedUrl, img, {
+ expirationTtl: 60 * 60 * 24, // 24 hours
+ });
+
+ await browser.close();
+ }
+
+ return new Response(img, {
+ headers: {
+ "content-type": "image/jpeg",
+ },
+ });
+ },
+};
+```
+
+
+
+
+Use [AI Gateway](/ai-gateway/) to cache, log, retry and run [evals](/ai-gateway/evaluations/) (evaluations) for your agents, no matter where they're deployed.
+
+```py collapse={30-1000}
+from anthropic import Anthropic
+
+anthropic = Anthropic(
+ api_key="",
+ # Route, cache, fallback and log prompt-response pairs between your app
+ # and your AI model provider.
+ base_url="https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/anthropic"
+)
+
+message = anthropic.messages.create(
+ model="claude-3-opus-20240229",
+ max_tokens=1000,
+ messages=[{
+ "role": "user",
+ "content": "Generate a Cloudflare Worker that returns a simple JSON payload based on a query param",
+ }]
+)
+
+print(message.content)
+```
+
+
+
+
+## Use your favorite AI framework
+
+Build agents using your favorite AI frameworks, and deploy it directly to [Cloudflare Workers](/workers/).
+
+
+
+
+Use [LangChain](https://js.langchain.com/docs/integrations/text_embedding/cloudflare_ai/) to build Retrieval-Augmented Generation (RAG) applications using [Workers AI](/workers-ai/) and [Vectorize](/vectorize/).
+
+Give your agents more context and the ability to search across content, reply to user queries, and expand their domain knowledge.
+
+```sh
+npm i @langchain/cloudflare hono
+```
+
+```ts collapse={30-1000}
+import {
+ CloudflareVectorizeStore,
+ CloudflareWorkersAIEmbeddings
+} from "@langchain/cloudflare";
+import { VectorizeIndex } from "@cloudflare/workers-types";
+import { Ai } from "@cloudflare/ai";
+import { Hono } from "hono";
+
+export interface Env {
+ VECTORIZE_INDEX: VectorizeIndex;
+ AI: Ai;
+}
+
+const app = new Hono<{ Bindings: Env }>();
+
+app.get("/", async (c) => {
+ const embeddings = new CloudflareWorkersAIEmbeddings({
+ binding: c.env.AI,
+ model: "@cf/baai/bge-small-en-v1.5",
+ });
+
+ const store = new CloudflareVectorizeStore(embeddings, {
+ index: c.env.VECTORIZE_INDEX,
+ });
+
+ const results = await store.similaritySearch("hello", 5);
+ return c.json(results);
+});
+
+app.post("/load", async (c) => {
+ const embeddings = new CloudflareWorkersAIEmbeddings({
+ binding: c.env.AI,
+ model: "@cf/baai/bge-small-en-v1.5",
+ });
+
+ const store = new CloudflareVectorizeStore(embeddings, {
+ index: c.env.VECTORIZE_INDEX,
+ });
+
+ const documents = [
+ { pageContent: "hello", metadata: {} },
+ { pageContent: "world", metadata: {} },
+ { pageContent: "hi", metadata: {} }
+ ];
+
+ await store.addDocuments(documents, {
+ ids: ["id1", "id2", "id3"]
+ });
+
+ return c.json({ success: true });
+});
+
+app.delete("/clear", async (c) => {
+ const embeddings = new CloudflareWorkersAIEmbeddings({
+ binding: c.env.AI,
+ model: "@cf/baai/bge-small-en-v1.5",
+ });
+
+ const store = new CloudflareVectorizeStore(embeddings, {
+ index: c.env.VECTORIZE_INDEX,
+ });
+
+ await store.delete({ ids: ["id1", "id2", "id3"] });
+ return c.json({ success: true });
+});
+
+export default app;
+```
+
+
+
+
+Ship faster with the [AI SDK](https://sdk.vercel.ai/docs/introduction): make it easier to generate text, tool call and/or get structured output from your AI models (and then deploy it [Workers](/workers/).
+
+```sh
+npm i ai workers-ai-provider
+```
+
+```ts collapse={30-1000}
+import { createWorkersAI } from 'workers-ai-provider';
+import { streamText } from 'ai';
+
+type Env = {
+ AI: Ai;
+};
+
+export default {
+ async fetch(_: Request, env: Env) {
+ const workersai = createWorkersAI({ binding: env.AI });
+ const result = streamText({
+ model: workersai('@cf/meta/llama-3.2-3b-instruct'),
+ prompt: 'Write short essay on why you like Cloudflare Durable Objects.',
+ });
+
+ return result.toTextStreamResponse({
+ headers: {
+ 'Content-Type': 'text/x-unknown',
+ 'content-encoding': 'identity',
+ 'transfer-encoding': 'chunked',
+ },
+ });
+ },
+};
+```
+
+
+
+
+Use any model provider with OpenAI compatible endpoints, including [ChatGPT](https://platform.openai.com/docs/quickstart), [DeepSeek](https://api-docs.deepseek.com/) and [Workers AI](/workers-ai/configuration/open-ai-compatibility/), directly from Cloudflare Workers.
+
+```sh
+npm i openai
+```
+
+```ts collapse={30-1000}
+import OpenAI from "openai";
+
+export interface Env {
+ OPENAI_API_KEY: string;
+}
+
+export default {
+ async fetch(request: Request, env: Env) {
+ const url = new URL(request.url);
+ const prompt = url.searchParams.get('prompt') || "Make some robot noises";
+
+ const openai = new OpenAI({
+ apiKey: env.OPENAI_API_KEY
+ });
+
+ const chatCompletion = await openai.chat.completions.create({
+ messages: [{ role: "user", content: prompt }],
+ model: "gpt-3.5-turbo",
+ });
+
+ const embeddings = await openai.embeddings.create({
+ model: "text-embedding-ada-002",
+ input: "Cloudflare Agents documentation",
+ });
+
+ return new Response(JSON.stringify({ chatCompletion, embeddings }));
+ }
+}
+```
+
+
+
+
+***
+
+## All the products you need in one platform
+
+
+
+Observe and control your AI applications with caching, rate limiting, request retries, model fallback, and more.
+
+
+
+
+
+Build full-stack AI applications with Vectorize, Cloudflare’s vector database. Adding Vectorize enables you to perform tasks such as semantic search, recommendations, anomaly detection or can be used to provide context and memory to an LLM.
+
+
+
+
+
+Run machine learning models, powered by serverless GPUs, on Cloudflare's global network.
+
+
+
+
+
+Build real-time serverless video, audio and data applications with WebRTC running on Cloudflare's network.
+
+
+
+
+
+Build stateful agents that guarantee executions, including automatic retries, persistent state that runs for minutes, hours, days, or weeks.
+
+
\ No newline at end of file
diff --git a/src/content/docs/agents/products/ai-gateway.mdx b/src/content/docs/agents/products/ai-gateway.mdx
new file mode 100644
index 00000000000000..152bb1879e435b
--- /dev/null
+++ b/src/content/docs/agents/products/ai-gateway.mdx
@@ -0,0 +1,11 @@
+---
+pcx_content_type: navigation
+title: AI Gateway
+external_link: /ai-gateway/
+sidebar:
+ order: 3
+head: []
+description: Observe and control your AI applications.
+---
+
+
diff --git a/src/content/docs/agents/products/durable-objects.mdx b/src/content/docs/agents/products/durable-objects.mdx
new file mode 100644
index 00000000000000..955c94ff44a712
--- /dev/null
+++ b/src/content/docs/agents/products/durable-objects.mdx
@@ -0,0 +1,11 @@
+---
+pcx_content_type: navigation
+title: Durable Objects
+external_link: /durable-objects/
+sidebar:
+ order: 6
+head: []
+description: Create collaborative applications, real-time chat, multiplayer games and more without needing to coordinate state or manage infrastructure.
+---
+
+
diff --git a/src/content/docs/agents/products/email-workers.mdx b/src/content/docs/agents/products/email-workers.mdx
new file mode 100644
index 00000000000000..98865d42a4bf5c
--- /dev/null
+++ b/src/content/docs/agents/products/email-workers.mdx
@@ -0,0 +1,11 @@
+---
+pcx_content_type: navigation
+title: Email Workerss
+external_link: /email-routing/email-workers/
+sidebar:
+ order: 4
+head: []
+description: Implement any logic you need to process your emails and create complex rules
+---
+
+
diff --git a/src/content/docs/agents/products/index.mdx b/src/content/docs/agents/products/index.mdx
new file mode 100644
index 00000000000000..0fce7832787300
--- /dev/null
+++ b/src/content/docs/agents/products/index.mdx
@@ -0,0 +1,14 @@
+---
+pcx_content_type: reference
+title: Products
+sidebar:
+ order: 3
+ group:
+ hideIndex: true
+---
+
+import { DirectoryListing } from "~/components";
+
+Example Reference Architectures
+
+
diff --git a/src/content/docs/agents/products/real-time.mdx b/src/content/docs/agents/products/real-time.mdx
new file mode 100644
index 00000000000000..c27b7f2713c3f8
--- /dev/null
+++ b/src/content/docs/agents/products/real-time.mdx
@@ -0,0 +1,11 @@
+---
+pcx_content_type: navigation
+title: Real Time
+external_link: /real-time/
+sidebar:
+ order: 10
+head: []
+description: Build real-time serverless video, audio and data applications.
+---
+
+
diff --git a/src/content/docs/agents/products/workers-ai.mdx b/src/content/docs/agents/products/workers-ai.mdx
new file mode 100644
index 00000000000000..fb54c8993df240
--- /dev/null
+++ b/src/content/docs/agents/products/workers-ai.mdx
@@ -0,0 +1,11 @@
+---
+pcx_content_type: navigation
+title: Workers AI
+external_link: /workers-ai/
+sidebar:
+ order: 2
+head: []
+description: Run machine learning models, powered by serverless GPUs, on Cloudflare's global network.
+---
+
+
diff --git a/src/content/docs/agents/products/workflows.mdx b/src/content/docs/agents/products/workflows.mdx
new file mode 100644
index 00000000000000..eeb7aca8b0d2bc
--- /dev/null
+++ b/src/content/docs/agents/products/workflows.mdx
@@ -0,0 +1,11 @@
+---
+pcx_content_type: navigation
+title: Workflows
+external_link: /workflows/
+sidebar:
+ order: 5
+head: []
+description: Build durable multi-step applications on Cloudflare Workers with Workflows.
+---
+
+
diff --git a/src/content/docs/agents/reference-architectures/index.mdx b/src/content/docs/agents/reference-architectures/index.mdx
new file mode 100644
index 00000000000000..e1dd3af47f3a47
--- /dev/null
+++ b/src/content/docs/agents/reference-architectures/index.mdx
@@ -0,0 +1,14 @@
+---
+pcx_content_type: reference
+title: Reference Architectures
+sidebar:
+ order: 1
+ group:
+ hideIndex: true
+---
+
+import { DirectoryListing } from "~/components";
+
+Example Reference Architectures
+
+
diff --git a/src/content/docs/agents/reference-architectures/rag.mdx b/src/content/docs/agents/reference-architectures/rag.mdx
new file mode 100644
index 00000000000000..7154404f2de659
--- /dev/null
+++ b/src/content/docs/agents/reference-architectures/rag.mdx
@@ -0,0 +1,9 @@
+---
+pcx_content_type: navigation
+title: Retrieval Augmented Generation
+external_link: /reference-architecture/diagrams/ai/ai-rag/
+sidebar:
+ order: 2
+head: []
+description: Build RAG architectures on Cloudflare
+---
\ No newline at end of file
diff --git a/src/content/docs/agents/reference-architectures/text-and-call.mdx b/src/content/docs/agents/reference-architectures/text-and-call.mdx
new file mode 100644
index 00000000000000..5471f0d78645de
--- /dev/null
+++ b/src/content/docs/agents/reference-architectures/text-and-call.mdx
@@ -0,0 +1,9 @@
+---
+pcx_content_type: navigation
+title: Send text messages from agents
+external_link: /workflows/examples/twilio/
+sidebar:
+ order: 3
+head: []
+description: Send text messages and accept phone calls from your agent
+---
\ No newline at end of file
diff --git a/src/content/docs/ai-gateway/integrations/agents.mdx b/src/content/docs/ai-gateway/integrations/agents.mdx
new file mode 100644
index 00000000000000..235f6ea5ebfd11
--- /dev/null
+++ b/src/content/docs/ai-gateway/integrations/agents.mdx
@@ -0,0 +1,10 @@
+---
+pcx_content_type: navigation
+title: Agents
+external_link: /agents/
+sidebar:
+ order: 10
+head: []
+description: Build AI-powered Agents on Cloudflare
+---
+
diff --git a/src/content/docs/durable-objects/examples/agents.mdx b/src/content/docs/durable-objects/examples/agents.mdx
new file mode 100644
index 00000000000000..2ba4fdef824cfc
--- /dev/null
+++ b/src/content/docs/durable-objects/examples/agents.mdx
@@ -0,0 +1,9 @@
+---
+pcx_content_type: navigation
+title: Agents
+external_link: /agents/
+sidebar:
+ order: 10
+head: []
+description: Build AI-powered Agents on Cloudflare
+---
\ No newline at end of file
diff --git a/src/content/docs/vectorize/examples/agents.mdx b/src/content/docs/vectorize/examples/agents.mdx
new file mode 100644
index 00000000000000..2ba4fdef824cfc
--- /dev/null
+++ b/src/content/docs/vectorize/examples/agents.mdx
@@ -0,0 +1,9 @@
+---
+pcx_content_type: navigation
+title: Agents
+external_link: /agents/
+sidebar:
+ order: 10
+head: []
+description: Build AI-powered Agents on Cloudflare
+---
\ No newline at end of file
diff --git a/src/content/docs/workers-ai/guides/agents.mdx b/src/content/docs/workers-ai/guides/agents.mdx
new file mode 100644
index 00000000000000..2ba4fdef824cfc
--- /dev/null
+++ b/src/content/docs/workers-ai/guides/agents.mdx
@@ -0,0 +1,9 @@
+---
+pcx_content_type: navigation
+title: Agents
+external_link: /agents/
+sidebar:
+ order: 10
+head: []
+description: Build AI-powered Agents on Cloudflare
+---
\ No newline at end of file
diff --git a/src/content/docs/workflows/examples/agents.mdx b/src/content/docs/workflows/examples/agents.mdx
new file mode 100644
index 00000000000000..2ba4fdef824cfc
--- /dev/null
+++ b/src/content/docs/workflows/examples/agents.mdx
@@ -0,0 +1,9 @@
+---
+pcx_content_type: navigation
+title: Agents
+external_link: /agents/
+sidebar:
+ order: 10
+head: []
+description: Build AI-powered Agents on Cloudflare
+---
\ No newline at end of file
diff --git a/src/content/products/agents.yaml b/src/content/products/agents.yaml
new file mode 100644
index 00000000000000..3e3afcae96408b
--- /dev/null
+++ b/src/content/products/agents.yaml
@@ -0,0 +1,28 @@
+name: Agents
+
+product:
+ title: Agents
+ url: /agents/
+ group: Developer platform
+ preview_tryout: true
+
+meta:
+ title: Cloudflare Agents
+ description: Build AI-powered agents that can autonomously perform tasks, persist state, browse the web, and communicate back to users in real-time over any channel.
+ author: "@cloudflare"
+
+resources:
+ community: https://community.cloudflare.com/c/developers/workers/40
+ dashboard_link: https://dash.cloudflare.com/?to=/:account/workers
+ learning_center: https://www.cloudflare.com/learning/serverless/what-is-serverless/
+ discord: https://discord.com/invite/cloudflaredev
+
+externals:
+ - title: Workers home
+ url: https://workers.cloudflare.com
+ - title: Playground
+ url: https://workers.cloudflare.com/playground
+ - title: Pricing
+ url: https://workers.cloudflare.com/#plans
+ - title: Discord
+ url: https://discord.cloudflare.com
diff --git a/src/icons/agents.svg b/src/icons/agents.svg
new file mode 100644
index 00000000000000..1427cd594016af
--- /dev/null
+++ b/src/icons/agents.svg
@@ -0,0 +1 @@
+
\ No newline at end of file