creek

CLI Reference

Complete reference for all Creek CLI commands and flags.

Global Flags

Every command supports these flags:

FlagDescription
--jsonOutput structured JSON (auto-enabled in non-TTY)
--yes / -ySkip confirmation prompts (auto-enabled in non-TTY)
--helpShow help
--versionShow version

Commands

creek dev

Start a local development server with full Creek runtime (D1, KV, R2, realtime sync).

creek dev                       # Start on port 3000
creek dev --port 8080           # Custom port
creek dev --reset               # Clear local data before starting

What it runs:

  • Worker — Your Hono/Worker code via Miniflare (Cloudflare's local runtime)
  • Database — Local D1 (SQLite) with data persisted in .creek/dev/
  • Realtime — Local WebSocket server for useLiveQuery and usePresence
  • Vite HMR — Client-side hot reload (auto-detected)

All behind a single port. Matches production behavior.

creek dev

App:       http://localhost:3000
Worker:    worker/index.ts (D1)
Realtime:  ws://localhost:3000
Data:      .creek/dev/

Ready in 340ms

Supported project types:

TypeWorkerViteRealtime
Worker + SPAYesYesYes
Worker onlyYesNoYes
SPA onlyNoYesNo

SSR frameworks (Next.js, TanStack Start) use their own dev servers. Coming soon: creek dev proxy mode to unify SSR dev with Creek bindings.

creek deploy [dir]

Deploy a project or directory.

creek deploy                           # Auto-detect framework, build, deploy
creek deploy ./dist                    # Deploy a pre-built directory
creek deploy --template landing        # Deploy a ready-made starter
creek deploy --dry-run                 # Show the plan without executing
creek deploy --skip-build              # Skip the build step
creek deploy --json                    # Structured JSON output (agent-friendly)

Deploy from GitHub URL:

creek deploy https://github.com/user/repo          # Clone + detect + deploy
creek deploy https://github.com/user/repo#branch   # Specific branch
creek deploy github.com/user/repo --path apps/web   # Monorepo subdirectory

Behavior:

  1. Has creek.toml + token → authenticated production deploy
  2. Has package.json → auto-detect framework, build, sandbox deploy
  3. Has dist/, build/, or out/ → deploy directory as sandbox
  4. Nothing found → show guidance

Deploy to Creek Button

Add a one-click deploy button to any GitHub repo README:

[![Deploy to Creek](https://creek.dev/button.svg)](https://creek.dev/new?repo=https://github.com/YOUR/REPO)

Deploy to Creek

Clicking the button takes visitors to a landing page with a ready-to-run deploy command. No account needed — deploys to a 60-minute sandbox preview.

creek status [id]

Check project or sandbox status.

creek status                    # Current project (from creek.toml)
creek status a1b2c3d4           # Sandbox status (no auth needed)
creek status --json

creek projects

List all projects.

creek projects
creek projects --json

creek deployments

List recent deployments for the current project.

creek deployments
creek deployments --project my-app
creek deployments --json

creek logs

Read recent log entries for a project. Console output (console.log/warn/error) and uncaught exceptions from every request your Worker handled are captured per-tenant and archived for 7 days.

creek logs                           # Last 1 hour (default)
creek logs --since 30m               # Last 30 min (relative: s/m/h/d)
creek logs --since 2026-04-13T18:00Z # ISO timestamp also accepted
creek logs --limit 500               # Up to 1000 per call
creek logs --json                    # ndjson, pipe to jq
creek logs --project other-app       # Not in cwd

Filter by what went wrong:

creek logs --outcome exception              # Only failed invocations
creek logs --outcome exceededCpu,exception  # Multiple outcomes (comma-separated)
creek logs --level error                    # Only entries with error-level console output
creek logs --search "TypeError"             # Substring match on messages, exceptions, URLs

Filter by deploy variant:

creek logs --deployment a1b2c3d4            # Specific deployment preview (8-hex id)
creek logs --branch feat-checkout           # Specific branch preview
creek logs --script-type production         # Exclude preview deploys

Live tail via WebSocket, until Ctrl+C:

creek logs --follow                         # Historical context + stream new entries
creek logs --follow --outcome exception     # Alert on errors only, live
creek logs --follow --json | jq '.outcome'  # Pipe to jq or any shell filter

Live tail prints the most recent historical entries first (so you don't stare at an empty terminal waiting for traffic), then streams new entries as they arrive. Dedup is automatic — you won't see the same entry twice across the historical → live boundary.

Output shape:

Each log line is a JSON object with the producer Worker's outcome, request metadata, and captured console/exception output:

{
  "v": 1,
  "timestamp": 1776108325010,
  "team": "acme",
  "project": "my-app",
  "scriptType": "production",
  "outcome": "exception",
  "request": { "url": "https://my-app-acme.bycreek.com/api/x", "method": "GET", "status": 500 },
  "logs": [
    { "level": "error", "message": ["TypeError: x is undefined"], "timestamp": 1776108325009 }
  ],
  "exceptions": []
}

Sensitive request headers (Authorization, Cookie, etc.) are redacted at ingest — Creek never stores them.

creek login

Authenticate with Creek.

creek login                     # Browser-based (default)
creek login --headless          # Paste API key manually
creek login --token <key>       # Non-interactive (CI/CD)
creek login --json

creek init

Create a creek.toml configuration file.

creek init
creek init --name my-app
creek init --json --yes

creek claim <sandboxId>

Convert a sandbox preview into a permanent project.

creek claim a1b2c3d4
creek claim a1b2c3d4 --json

creek env

Manage environment variables.

creek env set DATABASE_URL "postgres://..."
creek env ls                    # Values redacted by default
creek env ls --show             # Show plaintext values
creek env rm DATABASE_URL
creek env ls --json

creek domains

Manage custom domains. See Custom Domains for full guide.

creek domains add app.example.com   # Add a custom domain
creek domains ls                    # List all domains
creek domains activate app.example.com  # Manually activate
creek domains rm app.example.com    # Remove a domain
creek domains ls --json             # JSON output
creek domains add app.example.com --project my-app  # Specify project

creek whoami

Show the currently authenticated user.

creek whoami
creek whoami --json

Configuration

creek.toml

[project]
name = "my-app"
framework = "vite-react"     # Optional — auto-detected

[build]
command = "npm run build"
output = "dist"
worker = "worker/index.ts"   # Optional — enables creek dev + Worker deploy

[resources]
database = true     # D1
cache = false       # KV
storage = false     # R2

For AI Agents

Creek is designed for programmatic use:

  • Non-TTY auto-detection — pipes, CI, and agents automatically get JSON output
  • --json --yes — explicit structured output, skip all prompts
  • Exit codes0 success, 1 failure
  • Error format{"ok": false, "error": "...", "message": "..."}
# These are equivalent in CI/agent:
creek deploy ./dist --json --yes
creek deploy ./dist              # auto-detects non-TTY

On this page