Brush Lab and sharing brushes

Brush Lab designs sculpting brushes from a description: type "dry cracked mud" and an AI model builds the brush, then you refine it in words or with sliders. This chapter covers Brush Lab, the AI providers it can use, the recipe settings, your brush library, and the ways to share brushes: .sfbrush files, one-line brush codes, studio folders and the community gallery.

Brush Lab with a brush designed from a description
Brush Lab with a brush designed from a description

What a custom brush is#

A custom brush is a recipe: about twenty named values that describe how the brush moves the surface, the shape of its tip, a surface pattern, stroke spacing and masking. A recipe is data, never code, so brushes are safe to download and share. The AI only fills in these values; you can see and change every one of them.

Custom brushes work everywhere built-in brushes do: on the bottom shelf, in the brush picker (B), with Alt, Shift, masks, symmetry, strokes and alphas.

Open Brush Lab#

Click AI Brush on the top shelf, or AI Brush at the top of the Brush palette. Brush Lab is a floating window; it opens at the top-left corner of the canvas the first time, and you can drag it anywhere. Click the button again, or the window's close box, to hide it.

Design a brush#

  1. Open Brush Lab.
  2. Type a description in the field at the bottom, the way you'd describe the brush to another sculptor, for example bark of an old oak tree or soft folds in heavy cloth. Or click one of the starter ideas, such as Overlapping dragon scales or Dry cracked mud.
  3. Press Enter or click Create. While the model works, the conversation shows "Designing brush".
  4. When the brush is ready, it becomes the active brush and the status bar says so. Try it on the model.

The model replies with the brush name in brackets and a sentence on what the brush does and what to try next. Errors (no connection, rate limits, a model that didn't return a recipe) appear in red in the same conversation.

Refine a brush in words#

With Refine the selected brush ticked, your next message changes the active custom brush instead of creating a new one: "sharper", "less buildup", "make the scales smaller". The model sees the current recipe and your conversation so far. Clear chat starts a new conversation.

Tune a brush with sliders#

Open the Recipe section of Brush Lab to see every value of the active custom brush. The same editor appears in the Brush palette as Edit recipe: NAME when a custom brush is active. Hover a slider for a description.

SettingRangeWhat it does
Directionnormal, inflate, view, strokeWhich way the surface moves: out of the surface, outward in every direction, toward the camera, or along the stroke.
Depth-1 to 1Adds material (positive) or carves it away (negative).
Planenone, clay, flatten, fill, scrapePlanar behaviour: flat-topped clay layers, levelling, raising only low spots, or cutting only high spots.
Plane amount0 to 1Strength of the plane behaviour.
Pinch-1 to 1Pulls the surface toward the stroke for crisp creases (negative spreads it apart).
Drag0 to 1Smears the surface along the stroke, like a palette knife.
Auto smooth0 to 1Relaxes the surface after each dab for softer, cleaner results.
Hardness0 to 1Soft airbrush edge (0) to hard-edged stamp (1).
Tip sharpness0 to 1Round, broad tip (0) to a narrow needle point (1).
Patternnone, noise, scales, ridges, pores, cracksA surface texture stamped by the brush.
Pattern size0.03 to 2Size of the pattern relative to the brush size.
Pattern amount0 to 1How strongly the pattern shows.
Spacing0.02 to 2Distance between dabs, relative to the brush size.
Jitter0 to 1Random scatter of dabs around the stroke.
Pressure curve0.3 to 3Tablet response: above 1 needs a firmer press, below 1 responds to a light touch.
Front faces onlyon / offOnly affects surfaces facing the camera, protecting thin parts.
Cavity mask-1 to 1Positive: only cavities. Negative: only ridges and peaks (as Edge Wear does).

The name field at the top of the editor renames the brush when you press Enter.

Choose an AI provider#

Brush Lab works out of the box with no account or key. Open the AI provider section of Brush Lab (also in Generate > AI brush provider) to choose another service.

ProviderWhat you needNotes
Free - no account or key (default)NothingAn open model (GPT-OSS 20B) hosted by Pollinations.ai. Only your description and settings are sent. Rate limited to about one request every few seconds. If it can't be reached, a running local Ollama is used instead.
Anthropic (Claude) - your keyAn Anthropic API keyUses claude-opus-5-5 by default. Effort (low, medium, high) trades speed for more considered brushes.
OpenAI-compatible (OpenAI, Ollama, LM Studio...)An endpoint, a model name and, for hosted services, a keyAny server that speaks the OpenAI chat completions API, including local models.

For Anthropic and OpenAI-compatible providers you can edit the Endpoint, Model and API key fields. Leave the key empty to use the ANTHROPIC_API_KEY or OPENAI_API_KEY environment variable. Click Save settings to keep your choice; settings and keys are stored only on your computer, in ai.json in the SculptForge settings folder (readable only by you). Requests go only to the endpoint you set.

Run a model on your own computer#

For private, offline use with no rate limits, run a local model with Ollama or LM Studio:

  1. Install Ollama and download the recommended model: ollama pull qwen3:4b-instruct (2.5 GB, works without a graphics card).
  2. In AI provider, choose OpenAI-compatible (OpenAI, Ollama, LM Studio...).
  3. Click Ollama (or LM Studio) to fill in the local endpoint.
  4. Click Find models. SculptForge checks the connection, shows "Connected" with the number of installed models, and lets you pick one from the Model list.
  5. Click Save settings.

The Run a model on this computer section in the panel shows the install steps for your operating system. The model needs about 4 GB of free memory; expect 10-20 seconds per brush on a laptop CPU and a few seconds with a GPU. The full walkthrough for Windows, macOS, Linux and LM Studio is in docs/local-ai.md.

Your brush library#

Every brush you create or refine in Brush Lab is saved to your brush library automatically, a moment after your last change (slider edits save when you release the slider). The library loads at every start, in the app, in sculptforge-cli and in the Python module, so your brushes are always there.

The library is a folder of .sfbrush files in the SculptForge settings folder:

SystemBrush library
Linux~/.local/share/SculptForge/SculptForge/brushes
macOS~/Library/Application Support/SculptForge/SculptForge/brushes
Windows%APPDATA%\SculptForge\SculptForge\brushes
The Custom brushes list in the Brush palette, with its right-click menu
The Custom brushes list in the Brush palette, with its right-click menu

The Custom brushes list#

The Brush palette lists every custom brush under Custom brushes. A small tag after a name says where the brush comes from when it isn't simply yours or built in:

TagMeaning
(none)A built-in brush, or a brush in your library
yoursYour version, which replaces a built-in or studio brush of the same name
studioFrom a shared studio folder (read-only)
galleryInstalled from the community gallery (kept in your library)
projectCame with the open project and isn't in your library
unsavedMade this session (for example picked from the picker's Library section, or loaded by a script) and not in your library

Hover a brush for its description, origin and file. Right-click it for:

  • Copy brush code: one line of text to share (see below).
  • Save .sfbrush...: write the brush to a file.
  • Rename...: rename it. Renaming a built-in or studio brush saves a renamed copy and keeps the original.
  • Delete...: remove it from your library, after a confirmation. Only brushes in your own library can be deleted. If your brush replaced a built-in or studio brush, that one is used again.
  • Reveal in folder: open the folder that holds its file.

The same menu is available when you right-click a custom brush in the brush picker.

When brushes share a name, your library wins over studio folders, and studio folders win over built-in brushes.

Share brushes#

Brush codes#

A brush code is the whole recipe in one line of text, starting with sfbrush1:. Paste it into a chat, an email, an issue or a forum post.

  • Copy: right-click a custom brush (in Brush > Custom brushes or the brush picker) and choose Copy brush code.
  • Paste: copy a code, then press Ctrl+V over the viewport, click Paste brush in Brush Lab, or choose Edit > Paste brush. The brush is installed in your library and becomes active.

Pasting also accepts the text of a .sfbrush file. Codes are validated like files: values outside their range are clamped, and anything that isn't a recipe is refused.

Brush files (.sfbrush)#

A .sfbrush file is a small JSON file holding one recipe.

  • Save: right-click the brush and choose Save .sfbrush..., or click Save .sfbrush... under the recipe sliders.
  • Install: click Install .sfbrush... under the recipe sliders, or drop the file onto the SculptForge window. The brush goes into your library.
  • Library folder: .sfbrush files in the Brushes folder of your LightBox library (Documents/SculptForge by default) appear in the Library section of the brush picker and in LightBox's Brush tab. Picking one loads it for the session.

The file format and every key are documented in docs/brushes.md.

Studio brush folders#

A studio can share brushes read-only from network folders. Set the environment variable SCULPTFORGE_BRUSH_PATH to one or more folders (separated by : on Linux and macOS, ; on Windows). Every .sfbrush file in them loads at start-up, tagged studio. Artists can't change or delete studio brushes; if they edit one, their own version is saved in their library under the same name. The Rez package adds the folder in SCULPTFORGE_STUDIO_BRUSHES to this path. See For studios.

Projects (.sfproj) also store the brushes they use, so a scene opens with its brushes on any machine.

The community gallery is a public collection of free (CC0) brushes shared by other sculptors.

  1. Click Community brushes at the top of the Brush palette.
  2. Search by name or description (scales, skin, stone...), or pick a tag from the All tags list.
  3. Click Install under a brush. It is downloaded, checked against its SHA-256 checksum, installed in your library and made active. Installed brushes show Installed.
The Community brushes window
The Community brushes window

The gallery is cached, so the window still opens offline (with a notice) showing the brushes from your last visit. Refresh fetches the latest list. Share yours opens the gallery's page on GitHub, where you can submit a brush you saved as .sfbrush with a pull request.

You can also browse the gallery on the website at sculptforge.app/brushes.html.

Studios can mirror the gallery or run their own. Enter a URL or folder in the Gallery field at the bottom of the window and click Use, or set SCULPTFORGE_BRUSH_GALLERY (which then takes precedence and hides the field). See docs/brushes.md for the gallery format.

Brushes from scripts#

Every brush operation is also a command, for sculptforge-cli, the console, Python and AI agents:

CommandWhat it does
brush_ai prompt=...Design a brush from a description (optional provider, endpoint, model).
brush_create name=... depth=...Create or update a brush from recipe values.
brush_list / brush_libraryList custom brushes (with their source and file, and the library folders).
brush_save path=...Save a brush as .sfbrush (name defaults to the active brush).
brush_load path=...Load a .sfbrush file for this session only.
brush_install path=... / code=... / json=...Install a brush into your library and make it active.
brush_codePrint a brush as a brush code.
brush_rename to=... / brush_delete name=...Rename or delete a brush.
brush_gallery_search / brush_gallery_install name=...Search and install from the community gallery.
# Design a brush for free and save it for the team
sculptforge-cli -c 'brush_ai prompt="weathered stone edges"; brush_save path=stone.sfbrush'

# Install a gallery brush and try it on a sphere
sculptforge-cli -c 'brush_gallery_install name="Snake Scales"; new_sphere subdivisions=6; stroke points="-0.5,0,0 0.5,0.2,0"'

See Scripting and automation for running commands.

See also#

Also in the app: Help > User Guide (Shift+F1). Found a mistake? Edit this page on GitHub.