Canvas is a powerful node-graph editor that brings every Beeble AI model into a single, unified workspace. Build custom processing pipelines by wiring together tools like SwitchX, Image Generator, and Video Matte. Simply import your raw footage, map out your node network, and generate production-ready results. With the flexibility to branch off creative variations at any step, Canvas gives you complete control from raw input to final render.
Same model as the standalone SwitchX product. Source and alpha handles are video-only. If you need Fill Mode, leave the alpha input disconnected. Set a random seed for reproducibility.
LLM
prompt media
text
Generate text from a prompt using an LLM. Supports up to 4 media inputs (image or video). Use @ to reference connected media in your prompt.
Image Generator
prompt images
image
Supports 1 to 4 reference images.
Video Generator
prompt start / end frame reference media
video
Generate a short clip via external models (e.g., Seedance 2.5). Pick a model in the footer:
Text-to-Video — prompt only
Image-to-Video — needs a Start Frame (End Frame optional)
Reference-to-Video — repeatable reference slots; the per-model cap follows the selected model (e.g. Seedance 2.5 accepts up to 30 images / 10 videos, Seedance 2.0 up to 9 images / 3 videos)
Effect Generator
source mask prompt
image / video
Describe an effect in a sentence — God Rays, Glitch, Old Film, Halftone — and Generate writes a GPU shader with its own controls. Optional mask (white = effect, black = source), up to 4 reference images; accepted effects are saved to your library. Full guide: Effect Generator.
Video Matte
video
alpha RGBA
Two outputs: Alpha (grayscale matte) and RGBA (source merged with alpha). Two modes: Auto (one-click) or Select (interactive SAM editor). Choose MatAnyone 2 (default) or MatAnyone for general footage, and CorridorKey 2.0 or CorridorKey for green-screen keys. Export the RGBA composite as MOV or a PNG sequence, and the alpha as a PNG sequence.
VFX Pass Generator
image / video
image / video × 6
Extracts PBR material maps (BaseColor, Normal, Depth, Roughness, Specular, Metallic) from an image or video using SwitchLight 3.0. Export passes individually or all at once with Export All, including PNG sequences.
Depth Generator
image / video
image / video
Extracts a depth map from an image or video using Video Depth Anything. Export as a 16-bit EXR for higher-fidelity depth workflows.
Video Upscaler
video
video
Upscale a video 1×–4× (up to 4K) with Topaz Video AI. Pick a Mode in the footer (every standard Topaz model fal offers: Proteus, Artemis, Gaia and Nyx families); codec, frame interpolation and the Topaz tuning sliders live under Advanced.
Image Upscaler
image
image
Upscale an image 1×–4× (up to 8K) with Topaz Gigapixel AI. Pick a Mode in the footer (Standard V2, Low Resolution V2, CGI, High Fidelity V2, Text Refine, generative Recovery / Redefine / Wonder, and more).
Image Describer
prompt images
text
Generate a detailed text description of connected image(s) using an LLM. Connect up to 4 images. Comes with a built-in, editable prompt — hit Reset to restore the default.
Video Describer
prompt videos
text
Generate a detailed text description of connected video(s) using an LLM. Connect up to 4 videos, each up to 5 minutes. Comes with a built-in, editable prompt — hit Reset to restore the default.
Crop an image or video. Interactive overlay or numeric inputs.
Resize
image / video
image / video
Resize an image or video to target dimensions
Curves
image / video
image / video
Adjust the tonal range with interactive RGB and per-channel (R/G/B) curves. Drag points to shape the curve; click empty space to add a point; double-click or drag a point off the graph to remove it.
Invert
image / video
image / video
Invert RGB colors of an image or video.
Rotate / Flip
image / video
image / video
Rotate an image or video in 90° increments, or flip it horizontally or vertically.
Erode / Dilate
image / video mask
image / video
Dilate (grow) or erode (shrink) bright regions. Typically chained after Video Matte for matte cleanup. Strength ranges from −200 to +200. Optional mask input.
Channels
image / video
image / video
Isolate a single RGBA channel (R, G, B, or Alpha) and view it as grayscale.
Blur
image / video mask
image / video
Apply a Box or Gaussian blur (Size 1–100). Optional mask input to confine the blur to specific regions.
Merge
background foreground mask
image / video
Composite foreground over background with 16 blend modes (Normal, Multiply, Screen, etc.). Inputs accept image or video independently. Optional grayscale mask.
Merge Alpha
RGB alpha matte
image / video
Combine an RGB source and a grayscale alpha matte into a single RGBA stream. Both inputs accept image or video.
Compositor
layers
video
Composite multiple layers into a single video with per-layer blend modes, opacity, and timing.
Paint
image
result mask
Freehand drawing with pen and eraser. Connect an image to paint over it, or set dimensions for a blank canvas. Outputs the painted result (RGBA) and a grayscale mask.
Text Concatenator
text × 2
text
Concatenate two prompts — use one as a system prompt and the other as a user prompt.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Beeble Documentation","colors":{"primary":"#00D084","light":"#00D084","dark":"#00D084"},"logo":{"light":"https://mintcdn.com/beebleai/UrDbGOmN_A_WudP6/logo/light.svg?fit=max\u0026auto=format\u0026n=UrDbGOmN_A_WudP6\u0026q=85\u0026s=78b6074c8574c84be138f9163efd80c0","dark":"https://mintcdn.com/beebleai/UrDbGOmN_A_WudP6/logo/dark.svg?fit=max\u0026auto=format\u0026n=UrDbGOmN_A_WudP6\u0026q=85\u0026s=e40d353571c144f56748ba8fb4adc60b","href":"https://docs.beeble.ai"},"favicon":"https://mintcdn.com/beebleai/48wk3Rei1ZbangPs/favicon.ico?fit=max\u0026auto=format\u0026n=48wk3Rei1ZbangPs\u0026q=85\u0026s=7839622bd823c7107546ed761307ba69","navbar":{"links":[{"href":"https://discord.com/invite/5REz3mzWwj","label":"Discord"}],"primary":{"type":"button","label":"Get Started","href":"https://app.beeble.ai"}},"footer":{"socials":{"discord":"https://discord.com/invite/5REz3mzWwj","x":"https://x.com/beeble_ai","linkedin":"https://linkedin.com/company/beeble-ai","instagram":"https://instagram.com/beeble_ai","youtube":"https://youtube.com/@beeble-ai"}},"fonts":{"family":"Inter"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":false},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"beebleai","hasAudioNarration":false,"actualSubdomain":"beebleai","customDomains":["docs.beeble.ai"],"gitSource":{"type":"github","owner":"beeble-ai","repo":"beeble-web","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae8459cde528214ed1f4577","collectionId":"5ea4ff4f-155d-4b0c-a8d0-8ec9c54aa0ab","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae8459cde528214ed1f4577"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae8459cde528214ed1f4577","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Docs","count":20},{"language":"default","tag":"Tutorial","count":19},{"language":"default","tag":"Beeble","count":9},{"language":"default","tag":"3D Relight \u0026 Integrations","count":6},{"language":"default","tag":"Canvas","count":6},{"language":"default","tag":"SwitchX","count":5},{"language":"default","tag":"Beeble Studio","count":4},{"language":"default","tag":"Get Started","count":4},{"language":"default","tag":"Integration","count":4},{"language":"default","tag":"Background Remover","count":2}]},"assistantConfig":{"enableStarterQuestions":false},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":".mdx-page-description,.page-description,[data-mdx-component=description]{font-size:.75rem!important;line-height:1.4!important;color:#6b7280!important}.search-button,[data-search-button]{border-radius:8px!important;border:1px solid #e5e7eb!important;font-size:.875rem!important}.search-button:hover,[data-search-button]:hover{border-color:#00d084!important}.info-callout,[class*=info i],[data-callout=info]{background-color:#eff6ff!important;border-left:4px solid #3b82f6!important;border-radius:8px!important;padding:16px 20px!important}.warning-callout,[class*=warning i],[data-callout=warning]{background-color:#fef3c7!important;border-left:4px solid #f59e0b!important;border-radius:8px!important;padding:16px 20px!important}.dark .info-callout,.dark [class*=info i],.dark [data-callout=info]{background-color:#1e3a5f!important;border-left-color:#60a5fa!important}.dark .warning-callout,.dark [class*=warning i],.dark [data-callout=warning]{background-color:#3d2e1f!important;border-left-color:#fbbf24!important}.mintlify-table-wrapper,.table-wrapper,[data-table-wrapper]{margin:1.5rem 0!important;overflow-x:auto!important}table{border-collapse:collapse!important;border-spacing:0!important;width:100%!important;border:1px solid #e5e7eb!important;border-radius:8px!important;overflow:hidden!important;font-size:.9rem!important;margin:0!important;display:table!important}table thead{display:table-header-group!important;background-color:#f9fafb!important;border-bottom:2px solid #e5e7eb!important}table tbody tr,table thead tr{display:table-row!important}table thead th{display:table-cell!important;padding:12px 16px!important;text-align:left!important;font-weight:600!important;font-size:.75rem!important;color:#6b7280!important;text-transform:uppercase!important;letter-spacing:.05em!important;border:0!important}table tbody{display:table-row-group!important}table tbody tr{transition:background-color .15s ease!important;background-color:#fff!important}table tbody tr:not(:last-child){border-bottom:1px solid #f3f4f6!important}table tbody tr:hover{background-color:#fafafa!important}table tbody td{display:table-cell!important;padding:12px 16px!important;font-size:.875rem!important;color:#4b5563!important;line-height:1.5!important;border:0!important;vertical-align:top!important;white-space:normal!important}table tbody td:first-child{font-weight:600!important;color:#111827!important}table tbody td:first-child,table thead th:first-child{width:200px!important;min-width:200px!important;max-width:200px!important}.narrow-table table{table-layout:fixed!important}.narrow-table table tbody td:first-child,.narrow-table table thead th:first-child{width:100px!important;min-width:100px!important;max-width:100px!important}table td br,table th br{display:block!important;content:\"\"!important;margin:.25rem 0!important}.dark table{border-color:#374151!important}.dark table thead{background-color:#1f2937!important;border-bottom-color:#374151!important}.dark table thead th{color:#9ca3af!important}.dark table tbody tr{background-color:#111827!important}.dark table tbody tr:not(:last-child){border-bottom-color:#2d3748!important}.dark table tbody tr:hover{background-color:#1a1f2e!important}.dark table tbody td{color:#d1d5db!important}.dark table tbody td:first-child{color:#f3f4f6!important}.icon-link,.icon-link:hover{text-decoration:none!important;border-bottom:none!important;background-image:none!important}h3+.mintlify-table-wrapper,h3+.table-wrapper,h3+[data-table-wrapper],h3+table{margin-top:.5rem!important}.type-badge{display:inline-block;padding:1px 7px;border-radius:6px;font-size:.85em;font-weight:500;white-space:nowrap;line-height:1.5}.type-badge-image{background-color:rgba(126,191,165,.2);color:#4a8a72}.type-badge-video{background-color:rgba(224,154,114,.2);color:#b07246}.type-badge-text{background-color:rgba(137,163,209,.2);color:#5d7ba8}.dark .type-badge-image{background-color:rgba(126,191,165,.22);color:#7ebfa5}.dark .type-badge-video{background-color:rgba(224,154,114,.22);color:#e09a72}.dark .type-badge-text{background-color:rgba(137,163,209,.22);color:#89a3d1}.type-badge-media{background-image:linear-gradient(90deg,rgba(126,191,165,.2) 0,rgba(224,154,114,.2) 100%);color:#7a6f5a}.dark .type-badge-media{background-image:linear-gradient(90deg,rgba(126,191,165,.22) 0,rgba(224,154,114,.22) 100%);color:#c9b89a}.product-chip{padding:0 6px;border-radius:4px;font-size:9px;font-weight:600;letter-spacing:.02em;line-height:16px;white-space:nowrap}.product-chip-cloud{background-color:rgba(0,208,132,.12);color:#00d084;border:1px solid rgba(0,208,132,.25)}.product-chip-studio{background-color:rgba(59,130,246,.12);color:#3b82f6;border:1px solid rgba(59,130,246,.25)}.card>div,[class*=Card]>div{display:flex!important;flex-direction:column!important;height:100%!important}.legal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:1.5rem;font-size:.875rem;color:#6b7280}.legal-header a{color:#00d084;font-weight:500;text-decoration:none}.legal-header a:hover{text-decoration:underline}.legal-section{line-height:1.7;margin-bottom:1rem}.legal-subsection{padding-left:1.5rem;margin-bottom:.75rem}.legal-sub-subsection{padding-left:1.5rem;margin-bottom:.5rem}.legal-sub-sub-subsection{padding-left:3rem;margin-bottom:.5rem}.legal-notice{font-size:1rem;line-height:1.7;text-transform:uppercase;font-weight:400;margin-bottom:1rem}.dark .legal-header{background-color:#1f2937;border-color:#374151;color:#9ca3af}.dark .legal-header a{color:#00d084}#pagination{display:none!important}.credit-policy-table table,.sdr2hdr-export-table table{table-layout:fixed!important;width:100%!important}.credit-policy-table table td:nth-child(1),.credit-policy-table table th:nth-child(1){width:18%!important;min-width:0!important;max-width:none!important}.credit-policy-table table td:nth-child(2),.credit-policy-table table th:nth-child(2){width:54%!important}.credit-policy-table table td:nth-child(3),.credit-policy-table table th:nth-child(3){width:28%!important}.is-center~div{max-width:72rem!important}.sdr2hdr-export-table table td:nth-child(1),.sdr2hdr-export-table table th:nth-child(1){width:40%!important;min-width:0!important;max-width:none!important}.sdr2hdr-export-table table td:nth-child(2),.sdr2hdr-export-table table th:nth-child(2){width:60%!important}.fx-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:1rem 0 1.5rem}.fx-grid-wide{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.fx-card{border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px 12px;background:#fff}.dark .fx-card{border-color:#374151;background:#111827}.fx-card svg,.fx-mock{display:block;width:100%;height:auto;background:#0a0a0a;border:1px solid #262626;border-radius:6px}.fx-mock,.fx-scene{margin:1rem 0;max-width:760px}.fx-scene{position:relative;container-type:inline-size}.fx-card .fx-scene,.fx-scene .fx-mock{margin:0}.fx-l{position:absolute;white-space:nowrap;line-height:1;transform:translate(0,-78%);pointer-events:none}.fx-l-mid{transform:translate(-50%,-78%)}.fx-l-end{transform:translate(-100%,-78%)}.fx-card p.fx-card-title{margin:8px 0 2px;font-size:.875rem;font-weight:600;color:#111827}.dark .fx-card p.fx-card-title{color:#f3f4f6}.fx-card p{margin:2px 0 0;font-size:.8125rem;line-height:1.45;color:#4b5563}.dark .fx-card p,.dark .fx-legend{color:#d1d5db}.fx-card p.fx-say{margin-top:6px;color:#6b7280}.dark .fx-card p.fx-say{color:#9ca3af}.fx-frame{fill:#141414;stroke:#262626}.fx-preview{fill:#0a0a0a}.fx-divider,.fx-preview{stroke:#262626}.fx-applied{fill:#141414;stroke:#00d084;stroke-opacity:.6}.fx-shape,.fx-shape-soft{fill:none;stroke:#fff;stroke-width:1.2}.fx-shape-soft{stroke-dasharray:4 3}.fx-guide{stroke-dasharray:2 3}.fx-guide,.fx-guide-solid{fill:none;stroke:#00d084;stroke-width:1.2}.fx-knob{fill:#fff}.fx-btn,.fx-callout,.fx-check,.fx-knob-accent{fill:#00d084}.fx-text{color:#e5e5e5}.fx-text-muted{color:#8a8a8a}.fx-text-strong{color:#fff;font-weight:600}.fx-chip,.fx-field{fill:#1f1f1f;stroke:#333}.fx-track{fill:#fff;fill-opacity:.12}.fx-track-fill{fill:#fff;fill-opacity:.4}.fx-check-mark{fill:none;stroke:#0a0a0a;stroke-width:2.2}.fx-port-image{fill:#7ebfa5}.fx-port-text{fill:#89a3d1}.fx-port-empty{fill:none;stroke:#7ebfa5;stroke-width:1.2;stroke-dasharray:2 2}.fx-btn-text{color:#0a0a0a;font-weight:600}.fx-callout-text,.fx-legend b{color:#0a0a0a;font-weight:700}.fx-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:6px 20px;margin:0 0 1.5rem;padding:0;list-style:none;font-size:.875rem;color:#4b5563}.fx-legend li{display:flex;gap:8px;align-items:baseline}.fx-legend b{flex:none;width:18px;height:18px;border-radius:999px;background:#00d084;font-size:11px;line-height:18px;text-align:center;transform:translateY(2px)}"}],"page":{"pagePath":"beeble/canvas","slug":"/beeble/canvas","pageMetadata":{"title":"Canvas","description":"Node-graph workflow editor for final render","href":"/beeble/canvas"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Node-graph workflow editor for final render\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Icon,OptimizedImage,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Icon)_missingMdxReference(`Icon`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-overview.avif?fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=9a7e082959a6773da48b6870c73d3963`,alt:`Canvas`,\"data-og-width\":`3278`,width:`3278`,\"data-og-height\":`1788`,height:`1788`,\"data-path\":`images/canvas-overview.avif`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-overview.avif?w=280\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=b887f4aa2f8d82fe90bc8e16bb30ef42 280w, https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-overview.avif?w=560\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=012f1ac3e80ef7b50c04c6343ef3572c 560w, https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-overview.avif?w=840\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=f77deefe70b8d37d42363d5d097553a1 840w, https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-overview.avif?w=1100\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=08e805a9acdfebff34b11f6b15f09341 1100w, https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-overview.avif?w=1650\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=e1e821b15ef208509622bd8841d17272 1650w, https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-overview.avif?w=2500\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=088516d0c2d8b970f58ff3a431ad7449 2500w`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Canvas`}),` is a powerful node-graph editor that brings every Beeble AI model into a single, unified workspace. Build custom processing pipelines by wiring together tools like SwitchX, Image Generator, and Video Matte. Simply import your raw footage, map out your node network, and generate production-ready results. With the flexibility to branch off creative variations at any step, Canvas gives you complete control from raw input to final render.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`node-catalog`,children:`Node Catalog`}),`\n`,_jsx(_components.p,{children:`Canvas ships with four node groups.`}),`\n`,_jsxs(Heading,{level:`3`,id:`input`,children:[_jsx(Icon,{icon:`upload`}),` Input`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Node`}),_jsx(_components.th,{children:`Output`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Text`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-text`,children:`text`})}),_jsx(_components.td,{children:`Plain text prompt.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Image`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`})}),_jsx(_components.td,{children:`PNG, JPEG, or WebP.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Video`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsx(_components.td,{children:`MP4 or MOV.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Text Iterator`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-text`,children:`text`})}),_jsx(_components.td,{children:`Split text into multiple items by delimiter — type the text on the node or connect an upstream text node. Drives multi-prompt batches.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Image Iterator`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`})}),_jsx(_components.td,{children:`Upload multiple images at once and batch-process the full set through connected nodes — no need to upload one-by-one.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Video Iterator`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsx(_components.td,{children:`Upload multiple videos at once and batch-process the full set through connected nodes — no need to upload one-by-one.`})]})]})]}),`\n`,_jsxs(Heading,{level:`3`,id:`ai-tools`,children:[_jsx(Icon,{icon:`sparkles`}),` AI Tools`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Node`}),_jsx(_components.th,{children:`Inputs`}),_jsx(_components.th,{children:`Output`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`SwitchX`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-video`,children:`source video`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`reference image`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-video`,children:`alpha video`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-text`,children:`prompt`})]}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsxs(_components.td,{children:[`Same model as the standalone `,_jsx(_components.a,{href:`/beeble/switchx`,children:`SwitchX`}),` product. Source and alpha handles are video-only. If you need Fill Mode, leave the alpha input disconnected. Set a random seed for reproducibility.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`LLM`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-text`,children:`prompt`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`media`})]}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-text`,children:`text`})}),_jsxs(_components.td,{children:[`Generate text from a prompt using an LLM. Supports up to 4 media inputs (image or video). Use `,_jsx(_components.code,{children:`@`}),` to reference connected media in your prompt.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Image Generator`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-text`,children:`prompt`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`images`})]}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`})}),_jsx(_components.td,{children:`Supports 1 to 4 reference images.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Video Generator`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-text`,children:`prompt`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`start / end frame`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-media`,children:`reference media`})]}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsxs(_components.td,{children:[`Generate a short clip via external models (e.g., Seedance 2.5). Pick a model in the footer:`,_jsxs(`ul`,{children:[_jsxs(`li`,{children:[_jsx(_components.strong,{children:`Text-to-Video`}),` — prompt only`]}),_jsxs(`li`,{children:[_jsx(_components.strong,{children:`Image-to-Video`}),` — needs a Start Frame (End Frame optional)`]}),_jsxs(`li`,{children:[_jsx(_components.strong,{children:`Reference-to-Video`}),` — repeatable reference slots; the per-model cap follows the selected model (e.g. Seedance 2.5 accepts up to 30 images / 10 videos, Seedance 2.0 up to 9 images / 3 videos)`]})]})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Effect Generator`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-media`,children:`source`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-media`,children:`mask`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-text`,children:`prompt`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsxs(_components.td,{children:[`Describe an effect in a sentence — God Rays, Glitch, Old Film, Halftone — and `,_jsx(_components.strong,{children:`Generate`}),` writes a GPU shader with its own controls. Optional mask (white = effect, black = source), up to 4 reference images; accepted effects are saved to your library. Full guide: `,_jsx(_components.a,{href:`/beeble/canvas-effect-generator`,children:`Effect Generator`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Video Matte`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-video`,children:`alpha`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-video`,children:`RGBA`})]}),_jsxs(_components.td,{children:[`Two outputs: `,_jsx(_components.strong,{children:`Alpha`}),` (grayscale matte) and `,_jsx(_components.strong,{children:`RGBA`}),` (source merged with alpha). Two modes: `,_jsx(_components.strong,{children:`Auto`}),` (one-click) or `,_jsx(_components.strong,{children:`Select`}),` (interactive SAM editor). Choose `,_jsx(_components.strong,{children:`MatAnyone 2`}),` (default) or `,_jsx(_components.strong,{children:`MatAnyone`}),` for general footage, and `,_jsx(_components.strong,{children:`CorridorKey 2.0`}),` or `,_jsx(_components.strong,{children:`CorridorKey`}),` for green-screen keys. Export the RGBA composite as MOV or a PNG sequence, and the alpha as a PNG sequence.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`VFX Pass Generator`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`}),` × 6`]}),_jsxs(_components.td,{children:[`Extracts PBR material maps (BaseColor, Normal, Depth, Roughness, Specular, Metallic) from an image or video using SwitchLight 3.0. Export passes individually or all at once with `,_jsx(_components.strong,{children:`Export All`}),`, including PNG sequences.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Depth Generator`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Extracts a depth map from an image or video using Video Depth Anything. Export as a 16-bit EXR for higher-fidelity depth workflows.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Video Upscaler`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsx(_components.td,{children:`Upscale a video 1×–4× (up to 4K) with Topaz Video AI. Pick a Mode in the footer (every standard Topaz model fal offers: Proteus, Artemis, Gaia and Nyx families); codec, frame interpolation and the Topaz tuning sliders live under Advanced.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Image Upscaler`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`})}),_jsx(_components.td,{children:`Upscale an image 1×–4× (up to 8K) with Topaz Gigapixel AI. Pick a Mode in the footer (Standard V2, Low Resolution V2, CGI, High Fidelity V2, Text Refine, generative Recovery / Redefine / Wonder, and more).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Image Describer`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-text`,children:`prompt`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`images`})]}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-text`,children:`text`})}),_jsxs(_components.td,{children:[`Generate a detailed text description of connected image(s) using an LLM. Connect up to 4 images. Comes with a built-in, editable prompt — hit `,_jsx(_components.strong,{children:`Reset`}),` to restore the default.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Video Describer`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-text`,children:`prompt`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-video`,children:`videos`})]}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-text`,children:`text`})}),_jsxs(_components.td,{children:[`Generate a detailed text description of connected video(s) using an LLM. Connect up to 4 videos, each up to 5 minutes. Comes with a built-in, editable prompt — hit `,_jsx(_components.strong,{children:`Reset`}),` to restore the default.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Camera Angle (Qwen)`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`})}),_jsx(_components.td,{children:`Re-render a still from a different camera angle.`})]})]})]}),`\n`,_jsxs(Heading,{level:`3`,id:`edit`,children:[_jsx(Icon,{icon:`scissors`}),` Edit`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Node`}),_jsx(_components.th,{children:`Inputs`}),_jsx(_components.th,{children:`Output`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Extract Frame`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`})}),_jsx(_components.td,{children:`Extract a single frame from a video`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Trim`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsx(_components.td,{children:`Trim a video to a specific frame range`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Crop`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Crop an image or video. Interactive overlay or numeric inputs.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Resize`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Resize an image or video to target dimensions`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Curves`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Adjust the tonal range with interactive RGB and per-channel (R/G/B) curves. Drag points to shape the curve; click empty space to add a point; double-click or drag a point off the graph to remove it.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Invert`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Invert RGB colors of an image or video.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Rotate / Flip`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Rotate an image or video in 90° increments, or flip it horizontally or vertically.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Erode / Dilate`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`mask`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Dilate (grow) or erode (shrink) bright regions. Typically chained after Video Matte for matte cleanup. Strength ranges from −200 to +200. Optional mask input.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Channels`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Isolate a single RGBA channel (R, G, B, or Alpha) and view it as grayscale.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Blur`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`mask`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Apply a Box or Gaussian blur (Size 1–100). Optional mask input to confine the blur to specific regions.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Merge`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`background`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`foreground`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`mask`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Composite foreground over background with 16 blend modes (Normal, Multiply, Screen, etc.). Inputs accept image or video independently. Optional grayscale mask.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Merge Alpha`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`RGB`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`alpha matte`})]}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`Combine an RGB source and a grayscale alpha matte into a single RGBA stream. Both inputs accept image or video.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Compositor`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-image`,children:`layers`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})}),_jsx(_components.td,{children:`Composite multiple layers into a single video with per-layer blend modes, opacity, and timing.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Paint`})}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`result`}),_jsx(`br`,{}),_jsx(`span`,{className:`type-badge type-badge-image`,children:`mask`})]}),_jsx(_components.td,{children:`Freehand drawing with pen and eraser. Connect an image to paint over it, or set dimensions for a blank canvas. Outputs the painted result (RGBA) and a grayscale mask.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Text Concatenator`})}),_jsxs(_components.td,{children:[_jsx(`span`,{className:`type-badge type-badge-text`,children:`text`}),` × 2`]}),_jsx(_components.td,{children:_jsx(`span`,{className:`type-badge type-badge-text`,children:`text`})}),_jsx(_components.td,{children:`Concatenate two prompts — use one as a system prompt and the other as a user prompt.`})]})]})]}),`\n`,_jsxs(Heading,{level:`3`,id:`utility`,children:[_jsx(Icon,{icon:`screwdriver-wrench`}),` Utility`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Node`}),_jsx(_components.th,{children:`Inputs`}),_jsx(_components.th,{children:`Output`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Sticky Note`})}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Sticky note for annotations`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Router`})}),_jsx(_components.td,{children:`any`}),_jsx(_components.td,{children:`any`}),_jsxs(_components.td,{children:[`Reroute connections for cleaner graphs (`,_jsx(_components.code,{children:`.`}),` shortcut, or `,_jsx(_components.code,{children:`Cmd/Ctrl + click`}),` a wire)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Viewer`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Display connected media at larger size with playback controls`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Compare`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Side-by-side A/B comparison`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Export`})}),_jsxs(_components.td,{\"data-numeric\":`true`,children:[_jsx(`span`,{className:`type-badge type-badge-image`,children:`image`}),` / `,_jsx(`span`,{className:`type-badge type-badge-video`,children:`video`})]}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Download connected media directly. Use the Save As dialog to choose where files are saved.`})]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`handles-\u0026-data-types`,children:`Handles \u0026 Data Types`}),`\n`,_jsxs(_components.p,{children:[`Each node’s handle color represents its data type. Required inputs are marked with an asterisk on the label (e.g., `,_jsx(_components.code,{children:`Source *`}),`).`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-handles.avif?fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=8c1e7dd1530cee4a2f8f92f34e89ba4b`,alt:`Handle types and colors`,\"data-og-width\":`1546`,width:`1546`,\"data-og-height\":`972`,height:`972`,\"data-path\":`images/canvas-handles.avif`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-handles.avif?w=280\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=bf2923a7ecf0104c54e58ee2c30a21d9 280w, https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-handles.avif?w=560\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=be56bda6ebdf4450ae4ca2b916143e3c 560w, https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-handles.avif?w=840\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=45e5a6b018a8ec3184c516ab62988247 840w, https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-handles.avif?w=1100\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=70f407d212af8f4bcf9909662a1fd175 1100w, https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-handles.avif?w=1650\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=77d6538707f08949a598ba228538a537 1650w, https://mintcdn.com/beebleai/2xIcz-AHZmZe81Ec/images/canvas-handles.avif?w=2500\u0026fit=max\u0026auto=format\u0026n=2xIcz-AHZmZe81Ec\u0026q=85\u0026s=c81ff12703f555ec0b0b53963466d0be 2500w`}),`\n`,_jsx(Heading,{level:`3`,id:`type-colors`,children:`Type colors`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Color`}),_jsx(_components.th,{children:`Examples`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Image`})}),_jsxs(_components.td,{children:[_jsx(`span`,{style:{color:`#7EBFA5`},children:`●`}),` Green`]}),_jsx(_components.td,{children:`SwitchX reference, Extract Frame output`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Video`})}),_jsxs(_components.td,{children:[_jsx(`span`,{style:{color:`#E09A72`},children:`●`}),` Orange`]}),_jsx(_components.td,{children:`SwitchX source / alpha / output, Video Matte output`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Text`})}),_jsxs(_components.td,{children:[_jsx(`span`,{style:{color:`#89A3D1`},children:`●`}),` Blue`]}),_jsx(_components.td,{children:`LLM output, prompt inputs`})]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`keyboard-shortcuts`,children:`Keyboard Shortcuts`}),`\n`,_jsx(Heading,{level:`3`,id:`canvas`,children:`Canvas`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Shortcut`}),_jsx(_components.th,{children:`Action`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`V`})}),_jsx(_components.td,{children:`Switch to Pointer tool`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`H`})}),_jsx(_components.td,{children:`Switch to Hand (pan) tool`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`/`}),` or `,_jsx(_components.code,{children:`Tab`})]}),_jsx(_components.td,{children:`Open the Add Node menu at the cursor`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`.`})}),_jsx(_components.td,{children:`Add a Router node at the cursor`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`Cmd/Ctrl + click`}),` a wire`]}),_jsxs(_components.td,{children:[`Insert a Router into the wire; keep holding and drag to pull it out. `,_jsx(_components.code,{children:`Esc`}),` cancels`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`T`})}),_jsx(_components.td,{children:`Add a Sticky Note at the cursor`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Q`})}),_jsx(_components.td,{children:`Toggle the Job Queue panel`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`\\\\`})}),_jsx(_components.td,{children:`Toggle the Viewport panel`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`1`})}),_jsx(_components.td,{children:`Connect selected node to Viewer and open Viewport`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`E`})}),_jsx(_components.td,{children:`Hold to highlight the selected node’s wires; double-tap to keep it on`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Space`})}),_jsx(_components.td,{children:`Hold to pan; on selected video nodes, toggles playback (multi-select plays in sync)`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`view`,children:`View`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Shortcut`}),_jsx(_components.th,{children:`Action`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`F`})}),_jsx(_components.td,{children:`Fit view to all nodes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + 0`})}),_jsx(_components.td,{children:`Zoom to 100%`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + 1`})}),_jsx(_components.td,{children:`Fit all nodes`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + 2`})}),_jsx(_components.td,{children:`Fit selected nodes`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`Cmd/Ctrl + =`}),` / `,_jsx(_components.code,{children:`Cmd/Ctrl + -`})]}),_jsx(_components.td,{children:`Zoom in / out`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`selection`,children:`Selection`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Shortcut`}),_jsx(_components.th,{children:`Action`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Esc`})}),_jsx(_components.td,{children:`Deselect all nodes and edges`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + A`})}),_jsx(_components.td,{children:`Select all nodes`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`Cmd/Ctrl + C`}),` / `,_jsx(_components.code,{children:`Cmd/Ctrl + V`})]}),_jsx(_components.td,{children:`Copy / Paste (preserves output history)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + Shift + V`})}),_jsx(_components.td,{children:`Paste without output history`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + D`})}),_jsx(_components.td,{children:`Duplicate selected nodes with their output content`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + G`})}),_jsx(_components.td,{children:`Group / Ungroup selected nodes`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`Delete`}),` / `,_jsx(_components.code,{children:`Backspace`})]}),_jsx(_components.td,{children:`Delete selected nodes and edges`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`alignment`,children:`Alignment`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Shortcut`}),_jsx(_components.th,{children:`Action`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Alt/Opt + A`})}),_jsx(_components.td,{children:`Align selected nodes to the left`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Alt/Opt + D`})}),_jsx(_components.td,{children:`Align selected nodes to the right`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Alt/Opt + W`})}),_jsx(_components.td,{children:`Align selected nodes to the top`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Alt/Opt + S`})}),_jsx(_components.td,{children:`Align selected nodes to the bottom`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Alt/Opt + H`})}),_jsx(_components.td,{children:`Align selected nodes to horizontal center`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Alt/Opt + V`})}),_jsx(_components.td,{children:`Align selected nodes to vertical center`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + Alt/Opt + H`})}),_jsx(_components.td,{children:`Distribute selected nodes with equal horizontal spacing`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + Alt/Opt + V`})}),_jsx(_components.td,{children:`Distribute selected nodes with equal vertical spacing`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`general`,children:`General`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Shortcut`}),_jsx(_components.th,{children:`Action`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + S`})}),_jsx(_components.td,{children:`Save`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`Cmd/Ctrl + Z`}),` / `,_jsx(_components.code,{children:`Cmd/Ctrl + Shift + Z`})]}),_jsx(_components.td,{children:`Undo / Redo`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Cmd/Ctrl + ,`})}),_jsx(_components.td,{children:`Open Settings dialog`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Shift + ?`})}),_jsx(_components.td,{children:`Open the Keyboard Shortcuts dialog`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Canvas","description":"Node-graph workflow editor for final render","href":"/beeble/canvas"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Node Catalog","slug":"node-catalog","depth":2,"children":[{"title":" Input","slug":"input","depth":3,"children":[]},{"title":" AI Tools","slug":"ai-tools","depth":3,"children":[]},{"title":" Edit","slug":"edit","depth":3,"children":[]},{"title":" Utility","slug":"utility","depth":3,"children":[]}]},{"title":"Handles \u0026 Data Types","slug":"handles-\u0026-data-types","depth":2,"children":[{"title":"Type colors","slug":"type-colors","depth":3,"children":[]}]},{"title":"Keyboard Shortcuts","slug":"keyboard-shortcuts","depth":2,"children":[{"title":"Canvas","slug":"canvas","depth":3,"children":[]},{"title":"View","slug":"view","depth":3,"children":[]},{"title":"Selection","slug":"selection","depth":3,"children":[]},{"title":"Alignment","slug":"alignment","depth":3,"children":[]},{"title":"General","slug":"general","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"beebleai","siteName":"Beeble Documentation","title":"Canvas - Beeble Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T08:11:13.286Z","originalFileLocation":"beeble/canvas.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Node-graph workflow editor for final render\">\u003cmeta data-mint-head name=\"application-name\" content=\"Beeble Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/beebleai/Q7nzuQlrBXKzr4Pp/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/beebleai/Q7nzuQlrBXKzr4Pp/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/beebleai/Q7nzuQlrBXKzr4Pp/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/beebleai/Q7nzuQlrBXKzr4Pp/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/beebleai/Q7nzuQlrBXKzr4Pp/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/beebleai/Q7nzuQlrBXKzr4Pp/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/beebleai/Q7nzuQlrBXKzr4Pp/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/beebleai/Q7nzuQlrBXKzr4Pp/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/beebleai/Q7nzuQlrBXKzr4Pp/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Canvas - Beeble Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Node-graph workflow editor for final render\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Beeble Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.beeble.ai/beeble/canvas\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://beebleai.mintlify.app/_mintlify/api/og/v2?division=Beeble\u0026amp;title=Canvas\u0026amp;description=Node-graph+workflow+editor+for+final+render\u0026amp;theme=c1f6bb4296e45df8dec9ab82\u0026amp;signature=2b0a249bf292ffbf1bea4e98f235c6a097e133ba8d2c71102fcaa165b98e0a0a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Canvas - Beeble Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Node-graph workflow editor for final render\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://beebleai.mintlify.app/_mintlify/api/og/v2?division=Beeble\u0026amp;title=Canvas\u0026amp;description=Node-graph+workflow+editor+for+final+render\u0026amp;theme=c1f6bb4296e45df8dec9ab82\u0026amp;signature=2b0a249bf292ffbf1bea4e98f235c6a097e133ba8d2c71102fcaa165b98e0a0a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/beebleai/Q7nzuQlrBXKzr4Pp/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Beeble Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00D084\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.beeble.ai/beeble/canvas\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/beeble/canvas.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.beeble.ai/#organization\",\"name\":\"Beeble Documentation\",\"url\":\"https://docs.beeble.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/beebleai/UrDbGOmN_A_WudP6/logo/light.svg?fit=max\u0026auto=format\u0026n=UrDbGOmN_A_WudP6\u0026q=85\u0026s=78b6074c8574c84be138f9163efd80c0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.beeble.ai#website\",\"name\":\"Beeble Documentation\",\"url\":\"https://docs.beeble.ai\",\"publisher\":{\"@id\":\"https://docs.beeble.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.beeble.ai/beeble/canvas#webpage\",\"url\":\"https://docs.beeble.ai/beeble/canvas\",\"name\":\"Canvas\",\"description\":\"Node-graph workflow editor for final render\",\"dateModified\":\"2026-11-02T08:11:13.286Z\",\"isPartOf\":{\"@id\":\"https://docs.beeble.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.beeble.ai/beeble/canvas#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.beeble.ai/beeble/canvas#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Beeble\",\"item\":\"https://docs.beeble.ai/beeble/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Canvas\",\"item\":\"https://docs.beeble.ai/beeble/canvas\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.beeble.ai/beeble/canvas#article\",\"headline\":\"Canvas\",\"name\":\"Canvas\",\"description\":\"Node-graph workflow editor for final render\",\"url\":\"https://docs.beeble.ai/beeble/canvas\",\"mainEntityOfPage\":{\"@id\":\"https://docs.beeble.ai/beeble/canvas#webpage\"},\"dateModified\":\"2026-11-02T08:11:13.286Z\",\"publisher\":{\"@id\":\"https://docs.beeble.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.beeble.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Beeble Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Beeble Documentation","nav":{"global":null,"tabs":[{"tab":"Docs","icon":"book-open","groups":[{"group":"Get Started","pages":[{"title":"Welcome","href":""},{"title":"Frequently Asked Questions","href":"/help/faq"},{"title":"Beeble vs Beeble Studio","href":"/help/beeble-vs-beeble-studio"}]},{"group":"Beeble","pages":[{"title":"Overview","href":"/beeble/overview"},{"group":"SwitchX","pages":[{"title":"SwitchX 2.0","href":"/beeble/switchx"},{"title":"SwitchX 1.0","href":"/beeble/switchx-1"}]},{"title":"SDR to HDR","description":"Reconstruct 8-bit SDR footage into 16-bit HDR EXRs with SwitchHDR","href":"/beeble/sdr-to-hdr"},{"title":"Canvas","href":"/beeble/canvas"},{"title":"VFX Pass Generator","description":null,"href":"/beeble/vfx-pass-generator"},{"title":"Background Remover","href":"/beeble/background-remover"},{"title":"3D Relight","href":"/beeble/beeble-editor"},{"title":"Credit Policy","href":"/help/credit-policy"}]},{"group":"Beeble Studio","pages":[{"title":"Overview","href":"/beeble-studio/overview"},{"title":"VFX Pass Generator","href":"/beeble-studio/vfx-pass-generator"},{"title":"3D Relight","href":"/beeble-studio/beeble-editor"},{"title":"Setup \u0026 Requirements","href":"/beeble-studio/setup-requirements"}]},{"group":"Integration","pages":[{"title":"Nuke Plugin","href":"/integration/nuke-plugin"},{"title":"Blender Plugin","href":"/integration/blender-plugin"},{"title":"Unreal Engine Plugin","href":"/integration/unreal-engine-plugin"},{"title":"Beeble Camera App","href":"/integration/beeble-camera"}]}]},{"tab":"Tutorial","icon":"graduation-cap","pages":[{"title":"Tutorial","href":"/tutorial/overview"}]},{"tab":"Release Notes","icon":"bell","pages":[{"title":"Release Notes","href":"/update/changelog"}]}]},"basePath":"","title":"Canvas - Beeble Documentation","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-eHyQ0tlO.js","lightbox-handle-r17bVUz3.js"]}