Files
dotfiles/dot_agents/skills/cloudflare/references/pulumi
Prad Nukala 6406208b35 shell: fish functions -> ~/.local/bin executables + bash/zsh ports; manage ~/.agents
- 16 cross-shell utilities converted to sh/bash chezmoi executables:
  ai c2p cp-appid extract_agents fab gdc gh-sonr-org-migrate ghg-clone
  ghn gho git-summary launch_omp_livediff_overlay lc-elir mdcp mdp pj
  (ghg-clone not named ghg: unrelated cargo binary owns that name)
- cwd/history helpers stay per-shell: yy c cd clip-last + ghg/ghn/gho
  cd-wrappers in bash/functions/ and zsh/functions/, loaded by rc files
- fish keeps only shell-state functions; converted ones now hit PATH
- cp-appid ignore gating moved to .local/bin path
- dot_agents/skills: 82 skills materialized from dotstate storage so
  dot_claude skill symlinks resolve on fresh bootstrap; dotstate
  profile/symlinks.json released .agents/skills .bashrc .zshrc
2026-08-10 15:15:06 -04:00
..

Cloudflare Pulumi Provider

Expert guidance for Cloudflare Pulumi Provider (@pulumi/cloudflare).

Overview

Programmatic management of Cloudflare resources: Workers, Pages, D1, KV, R2, DNS, Queues, etc.

Packages:

  • TypeScript/JS: @pulumi/cloudflare
  • Python: pulumi-cloudflare
  • Go: github.com/pulumi/pulumi-cloudflare/sdk/v6/go/cloudflare
  • .NET: Pulumi.Cloudflare

Version: v6.x

Core Principles

  1. Use API tokens (not legacy API keys)
  2. Store accountId in stack config
  3. Match binding names across code/config
  4. Use module: true for ES modules
  5. Set compatibilityDate to lock behavior

Authentication

import * as cloudflare from "@pulumi/cloudflare";

// API Token (recommended): CLOUDFLARE_API_TOKEN env
const provider = new cloudflare.Provider("cf", { apiToken: process.env.CLOUDFLARE_API_TOKEN });

// API Key (legacy): CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL env
const provider = new cloudflare.Provider("cf", { apiKey: process.env.CLOUDFLARE_API_KEY, email: process.env.CLOUDFLARE_EMAIL });

// API User Service Key: CLOUDFLARE_API_USER_SERVICE_KEY env
const provider = new cloudflare.Provider("cf", { apiUserServiceKey: process.env.CLOUDFLARE_API_USER_SERVICE_KEY });

Setup

Pulumi.yaml:

name: my-cloudflare-app
runtime: nodejs
config:
  cloudflare:apiToken:
    value: ${CLOUDFLARE_API_TOKEN}

Pulumi..yaml:

config:
  cloudflare:accountId: "abc123..."

index.ts:

import * as pulumi from "@pulumi/pulumi";
import * as cloudflare from "@pulumi/cloudflare";
const accountId = new pulumi.Config("cloudflare").require("accountId");

Common Resource Types

  • Provider - Provider config
  • WorkerScript - Worker
  • WorkersKvNamespace - KV
  • R2Bucket - R2
  • D1Database - D1
  • Queue - Queue
  • PagesProject - Pages
  • DnsRecord - DNS
  • WorkerRoute - Worker route
  • WorkersDomain - Custom domain

Key Properties

  • accountId - Required for most resources
  • zoneId - Required for DNS/domain
  • name/title - Resource identifier
  • *Bindings - Connect resources to Workers

Reading Order

Order File What When to Read
1 configuration.md Resource config for Workers/KV/D1/R2/Queues/Pages First time setup, resource reference
2 patterns.md Architecture patterns, multi-env, component resources Building complex apps, best practices
3 api.md Outputs, dependencies, imports, dynamic providers Advanced features, integrations
4 gotchas.md Common errors, troubleshooting, limits Debugging, deployment issues

In This Reference

  • configuration.md - Provider config, stack setup, Workers/bindings
  • api.md - Resource types, Workers script, KV/D1/R2/queues/Pages
  • patterns.md - Multi-env, secrets, CI/CD, stack management
  • gotchas.md - State issues, deployment failures, limits

See Also

  • terraform - Alternative IaC for Cloudflare
  • wrangler - CLI deployment alternative
  • workers - Worker runtime documentation