# C3 CLI Reference

## Invocation

```bash
npm create cloudflare@latest [name] [-- flags]  # NPM requires --
yarn create cloudflare [name] [flags]
pnpm create cloudflare@latest [name] [-- flags]
```

## Core Flags

| Flag               | Values                                                                                        | Description                               |
| ------------------ | --------------------------------------------------------------------------------------------- | ----------------------------------------- |
| `--type`           | `hello-world`, `web-app`, `demo`, `pre-existing`, `remote-template`                           | Application type                          |
| `--platform`       | `workers` (default), `pages`                                                                  | Target platform                           |
| `--framework`      | `next`, `remix`, `astro`, `react-router`, `solid`, `svelte`, `qwik`, `vue`, `angular`, `hono` | Web framework (requires `--type=web-app`) |
| `--lang`           | `ts`, `js`, `python`                                                                          | Language (for `--type=hello-world`)       |
| `--ts` / `--no-ts` | -                                                                                             | TypeScript for web apps                   |

## Deployment Flags

| Flag                       | Description                                           |
| -------------------------- | ----------------------------------------------------- |
| `--deploy` / `--no-deploy` | Deploy immediately (prompts interactive, skips in CI) |
| `--git` / `--no-git`       | Initialize git (default: yes)                         |
| `--open`                   | Open browser after deploy                             |

## Advanced Flags

| Flag                                | Description                                      |
| ----------------------------------- | ------------------------------------------------ |
| `--template=user/repo`              | GitHub template or local path                    |
| `--existing-script=./src/worker.ts` | Existing script (requires `--type=pre-existing`) |
| `--category=ai\|database\|realtime` | Demo filter (requires `--type=demo`)             |
| `--experimental`                    | Enable experimental features                     |
| `--wrangler-defaults`               | Skip wrangler prompts                            |

## Environment Variables

```bash
CLOUDFLARE_API_TOKEN=xxx    # For deployment
CLOUDFLARE_ACCOUNT_ID=xxx   # Account ID
CF_TELEMETRY_DISABLED=1     # Disable telemetry
```

## Exit Codes

`0` success, `1` user abort, `2` error

## Examples

```bash
# TypeScript Worker
npm create cloudflare@latest my-api -- --type=hello-world --lang=ts --no-deploy

# Next.js on Pages
npm create cloudflare@latest my-app -- --type=web-app --framework=next --platform=pages --ts

# Astro blog
npm create cloudflare@latest my-blog -- --type=web-app --framework=astro --ts --deploy

# CI: non-interactive
npm create cloudflare@latest my-app -- --type=web-app --framework=next --ts --no-git --no-deploy

# GitHub template
npm create cloudflare@latest -- --template=cloudflare/templates/worker-openapi

# Convert existing project
npm create cloudflare@latest . -- --type=pre-existing --existing-script=./build/worker.js
```
