scadm - OpenSCAD Dependency Manager
scadm is a lightweight, python-based dependency manager for OpenSCAD projects. It simplifies installing OpenSCAD (nightly or stable) and managing library dependencies through a simple scadm.json file.
Features
- π Install OpenSCAD: Automatically downloads and installs OpenSCAD (nightly or stable builds)
- π¦ Manage Libraries: Install OpenSCAD libraries (BOSL2, MCAD, custom libraries) from GitHub
- π Version Tracking: Keeps dependencies in sync with your project
- π Simple Config: Define dependencies in a single
scadm.jsonfile
Installation
Requirements: Python 3.11 or newer
pip install scadm
Quick Start
1. Create scadm.json in your project root
{
"dependencies": [
{
"name": "BOSL2",
"repository": "BelfrySCAD/BOSL2",
"version": "266792b2a4bbf7514e73225dfadb92da95f2afe1",
"source": "github"
}
]
}
2. Install OpenSCAD and dependencies
scadm install
This will:
- Download and install OpenSCAD to
bin/openscad/ - Install all libraries defined in
scadm.jsontobin/openscad/libraries/
Usage
Check version
scadm --version
Install everything (OpenSCAD + libraries)
scadm install # Install nightly build (default - RECOMMENDED)
scadm install --stable # Install stable release (2021.01)
[!NOTE] Nightly builds are installed by default since the stable release (2021.01) is outdated and missing modern features. All nightly versions pass rendering tests before being published to ensure quality.
Check installation status
scadm install --check
Force reinstall
scadm install --force
Install only OpenSCAD
scadm install --openscad-only
Install only libraries
scadm install --libs-only
Configure VS Code extensions
These are opinionated QoL improvements to install nifty VSCode extensions which improve DevEx.
scadm vscode --openscad # Install and configure OpenSCAD extension
scadm vscode --python # Install and configure Python extension
OpenSCAD extension will:
- Install the
Leathong.openscad-language-supportextension - Configure VS Code settings with correct OpenSCAD paths
- Merge with existing settings (preserves unrelated configurations)
Python extension will:
- Install the
ms-python.pythonextension - Configure default interpreter path to
${workspaceFolder}/.venv(eliminates need to manually source venv when opening project)
[!NOTE] Settings are opinionated defaults designed to streamline development experience. Theyβre configured in
.vscode/settings.json(workspace-level), not globally.
[!IMPORTANT] Requires VS Code CLI (
codecommand) to be available in PATH. If not found, youβll receive installation instructions.
Configuration
scadm.json Schema
{
"dependencies": [
{
"name": "BOSL2",
"repository": "BelfrySCAD/BOSL2",
"version": "266792b2a4bbf7514e73225dfadb92da95f2afe1",
"source": "github"
},
{
"name": "homeracker",
"repository": "kellervater/homeracker",
"version": "v1.2.3",
"source": "github"
}
]
}
Fields:
name: Library name (createsbin/openscad/libraries/{name}/)repository: GitHub repository inowner/repoformatversion: Git tag, commit SHA, or branch namesource: Currently only"github"is supported
Directory Structure
After running scadm, your project will have:
your-project/
βββ scadm.json
βββ models/
β βββ your_model.scad
βββ bin/openscad/
βββ openscad.exe (or openscad appimage)
βββ libraries/
βββ BOSL2/
βββ homeracker/
Use in OpenSCAD Files
include <BOSL2/std.scad>
include <homeracker/core/lib/connector.scad>
// Your code here
Renovate Integration
Keep your scadm.json dependencies automatically updated with Renovate:
Add this preset to your renovate.json:
{
"extends": [
"github>kellervater/homeracker:renovate-dependencies"
]
}
This preset enables automatic updates for:
- Git commit SHAs (for tracking main/master branches)
- Semantic version tags (v1.2.3)
License
MIT
Contributing
Issues and pull requests are welcome at kellervater/homeracker.