Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/cloudflare/cloudflare-os/llms.txt

Use this file to discover all available pages before exploring further.

Every Cloudflare OS deployment ships with an /admin panel where designated administrators can customize how the platform looks and behaves for all users — without touching environment variables or redeploying. The admin panel covers what this guide calls “soft” configuration: branding, agent instructions, Gatekeeper availability, output format menus, and the Explore page. Security-critical configuration (sign-in providers, password login) is deliberately kept out of the panel and stays env-var driven.

Becoming an admin

Admin access is granted by listing usernames in the ADMINS environment variable on the Workshop backend worker. Set it to a JSON array of usernames (the canonical uniqueName the user logs in with, typically their email address):
["alice@example.com", "bob@example.com"]
The #isAdmin() check happens once when the AdminApi capability is minted for a session. Users not listed in ADMINS receive null from getAdminApi() and cannot call any admin methods. There is no in-product way to grant admin access — it always requires an env-var change and redeploy.
Changing the ADMINS env var, AUTH_GATEKEEPERS, or DISABLE_PASSWORD_AUTH requires a redeployment. These settings are not configurable through the Admin Panel. A compromised admin session cannot be used to escalate privileges or add unauthorized sign-in methods.

Admin settings overview

The Admin Panel is divided into several sections, each backed by the AdminConfig object owned by the AdminSettings Durable Object.
AdminSettings stores config in a Durable Object and mirrors it to a single reserved KV key (.adminConfig) for cheap hot-path reads. The DO is the only writer. This means updates are consistent and immediately visible to all workers that call readAdminConfig(env).

Site customization

Site name

The siteName field sets the text shown next to the top-bar logo. Leave it empty to use the default deployment name.

Custom logo

siteLogoConfigured marks whether image bytes have been stored separately. Upload a logo from the Branding section.

Accent color

accentColor accepts a hex string (e.g. #0050D0). Leave empty to use the default theme.

Announcement banner

announcement is a Markdown string rendered as a centered top-bar notice. Use it for maintenance windows, new-feature callouts, or policy reminders.
There is also a full-width banner option (a BannerConfig with text and an accent color) for more prominent deployment-wide notices.

Agent instructions

The instanceInstructions field is appended to the agent system prompt for every user in your deployment. Use it to inject organization-specific context — your company’s style guide, preferred tools, internal terminology, or policies the agent should follow.
Our company uses Linear for issue tracking, not Jira. Always prefer the Linear gatekeeper
when the user asks about tasks or bugs. Code should follow the Google TypeScript style guide.
Instructions are wrapped in a <deployment_instructions> block and marked as lower-priority than user safety instructions. Keep them to a few sentences or short paragraphs — the text is included in every agent turn.

Signup control

The signupsEnabled boolean toggles whether new user account creation is allowed. Disabling it is an access toggle, not an authentication change — existing accounts continue to work, but new users cannot register. To fully restrict who can authenticate, adjust AUTH_GATEKEEPERS (the env var that controls which OAuth providers are offered).

Managing Gatekeepers

The Gatekeepers panel controls which vendor integrations are available to users and how they are provisioned.

Enabling and disabling vendors

Set disabledGatekeepers to a list of vendor IDs to completely disable those integrations. A disabled vendor is not shown on the Connectors page, and getGatekeeperClassFor() enforces this at the capability level — Gadget and agent code cannot reach disabled vendors. You can also disable specific resource types within a vendor using disabledResources:
{
  "disabledResources": {
    "google": ["https://mail.google.com/*"]
  }
}
This would disable the Gmail Mailbox resource type from the Google integration while leaving Google Docs, Sheets, and BigQuery available.

Auto-provisioning modes

For Gatekeepers that declare autoProvisionsAccount (such as the Context Library and Scheduler), the admin picks one of three modes:
ModeBehavior
disabledOffered to no one. Existing accounts go dormant.
optionalUsers can opt in from the Connectors page. Nothing is auto-provisioned. This is the default.
enabledAn account is automatically provisioned for every user and hidden from the Connectors list.
Set these in ambientGatekeeperModes:
{
  "ambientGatekeeperModes": {
    "context": "enabled",
    "scheduler": "optional"
  }
}
When a vendor is set to enabled, the Workshop auto-provisions an account on first use and silently folds it into the owner’s agent context as a named binding. Users see it working without needing to connect anything manually.

Output formats

The Formats panel controls which blueprints appear in the New Document, New Slides, and similar menus throughout the product.

Promoting a blueprint as a format

Each entry in the formats array is a FormatCuration record:
type FormatCuration = {
  blueprintId: string;
  enabled: boolean;
  agentHint?: string;           // One line telling the agent when to prefer this format
  overrides?: Partial<BlueprintOutput>; // Override noun, plural, icon, or id
};
The blueprint itself declares its noun, plural, and icon (e.g. "Slide deck", "Slide decks", PhPresentation). The overrides field lets the admin substitute the deployment’s own naming without modifying the blueprint — for example, an organization that calls its decks “Briefings” can set overrides: { noun: "Briefing", plural: "Briefings" }. This applies to every Gadget instantiated from that blueprint going forward.

Bundled format blueprints

Two blueprints are included with every Cloudflare OS deployment: format.document and format.slides. They are auto-installed on first request and appear in the Formats panel automatically. You can disable, reorder, or override them like any other promoted format.

Agent hints

The agentHint field (max 400 characters) is a one-sentence note injected into the agent’s system prompt on every turn, telling it when to prefer this format — for example, “prefer for contracts, memos, and reports”. Keep these short: every enabled format’s hint is included in every agent context. The Explore page shows blueprints that have been featured by an admin. Any user can publish a blueprint, but only admins can mark one as featured, making it visible to the whole deployment.
1

Find the blueprint

Browse to the blueprint on the Explore page or navigate directly to it by ID.
2

Toggle featured status

Click the Feature button (admins only). Unfeaturing works the same way.
3

Blueprint appears for all users

The setBlueprintFeatured(blueprintId, featured) RPC updates the blueprint’s metadata. Featured blueprints appear in the /explore page listing for every user on the deployment.

AdminApi reference

The AdminApi capability is obtained by calling getAdminApi() on an AuthenticatedApi session. It returns null for non-admins. Because the admin check happens once at capability-mint time, individual methods do not re-check.
MethodDescription
setSiteName(name)Set the site name shown next to the top-bar logo. Pass "" to reset to the default.
setInstanceInstructions(text)Replace the agent system-prompt instructions. Pass "" to clear.
setGatekeeperMode(vendorId, mode)Set a vendor’s availability mode (disabled / optional / enabled).
setResourceEnabled(vendorId, urlPattern, enabled)Enable or disable a specific resource type for a vendor.
setAnnouncement(text)Set or clear the centered top-bar notice.
setBanner(text, color)Set or hide the full-width banner.
setAccentColor(color)Set the deployment accent color (hex) or "" to reset.
setBlueprintFeatured(blueprintId, featured)Mark or unmark a published blueprint as featured on the Explore page.
All other admin operations (uploading a custom logo, reordering format entries, managing Gatekeeper modes) are also exposed through AdminApi — refer to packages/workshop-shared/src/api.ts for the full interface.

Build docs developers (and LLMs) love