The same bindings, not a copy
In dev mode the studio runs inside the same workerd process as your worker, wired to the same D1, KV, R2 and Durable Object instances. Not a mirror synced over disk — the same objects.
local-first developer tooling
local-cf boots your worker and a studio sidecar in one runtime, so the dashboard reads and writes the exact same D1, KV, R2, Durable Objects and Queues your code does.
npx local-cfRead the docsIn dev mode the studio runs inside the same workerd process as your worker, wired to the same D1, KV, R2 and Durable Object instances. Not a mirror synced over disk — the same objects.
The dashboard is a static build shipped inside the npm package and served by the sidecar itself. No hosted domain, no account, no network.
Attach mode shares files, not memory. Every binding says which it is, so you always know whether you are looking at live Durable Object state or yesterday's flush.
Apply and track D1 migrations, import and export KV, and snapshot the whole local state before a risky change — then restore it in one click.
The sidecar is a Hono app and the dashboard consumes it through hc<ApiType>. Routes and UI cannot drift, with no OpenAPI document in between.
Every write made through the dashboard is recorded, and the ones with a recoverable inverse can be undone.
| Mode | Command | D1 / KV / R2 | Durable Objects & Queues |
|---|---|---|---|
| A — shared runtime | local-cf | Same live objects | Live, including in-memory state |
| B — attached | local-cf attach | Same files on disk | Not available across processes |
| C — remote | local-cf remote | Your real Cloudflare account | No REST API equivalent |