Sketchpad
Compose before you generate. The Sketchpad is a simple painter on a fixed canvas: brush strokes, wired images placed as movable layers, generation layers that render your marks in place, one stack. It flattens locally, for free, into the raster the generators consume. In the node browser it wears a free · $ chip: drawing, placing and flattening cost nothing, the generation layers are the paid part, and only when you ask for one.
Typical use: block massing or a silhouette over a site photo, place an object where it should go, scribble the shape of a change, then wire the result into Image→Image, Compose or Inpaint and let the model render what you drew.
- images (in): any number of images. They do not flow through by themselves: they appear in the editor's tray, and you drop the ones you want in as layers.
- image (out): the flattened canvas as a PNG.
The canvas
The first wired image sets the canvas size. With nothing wired, pick a preset on the node (1K or 2K in 1:1, 16:9, 9:16, 4:3, 3:4). Once a sketch exists the size is locked; ✕ start over on the node clears the sketch and unlocks the choice. The canvas select (top of the right column) is what the flattened image shows wherever nothing covers it: white or black paper, or transparent for a PNG with alpha. With a wired photo as the bottom layer you never see it; erase a hole in that photo, or start from a blank canvas, and you do.
The editor (✎ Draw)
The tools sit in a rail on the left of the canvas, Photoshop-style; the bar above the canvas shows only the active tool's properties. Hover a tool for its shortcuts. The right column starts with the canvas select and the canvas size.
- Color works like Photoshop: a foreground / background pair in the properties bar (the brush paints the foreground; click the back square or press X to swap, D resets to black over white), an HSB panel at the top of the right column (the field is hue across and brightness down at the current saturation; H, S and B sliders with numbers), and a recent colors strip that fills with every color you paint or pick, kept per device.
- Brushes: six tips sit next to the color pair when the brush or eraser is active, each with a stroke preview. Hard round (the default, pressure drives the width), soft round, pencil (thin and grainy, a light touch stays faint), marker (a flat chisel that turns with the stroke: thin one way, wide the other, one width regardless of pressure), hard square and soft square. Picking a tip sets the softness slider and the two pressure boxes (size, opacity) to the tip's defaults; all three stay yours to override, so a soft round can drive opacity, or a pencil can keep one width. A mouse always paints at full pressure. The eraser uses the same tip. Your last pick is remembered on this device.
- Brush (B) and eraser (E) paint on paint layers. Size, softness and per-stroke opacity have sliders (while you drag one, the brush circle shows at the center of the canvas so you see the change), Alt + right-drag adjusts the brush like in Photoshop (horizontal = size, vertical = softness), with a Diameter / Hardness / Opacity readout beside the circles (solid = size, dashed = softness extent). With a mouse the cursor stays pinned; with a pen hold Alt, press the barrel button and drag (tip first then barrel, or barrel first, both work), the pen simply follows and the Windows press-and-hold ring is harmless,
[]change the size, digit keys set opacity (5= 50 %,1then2quickly = 12 %,0= 100 %). Pen pressure (Wacom & co) scales the stroke width, smoothly through curves. After each stroke a small readout next to the pressure boxes says what arrived: pen · 78 % (pointer type and peak pressure) or mouse · no pressure. The second one means the tablet driver is sending mouse events, not pen events: enable Windows Ink for Brut in the tablet driver (Wacom: the app's Mapping tab) and pressure comes through. Shift+click draws a straight stroke from where the last stroke ended: click once for a dot, Shift+click elsewhere for the line. - Eyedropper (I), or Alt held in any tool: press on the canvas to sample the composite, a swatch with the hex value rides the pointer, drag to hunt the exact pixel, release to pick it.
- Bucket fill (G): click a region to flood it with the current color at the stroke opacity. The tolerance slider widens what counts as the same color; sample all layers (default) reads the whole composite so you can fill inside the lines of a placed photo, unticked it reads the active layer alone.
- Transform (T, Ctrl+T, or V) shows handles on the selected layer: drag anywhere to move, drag a corner square to scale about the center (Shift+corner scales width and height independently), drag the stem handle above the top edge to rotate (Shift snaps to 15°). Works on paint layers too.
- Selections: the marquee (M) drags a rectangle, the ellipse (Shift+M cycles between the two) an ellipse, the lasso (L) a freehand shape. Shift at the start of a drag adds to the selection, Alt at the start subtracts, a plain drag replaces it, a plain click deselects. Pressed after the drag started, Shift constrains the marquee to a square or the ellipse to a circle and Alt grows the shape from the point you started at, like Photoshop. Ctrl+A selects everything, Ctrl+D nothing, Ctrl+Shift+I inverts. Ctrl+click a layer's thumbnail selects its painted pixels, like Photoshop (Ctrl+Shift+click adds them, Ctrl+Alt+click subtracts); Ctrl+click a mask chip selects the mask's white. Handy to recolor a shape: Ctrl+click the thumb, then Alt+Backspace. While a selection exists the brush, eraser and bucket only touch the inside. Ctrl+C copies the selected pixels of the active paint layer, Ctrl+X cuts them, Delete clears them, Ctrl+V pastes the copy as a new paint layer in place, with the Transform tool ready to move it. Selections live in the editor session only.
- Alt+Backspace fills with the foreground color, Ctrl+Backspace with the background color, like Photoshop: the active paint layer's pixels, or its mask when the mask chip is active (the color's grey level: white reveals, black hides). A selection confines the fill. One undo step.
- Ctrl+Z / Ctrl+Y undo and redo inside the editor (also the two arrows at the bottom of the rail): strokes, transforms, layer changes, background. The stack resets when you close the editor.
- Layers (right): the layer opacity slider at the top acts on the selected layer. Below it, the stack, top first, the only part of the column that scrolls. Eye toggles visibility, Alt+eye solos a layer (Alt+eye again restores what was shown), + (or Ctrl+Shift+N) adds an empty paint layer right above the active one (inside its group if it has one; on top when nothing is selected), ↑ ↓ reorder, 🗑 deletes (a group takes its children along). Drag a row to move it in the stack: the row lifts and a blue line shows where it will land; nothing moves until you release, and names never change. The 🗑 removes every selected layer. Double-click a name to rename it; right-click a row for a color label (Photoshop's eleven, shown as a colored edge, purely for organization) plus hide, rename and group.
- Layer masks, on paint layers, image layers and groups, exactly like Photoshop: the mask button in the tray (or the row menu) adds one, white = shows (Alt on the button adds a hide-all mask). The mask chip appears right of the layer thumbnail. Click the layer (name or thumbnail) to paint its pixels, click the chip to paint its mask; the active element carries the blue outline. Ctrl+I inverts the mask, Shift+click the chip disables it, Alt+click the chip views it white on black. While the mask is the target the color panel switches to greys (a black-to-white ramp, hue and saturation dimmed, brightness is the level, five grey swatches): white reveals, black hides, a grey reveals partially (so D then X flip between the two), the eraser hides, the bucket follows the same rule, and pressure, softness and selections apply as usual. With the mask active, the 🗑 deletes the mask and leaves the layer; select the layer itself to delete the layer. A group's mask applies to everything inside it as one. Masks move with their layer and are stored as files like paint layers; the row menu also offers reveal all, hide all, disable and remove.
- Groups: Ctrl+click rows to select several, Ctrl+G (or the folder button in the tray) folds them into a group (one level of folders, like a sketch needs), Ctrl+Shift+G dissolves the selected group. The folder row hides or shows its children as one, folds with the chevron, and moves as a block. Dragging a layer onto a group's child puts it in the group, dragging it onto a top-level layer takes it out. Groups are organization only: the flattened image is the same with or without them. Under the stack, the wired images tray: click one to add it as a layer (it lands fitted and centered; add it twice for two copies).
- Wheel zooms (past 1.5× the preview switches to full native resolution), middle-drag pans.
- ? (or the keyboard button at the bottom of the rail) shows the full shortcut table inside the editor.
- ✓ Use this sketch saves the painted layers and merges the stack, and puts the result on the node: the image plug is live immediately. The node has no ▶ of its own: it is the door to the editor, and any run downstream re-uses the flatten for free until you edit again.
Generation layers
The one paid thing in the Sketchpad, and the reason the sketch exists: a generation layer turns your marks into a photoreal render, in place, without leaving the editor.
Sketch the intent on a paint layer: where the thing goes, how big, roughly what shape, which colors. A forest, a sword, a piece of cloth can never be drawn in detail, and they do not have to be. Then press the ✦ button in the layer tray (next to +): with a paint layer selected it makes a generation layer that follows that layer; with anything else selected it makes a general one that follows every painted layer below it. (Also: Ctrl+Enter, or right-click a paint layer → ✦ Generate from this layer…) The new layer lands right above, its row shows ↳ and what it follows, and the properties bar becomes the layer's own, one row:
- ↳ follows: one paint layer, a previous generation (iterate on a take: "make the lake frozen" over the lake you just rendered), all paint below, or whole scene below (rework): no marks at all, the flattened picture under the layer is the subject and the prompt changes it as a whole ("turn this image to winter, same character, same clothes"), generation layers included. A rework is always the whole frame, has no follow setting, and shows entirely (paint a mask if you want to keep parts of the original). Change the choice any time;
- the prompt: what the marks stand for ("a weathered oak bench", "a pine forest at low sun");
- scope: whole frame / local. Whole frame renders the entire canvas. Local renders only a region around your marks and puts the take back in its place. This is how a 5000 px document stays a 5000 px document: nothing ever regenerates it whole, and you can edit it region by region at full production resolution. Canvases above 2048 px on the long side start in local; pick a size tier at or above the region's long side and the take lands without upscaling. The region-outline button on the bar draws the last region dashed on the canvas (off by default), and the price dialog states its size and aspect before you pay;
- follow: loose / balanced / close, how strictly the marks bind. Balanced (the default) makes placement, size and extent binding and leaves the outline, materials and detail to the model. Close makes the silhouette follow the painted shape. Loose treats the marks as a suggestion of placement and size;
- the model bar: provider, image→image model (the default is GPT Image 2.5 Flare at high), size tier, quality, the ⇄ chip when the model runs through another service such as OpenRouter, and the price of one render;
- ✦ Generate. The price is asked first, every time. Nothing renders on its own. The line under the canvas says where the layer stands.
The model renders what your marks stand for where they are: their size, roughly their shape and colors, at the strictness you chose, in the scene's light, perspective, scale and grain, with the shadows and reflections it would really cast. The marks themselves disappear from the render.
The render comes back whole-frame: the model may change what your object implies anywhere in the picture (a forest at low sun casts long shadows across the whole image). What you see of it is decided by the layer's mask, which starts around your marks with a soft edge. So by default the untouched scene stays pixel-faithful, and you paint the mask white to reveal more of the take: the long shadow, the reflection on the floor, the disturbed sand. Reveal all if the model reworked the scene well as a whole. The mask never re-renders anything: the layer holds the whole render, painting is free. The row menu offers Re-seed the mask from the sketch when you have redrawn the guide.
Generate into a selection. Nothing needs to be drawn: make a selection (marquee, ellipse or lasso, or Ctrl+A) and press ✦ (or Ctrl+Enter). The new layer says ↳ into the selection: the selection becomes its mask (with a soft edge of a few pixels), the model works from the flattened scene below it, and the prompt says what goes there ("a red sports car", "a wet cobblestone patch"). The selection itself is consumed; the layer keeps its outline, which the region-outline button on the bar shows dashed on the canvas (off by default), and re-rolls, staleness and takes work as for any generation layer. Scope defaults to local, so the model works on what you selected; switch to whole frame when the prompt names the place itself. There is no follow dial: with no marks, placement is the selection.
The row says where the layer stands: not rendered, stale (the sketch below it, the prompt or the model changed since the take), done, rendering…, or failed with the provider's reason. A stale layer keeps showing its last take until you generate again; a take that still matches is free (Generate does nothing new). ↻ next to Generate asks for a fresh take of the same sketch and prompt, paying again. Every render is a normal generation on the ledger, with the layer named on the row.
A rendered layer behaves like an image layer: eye, opacity, a mask you can paint, Transform. Its take is stored on the node the moment it lands, so closing the editor with Cancel never loses a paid render; ✓ Use this sketch flattens the stack with the generation layers in place. While a layer renders, its row carries the same travelling light as a running node on the canvas.
A new Sketchpad opens with the first wired image already placed as the bottom layer and an empty paint layer selected, so you can draw right away.
From a flat picture: Decompose into layers
A Sketchpad can also start from a finished image. Right-click any picture → Decompose into layers… sends it to Seedream 5.0 (Flash or Pro, on your own BytePlus key), which splits it into a base (the scene with the elements lifted out and the gaps filled in) and up to 16 layers with transparency. Brut lands them as a new Sketchpad beside the picture:
- the base at the bottom, at the canvas size;
- every layer above it in the model's stacking order, scaled into its place in the picture and named by the model ("sky", "pavilion", "foreground trees"). Hover a name for the model's description of it;
- the original on top, hidden: click its eye to compare the recomposed stack with what you started from, or mask it to paint the original back.
They are ordinary image layers: move, scale and rotate them with Transform, hide them, give them masks, paint between them, add a generation layer over the stack, and Export PSD carries all of it to Photoshop. The node shows the recomposed picture straight away, and its image plug is live. The model lifts each element out whole (a tree that stood behind a hedge can come back with its full trunk): a layer mask hides what should stay behind. Find in ledger on the node's preview shows the paid run.
It is one paid call, and the price is asked first: a form for the model, the size and (optionally) what to separate, then the price dialog with the ceiling. The models, the rates and the size rule are on the Seedream page. Without the BytePlus key the menu item stays greyed with the reason.
Export PSD in the editor's footer, or right-click the node's preview → Export PSD…, writes a Photoshop file into the project's outputs/exports folder (no dialog; Explorer shows it). Every layer goes in, hidden ones included: paint, placed images and generation takes as raster layers at their placement (moves, scales and rotations baked), layer masks as Photoshop layer masks (feather and invert baked, since PSD has no such switches), groups as folders with their own masks, names, opacity, visibility and color labels. The merged image is the flatten you see on the node. Photoshop, Affinity, Krita and GIMP open it. The export is local and free.
Notes
- Painting, layers and the flatten are local and free: no provider call, no ledger row. Only a generation layer's render is a paid call, always behind the price gate. Paint layers, masks and renders are stored as files in the project's outputs, so the graph stays small and a
.brutpackor a project on a NAS carries the sketch along. - Wired images enter as references to their file, not copies. If an upstream node regenerates, the layer keeps pointing at the file it was placed from; add the new image from the tray when you want it.
- Sketchpad or Layers? Sketchpad makes an image by hand (draw, place, arrange) to generate from. Layers reconciles finished images by painting clipping masks between versions. Use Sketchpad before the generation, Layers after it.