CLI Reference
Complete reference for all Creek CLI commands and flags.
Global Flags
Every command supports these flags:
| Flag | Description |
|---|---|
--json | Output structured JSON (auto-enabled in non-TTY) |
--yes / -y | Skip confirmation prompts (auto-enabled in non-TTY) |
--help | Show help |
--version | Show 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 startingWhat 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
useLiveQueryandusePresence - 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 340msSupported project types:
| Type | Worker | Vite | Realtime |
|---|---|---|---|
| Worker + SPA | Yes | Yes | Yes |
| Worker only | Yes | No | Yes |
| SPA only | No | Yes | No |
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 subdirectoryBehavior:
- Has
creek.toml+ token → authenticated production deploy - Has
package.json→ auto-detect framework, build, sandbox deploy - Has
dist/,build/, orout/→ deploy directory as sandbox - Nothing found → show guidance
Deploy to Creek Button
Add a one-click deploy button to any GitHub repo README:
[](https://creek.dev/new?repo=https://github.com/YOUR/REPO)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 --jsoncreek projects
List all projects.
creek projects
creek projects --jsoncreek deployments
List recent deployments for the current project.
creek deployments
creek deployments --project my-app
creek deployments --jsoncreek 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 cwdFilter 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, URLsFilter 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 deploysLive 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 filterLive 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 --jsoncreek init
Create a creek.toml configuration file.
creek init
creek init --name my-app
creek init --json --yescreek claim <sandboxId>
Convert a sandbox preview into a permanent project.
creek claim a1b2c3d4
creek claim a1b2c3d4 --jsoncreek 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 --jsoncreek 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 projectcreek whoami
Show the currently authenticated user.
creek whoami
creek whoami --jsonConfiguration
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 # R2For 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 codes —
0success,1failure - Error format —
{"ok": false, "error": "...", "message": "..."}
# These are equivalent in CI/agent:
creek deploy ./dist --json --yes
creek deploy ./dist # auto-detects non-TTY