Cloudflare Storage
The Cloudflare KV storage implementation provides a globally distributed, serverless key-value store solution using Cloudflare Workers KV.
Cloudflare KV storage does not support the observability domain. Traces from the DefaultExporter cannot be persisted to KV, and Mastra Studio's observability features won't work with Cloudflare KV as your only storage provider. To enable observability, use composite storage to route observability data to a supported provider like ClickHouse or PostgreSQL.
InstallationDirect link to Installation
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/cloudflare@latest
pnpm add @mastra/cloudflare@latest
yarn add @mastra/cloudflare@latest
bun add @mastra/cloudflare@latest
UsageDirect link to Usage
import { CloudflareStore } from "@mastra/cloudflare";
// --- Example 1: Using Workers Binding ---
const storageWorkers = new CloudflareStore({
id: "cloudflare-workers-storage",
bindings: {
threads: THREADS_KV, // KVNamespace binding for threads table
messages: MESSAGES_KV, // KVNamespace binding for messages table
// Add other tables as needed
},
keyPrefix: "dev_", // Optional: isolate keys per environment
});
// --- Example 2: Using REST API ---
const storageRest = new CloudflareStore({
id: "cloudflare-rest-storage",
accountId: process.env.CLOUDFLARE_ACCOUNT_ID!, // Cloudflare Account ID
apiToken: process.env.CLOUDFLARE_API_TOKEN!, // Cloudflare API Token
namespacePrefix: "dev_", // Optional: isolate namespaces per environment
});
ParametersDirect link to Parameters
id:
bindings?:
accountId?:
apiToken?:
namespacePrefix?:
keyPrefix?:
Additional NotesDirect link to Additional Notes
Schema ManagementDirect link to Schema Management
The storage implementation handles schema creation and updates automatically. It creates the following tables:
threads: Stores conversation threadsmessages: Stores individual messagesmetadata: Stores additional metadata for threads and messages
Consistency & PropagationDirect link to Consistency & Propagation
Cloudflare KV is an eventually consistent store, meaning that data may not be immediately available across all regions after a write.
Key Structure & NamespacingDirect link to Key Structure & Namespacing
Keys in Cloudflare KV are structured as a combination of a configurable prefix and a table-specific format (e.g., threads:threadId).
For Workers deployments, keyPrefix is used to isolate data within a namespace; for REST API deployments, namespacePrefix is used to isolate entire namespaces between environments or applications.