Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Use this skill for Concave-specific behavior and Concave-vs-Convex differences in this repo.
Use concave-parity when the task is specifically about parity gaps, local
workarounds, or removing Concave-specific bandaids after upstream catches up.
Keep the boundary hard:
public kitcn CLI supports backend: "concave" and --backend concave
public kitcn CLI still defaults to Convex
/example stays on Convex
the big convex-test suites stay on Convex tooling
Concave is both a real kitcn backend and the repo's preferred agent/CI runtime lane
Do not restate generic Convex docs here. The convex skill already owns that.
Upstream Concave Facts That Actually Matter
These are the Concave-only facts worth keeping in your head.
Runtime model
Concave is Convex-compatible, self-hosted, and multi-runtime.
Supported runtimes marked production upstream:
Cloudflare Workers
Bun
Node.js
Bun is the default local runtime.
Node.js requires 22.5+ and --experimental-sqlite.
Cloudflare is the recommended production target.
Deployment shape
Cloudflare uses Workers + Durable Objects.
DO SQLite is the default document store on Cloudflare.
D1 is optional when you need different scaling characteristics.
R2 is only needed for ctx.storage.
Self-hosted Bun/Node and desktop embeddings are single-instance by default because SQLite needs exclusive file access.
concave build can compile a standalone Bun-based binary; useful, but still single-instance with SQLite.
Local dev shape
concave dev auto-picks runtime; --bun, --node, and --cf force it.
alpha.14 defaults local dev to 3210.
Bun/Node local data lives in ./.concave/local.
Bun dev binds 0.0.0.0 by default. That is LAN-visible. 127.0.0.1 is the safer local-only bind.
Local dashboard lives at /_dashboard.
DevTools are web-only and designed around Vite/manual client init, not React Native.
Configuration / API differences
concave.config.ts is real Concave surface area.
convex.json works now. That matters here because kitcn already uses it.
Concave-generated fixtures/next/convex/functions/_generated/dataModel.d.ts is still dynamic
So today, in this repo path, Concave is not honoring that flag.
api.d.ts override is gone
Current repo truth:
alpha.14 emits the same api.d.ts shape our old source-backed override used
to force
kitcn no longer post-writes _generated/api.d.ts
Meaning:
if api.d.ts drifts again, treat it as a fresh upstream regression
do not quietly resurrect the old overwrite helper
Use plain bun, not bun test, for the smoke lane
Root bun test preloads Happy DOM here.
That poisoned ConvexHttpClient behavior for the Concave smoke lane.
Keep the smoke entry as:
bun ./test/concave/run-smoke.ts
Keep the adapter tiny
Do not invent a second fake runtime layer on top of backend.
The right model is:
one public selector: backend
one internal mapping: concave -> current Bun adapter
native backend flags stay native
Read Before Editing
Start with repo wiring:
packages/kitcn/src/cli/backend-core.ts
packages/kitcn/src/cli/commands/init.ts
packages/kitcn/src/cli/commands/init.test.ts
tooling/fixtures.ts
tooling/fixtures.test.ts
tooling/scenarios.ts
tooling/scenarios.test.ts
test/concave/run-smoke.ts
test/concave/fixture/**
.github/workflows/ci.yml
Then read Concave docs starting from:
https://docs.concave.dev/llms.txt
Do Not
do not add a second selector like --runtime concave
do not switch /example to Concave
do not migrate the big convex-test suites just because Concave exists
do not document generic Convex APIs here
do not assume Concave codegen output equals Convex codegen output
Verification
When touching Concave repo-runtime wiring, run:
bun test packages/kitcn/src/cli/commands/init.test.ts ./tooling/fixtures.test.ts ./tooling/scenarios.test.ts
bun test packages/kitcn/src/cli/cli.test.ts
bun run test:concave
bun run fixtures:check
bun run scenario:check
If package code changed too, also run:
bun --cwd packages/kitcn build
bun lint:fix
bun typecheck
Skill Sync
When Concave docs or repo usage changes, update this skill with this exact loop.