Deploy experiments to Cloudflare Workers using click-to-deploy or manual methods
Every experiment in this repository can be deployed independently to Cloudflare Workers. This guide covers all deployment methods and configuration steps.
The fastest way to deploy any experiment is using Cloudflare’s one-click deployment:
1
Choose an experiment
Navigate to any experiment page and click the “Deploy to Cloudflare Workers” button.Each experiment README includes a deploy button linking to its source code.
2
Authenticate with Cloudflare
Sign in to your Cloudflare account or create one if you don’t have an account.The deployment system will request permissions to deploy Workers on your behalf.
3
Configure resources
Some experiments require additional resources:
D1 databases: Created automatically during deployment
KV namespaces: Created automatically
R2 buckets: Created automatically
Browser Rendering: Enabled automatically (requires plan upgrade)
Workers AI: Enabled automatically (requires plan upgrade)
The deployment wizard guides you through any required setup.
4
Deploy
Click the final deploy button. Your Worker will be deployed to a *.workers.dev subdomain.The deployment typically completes in 10-30 seconds.
Deploy experiments with no external dependencies (most experiments):
Copy
Ask AI
# Navigate to experiment directorycd experiments/is-it-down# Install dependenciesnpm install# Test locallynpm run dev# Visit http://localhost:8787# Deploy to productionnpm run deploy# or: wrangler deploy
Your Worker will be deployed to https://{experiment-name}.{your-subdomain}.workers.dev.
Basic experiments include: Is It Down, Where Am I, Website Metadata Extractor, Dependency Analyzer, Website to API, URL DNS Lookup, Website DevTools Inspector, AI Bot Visibility, Website to llms.txt
Experiments using Workers AI require additional setup:
Copy
Ask AI
cd experiments/ai-website-summarynpm install# Workers AI is automatically bound in wrangler.json# No additional configuration needed# Test with remote AI (local dev doesn't support AI)npm run dev -- --remote# Deploynpm run deploy
Workers AI requires the Workers Paid plan ($5/month). The first 10,000 AI requests per day are included.
cd experiments/screenshot-apinpm install# Browser Rendering requires remote mode for local testingnpm run dev -- --remote# Deploynpm run deploy
Browser Rendering requires the Workers Paid plan. Pricing is per browser session.
The Browser binding is automatically configured in wrangler.json:
Copy
Ask AI
{ "browser": { "binding": "BROWSER" }}
Deploy experiments with database storage:
Copy
Ask AI
cd experiments/link-shortenernpm install# 1. Create D1 databasewrangler d1 create link-shortener-db# Copy the returned database_id# 2. Update wrangler.json with the database_id# Replace 00000000-0000-0000-0000-000000000000 with your database_id# 3. Create KV namespacewrangler kv namespace create LINKS_CACHE# Copy the returned id# 4. Update wrangler.json with the KV namespace id# 5. Run migrations locallynpm run db:migrate:local# 6. Test locallynpm run dev# 7. Run migrations on productionnpm run db:migrate# 8. Deploynpm run deploy
D1 and KV are included in the Workers Free plan with usage limits. Paid plan removes limits.
Deploy experiments with object storage:
Copy
Ask AI
cd experiments/r2-storagenpm install# 1. Create R2 buckets in Cloudflare Dashboard# - r2-storage-bucket (private)# - r2-storage-public (public)# 2. Enable public access on r2-storage-public:# Dashboard → R2 → r2-storage-public → Settings → Enable Public Access# Copy the public URL (e.g., https://pub-xxxxx.r2.dev)# 3. Update wrangler.json with bucket names# Set PUBLIC_BUCKET_URL in vars section# 4. Test with remote R2 (local mode doesn't support public URLs)npm run dev -- --remote# 5. Deploynpm run deploy
Some experiments require environment variables. Set them in the dashboard or via Wrangler:
Dashboard
Wrangler CLI
Go to Workers & Pages
Select your Worker
Go to Settings → Variables
Add variables (Plain text or Secret)
Click Save
Set secrets via Wrangler:
Copy
Ask AI
# Set a secret (encrypted)wrangler secret put API_KEY# Enter the value when prompted# Set a plain text variable (in wrangler.json){ "vars": { "PUBLIC_URL": "https://example.com" }}