Deploy FrameKit
FrameKit’s supported initial deployment is one long-lived Node.js process per container, with HTTPS and request throttling provided by an external reverse proxy or load balancer. The process hosts Studio and synchronous server-side PNG rendering; the access API is enabled only when FRAMEKIT_AUTH_ENABLED=true.
Deployment sequence
Section titled “Deployment sequence”- Choose the auth mode explicitly. Set
FRAMEKIT_AUTH_ENABLED=truebefore exposing the process to an untrusted network; only then set a strongFRAMEKIT_ADMIN_PASSWORDfor first-user bootstrap. - If authentication is enabled, provide a writable, durable location for SQLite so users, sessions, and API tokens survive restarts.
- Install the Playwright Chromium browser and Linux dependencies, or use the canonical Dockerfile that does so during the image build.
- Run a successful production build with
pnpm framekit build. - Start the built application with
pnpm framekit start. - Put HTTPS and request throttling in front of the process before public exposure. In authenticated mode, throttle login traffic as well.
State boundaries
Section titled “State boundaries”When authentication is enabled, SQLite stores users, sessions, and API-token
metadata. Open mode does not initialize SQLite and does not create an anonymous
administrator. Render jobs are different: they live in a process-local
globalThis map, expire after 120 seconds, and disappear when the process
restarts. A durable SQLite volume therefore does not make an in-flight render
job durable.
The renderer reuses one Chromium browser during the process lifetime, but gives each render an isolated context and page. Capacity is bounded per request. The timeout aborts or cancels render work; page and context cleanup is attempted in finally, and that cleanup wait has no separate documented limit. The supported topology is not a serverless function or a set of replicas that expects process-local render jobs and browser state to be shared.