# Self-hosting & resources

> Run the same studio on your own infrastructure.

The same API runs on Cloudflare D1/R2 with Browser Rendering, or on Node 24+ with SQLite, files, and Chromium. Use the public studio or deploy your own copy under the MIT license.

```
npm ci
npm ci --prefix packages/cli
npm run build:cli
npx playwright install chromium
npm run build

# Set a stable 32-byte base64 ENCRYPTION_KEY and APP_URL
# in the server process environment before starting.
npm start
```

Node does not automatically load dotenv files. Keep the encryption key stable across restarts to retain access to encrypted provider keys. Set `APP_URL` to the canonical external origin and preserve `DATA_DIR` with its database and assets.

```
# Supply ENCRYPTION_KEY and APP_URL in the Compose environment.
docker compose up --build -d
docker compose logs --tail=100 studio
```

The container binds to `0.0.0.0:8787`; Compose persists `/data` in a named volume. Use HTTPS at a reverse proxy for public hosting. Cloudflare operators provision their own D1/R2/browser bindings, apply migrations, and set secrets before deploying.

## Export boundaries

- Import remote media before cloud binary export; the renderer has no external network access.
- Rendering is bounded by bytes and pixels: 16 megapixels per checked object/page and 64 megapixels per workload.
- WebM records actual motion; MP4 requires a supported encoder. Cloud motion is limited to 60 seconds. Browser and cloud motion exports share timeline audio cue timing and mixing; listen to the actual output.
- SVG is static. HTML may include the trusted interactive viewer. PPTX preserves legacy editable text/primitives and rasterizes structured layouts/components. React exports runnable frontend source with the document, component runtime and embedded media; GLB/glTF export scene geometry, materials, skinning and sampled animation.
- Selected Google Fonts are fetched from official font hosts with byte/time limits and embedded before isolated rendering. Local fonts need no font request; unavailable selected Google fonts return an explicit export error.
- Google Slides supports native text/shapes/HTTPS images; unsupported complex/private-image content fails explicitly.
- Provider and Google success require your credentials and account access. Browser WebMCP remains experimental.

[Deployment, secrets & backups](https://github.com/bestagentkits/design-studio-ai/blob/main/docs/deployment.md)[BYOK model capabilities](https://github.com/bestagentkits/design-studio-ai/blob/main/docs/providers.md)[CLI and skill release](https://github.com/bestagentkits/design-studio-ai/releases/tag/v0.4.3)[MIT license](https://github.com/bestagentkits/design-studio-ai/blob/main/LICENSE)

Dependency audit findings and their runtime boundaries are disclosed in the deployment guide. Successful rendering tests do not mean the dependency tree is audit-clean.
