creek

Getting Started

Deploy your first site to the edge in 60 seconds.

Install

Creek runs via npx — no global install needed:

npx creek deploy --template landing

Or install globally:

npm install -g creek

After installing, you can use creek, ck, or crk interchangeably.

Try a Template

See Creek in action with zero setup — --template landing clones a ready-made Vite + React starter, builds it, and deploys it:

npx creek deploy --template landing
  Detected: vite-react
  Building...
  Live in 8.3s -> https://a1b2c3d4.creeksandbox.com

The template is a real, editable project — you own the code and can redeploy with your own changes.

Deploy Your Project

Navigate to any project with a package.json:

cd my-vite-app
npx creek deploy

Creek auto-detects your framework, runs the build, and deploys to a sandbox preview (60 minutes).

Deploy a Directory

Already have built files? Point Creek at any directory:

npx creek deploy ./dist

Deploy a Plain HTML File

Even a single index.html works:

echo '<h1>Hello</h1>' > index.html
npx creek deploy

Deploy Modes

ModeTriggerAccountTTL
Template--template <name>No60 min
SandboxAuto-detect (no creek.toml)No60 min
ProductionHas creek.toml + tokenYesPermanent

Make It Permanent

Sandbox deploys expire after 60 minutes. To keep your site:

# 1. Create an account
creek login

# 2. Claim your sandbox deploy
creek claim <sandboxId>

# 3. Or set up a permanent project
creek init
creek deploy

Supported Frameworks

Creek is Vite-first. Anything that's a Vite app — or a meta-framework built on top of Vite — deploys with zero config:

Vite apps (SPA) — auto-detected, zero config

  • Vite + React
  • Vite + Vue
  • Vite + Svelte
  • Vite + Solid

Vite meta-frameworks — auto-detected, zero config

  • Astro (Vite under the hood)
  • SvelteKit (Vite under the hood, server build experimental)
  • Nuxt (Vite under the hood, server build experimental)

Other frameworks — supported with varying maturity

  • TanStack Start
  • React Router (v7 / Remix)
  • Hono
  • Any static site (index.html fallback)

Work in progress: Next.js (via @solcreek/adapter-creek, currently routed through an OpenNextJS workaround — see solcreek/creek#1).

Why "Vite-first"? Creek's zero-config detection chain reads your framework config, package.json, and vite.config.* to infer the build command, output directory, and bindings. Vite apps are the most mature tier because the detection chain was designed against them first. SSR meta-frameworks are catching up as the respective adapters stabilize.

Local Development

Run the full Creek stack locally with a single command:

creek dev

This starts a local server with D1 (SQLite), KV, R2, and realtime WebSocket — all behind one port. Data persists in .creek/dev/ across restarts.

creek dev --reset    # Clear local data
creek dev --port 8080

If your creek.toml has cron or queue triggers, creek dev accepts stdin commands while running:

cron                  Trigger scheduled() handler
queue <message>       Send a message to queue() handler

See CLI Reference for details.

Triggers

Add cron schedules and a queue to your creek.toml:

[project]
name = "my-app"

[resources]
database = true

[triggers]
cron = ["0 */6 * * *"]   # Every 6 hours
queue = true              # Auto-provisions a CF Queue

In your worker, export scheduled() and queue() handlers alongside fetch(). Creek wires the bindings automatically. See CLI Reference and Realtime.

Next Steps

On this page