A local-first browser catalogue for OpenSCAD, STL, and 3MF libraries.
Built for people who want to keep their printable model libraries on their own disk, preview and customize OpenSCAD files locally, and open finished models directly in their slicer without depending on hosted customizer platforms.
It can:
- scan one or more OpenSCAD source folders
- render preview images
- expose OpenSCAD Customizer parameters
- export binary STL files
- open source
.scadfiles in OpenSCAD - open baked
.stland.3mffiles directly in a slicer - manage source folders from the browser
- optionally enrich entries with local Ollama-generated summaries, tags, and friendlier parameter labels
This repository is the tool only. It does not contain any model libraries.
Catalog overview:
Customizer modal:
This project is licensed under the GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later).
See LICENSE for the full text.
python3openscad-nightly- optionally a slicer AppImage or executable if you want direct slicer launch
tools/scad_catalog.py- builds the catalog from configured sources
tools/scad_catalog_server.py- serves the browser UI and handles preview/export/open actions
sources.json- source library configuration
CATALOG.md- extra usage notes
Edit sources.json.
Example:
{
"tools": {
"openscadBin": "openscad-nightly",
"slicerBin": ""
},
"ai": {
"enabled": false,
"provider": "ollama",
"baseUrl": "http://127.0.0.1:11434",
"model": "scad-customizer",
"modelfile": "models/Modelfile.scad-customizer",
"timeout": 30,
"includeScad": true,
"includeStl": false,
"maxSourceChars": 12000,
"maxCommentChars": 3000
},
"sources": [
{
"id": "my-scad-library",
"name": "My SCAD Library",
"path": "/path/to/scad/library",
"libraryPaths": ["/path/to/openscad/libs"],
"includeHelpers": false,
"includeInProgress": false,
"includeDeprecated": false
},
{
"id": "my-baked-library",
"name": "My Baked Library",
"path": "/path/to/baked/folder",
"libraryPaths": []
}
]
}Source fields:
id: stable internal identifiername: display label in the UIpath: folder to scanlibraryPaths: paths added toOPENSCADPATHfor that sourceincludeHelpers: SCAD files onlyincludeInProgress: SCAD files onlyincludeDeprecated: SCAD files only
Each configured source folder is scanned for both customizable .scad files and baked object files such as .stl and .3mf.
Legacy type values are still accepted in old configs, but scanning is now file-driven.
Tool fields:
openscadBin: full path or command name for OpenSCADslicerBin: optional full path or command name for OrcaSlicer or another slicer
AI fields:
enabled: turn local AI enrichment on or offprovider: currentlyollamabaseUrl: Ollama API base URLmodel: local model name such asscad-customizermodelfile: optional Ollama Modelfile path used to auto-create the named model if it is missingtimeout: request timeout in secondsincludeScad: allow AI summaries/tags/parameter labels for SCAD entriesincludeStl: allow AI summaries/tags for baked object entries such as STL and 3MFmaxSourceChars: max source excerpt sent to Ollama per SCAD filemaxCommentChars: max leading comment text sent to Ollama per SCAD file
If AI is enabled but Ollama is not running or the model is unavailable, catalog generation falls back to the current non-AI behavior. If modelfile is set and Ollama is installed, the tool will try to create the missing model automatically with ollama create.
From the repo root:
python3 tools/scad_catalog.pyThis writes:
.catalog/catalog.json.catalog/index.html.catalog/previews/.catalog/metadata/.catalog/wrappers/for baked object preview wrappers
Useful variants:
python3 tools/scad_catalog.py --force
python3 tools/scad_catalog.py --limit 10
python3 tools/scad_catalog.py --skip-previews
python3 tools/scad_catalog.py --config /path/to/other-sources.json
python3 tools/scad_catalog.py --ai --ollama-model qwen3:8b
python3 tools/scad_catalog.py --no-aiStart the server:
python3 tools/scad_catalog_server.pyThen open:
http://127.0.0.1:8765/.catalog/index.html
The app currently supports:
- a
Customizable SCADtab - a
Baked Objecttab - source filtering
- rescan from the browser
- force a full rebuild from the browser
- folder/source editing from the browser
- OpenSCAD launch for
.scadentries - slicer launch for baked
.stland.3mfentries
- SCAD previews are rendered by
openscad-nightly - baked object previews are also rendered by
openscad-nightlythrough generated wrapper.scadfiles - AI enrichment is optional and cached under
.catalog/ai/ - AI enrichment never edits or rewrites your SCAD files
- the server defaults to
openscad-nightly - OpenSCAD and slicer paths can be configured in
sources.jsonor overridden on the server command line

