Accidentally Building a GitHub Parasite: A CLI Dependency Manager for OpenSCAD

solderlocks1 pts1 comments

Accidentally building a GitHub Parasite - by Scott Kuehnert

Heavy Radiant

SubscribeSign in

Accidentally building a GitHub Parasite<br>How I ended up building a full-blown OpenSCAD package manager on infrastructure I don't own, for free

Scott Kuehnert<br>May 15, 2026

Share

TLDR; I wanted to view an OpenSCAD .scad file on my phone without downloading it. Two months later, I had inadvertently built a CLI dependency manager and serverless parametric CAD customizer on top of GitHub’s infrastructure.

I was recently reading about the amazing work by a team at MIT in 2018 on the “Inverse CSG” problem. They developed an algorithm for automatically translating 3D models into parametric OpenSCAD models. The team included a link to a collection of .scad files that their system had produced at the end of their paper.<br>Thanks for reading Heavy Radiant! Subscribe for free to receive new posts and support my work.

Subscribe

I followed the link to the GitHub repo, hoping to be able to see the 3D models directly within the browser, like I’m used to doing with .STL files:

Screenshot of the .STL visualizer integrated into GitHub

But instead, I could only see the OpenSCAD code:

Screenshot of a .scad file on GitHub

OpenSCAD

OpenSCAD is a declarative parametric modeling format, so models are represented as code. In order to visualize the 3D object defined by a .scad file, users have to download and install the OpenSCAD editor, download the .scad file, download any files that the .scad depends on (like other models, libraries, etc), and compile the code into a 3D model. There’s no official OpenSCAD mobile application, so there isn’t a great way to compile and view models on a phone. I looked around for browser-based options, and found a couple of editors like the Seasick openscad-web-gui and OpenSCAD Playground and openscad.cloud. But they all lacked support for dependency resolution, and most didn’t allow for pulling models from GitHub URLs.<br>So I forked openscad.cloud, a serverless web-assembly scad viewer in the browser, and added URL-based fetching and parsing so I could view scads from arbitrary GitHub URLs on the page:

Screenshot of the 3D model viewer integrated into the page at scadder.dev

Once I had a simple single-page application that could take an arbitrary GitHub .scad URL, compile it, and visualize it on the page without a server, the rest of the system kind of assembled itself. It was one of those projects where each feature led naturally to the next, until it snowballed into something bigger.<br>After building the viewer, my first test was to try viewing a variety of different models at different URLs. I grabbed some URLs of some .scads that I could find on GitHub, and pasted them into my tool. Right off the bat, I noticed that about 40% of the models that I tried viewing returned an empty scene and a console error.

Screenshot of the error displayed when a .scad fails to load

Looking further into the errors, I started noticing a repeating pattern. The .scad files I wanted to view were regularly failing to render because they were attempting to reference/use other scads that hadn’t been pulled in. So I wondered whether I could reliably read .scad files and find the required files on the same server, and automatically pull those in too. It turned out that in most cases, I actually could find the dependencies, and the dependencies of those dependencies, and so on, and pull them into my web application so complex models could be properly rendered.

Open Source Hardware

I’ve been thinking for a while about open source hardware, and pondering the barriers that prevent open source hardware from being more like open source software. I have been wondering what it takes to enable people to share common libraries of solutions to various problems with one another, and stand on the shoulders of giants, rather than redesign solutions to common problems from scratch each time a project is started. I had heard about prompt-to-CAD systems that could help people get high-level rough geometries from simple text prompts, but that still leaves people generating solutions to common problems from scratch over and over. What I yearn for is a vetted library of high quality designs for reusable, extensible mechanical components that I can easily pull into projects.<br>I started to realize that parametric modeling formats are like source code for 3D models. The parametric model contains the human-readable mappings between parameters and geometric features of models, and the .STL files they produce are like compiled binaries. I started to think that the lack of a widely used open parametric modeling format was a major hindrance to the emergence of a culture of 3D designers that were truly comfortable borrowing from one another. Formats like .f3d make parametric models feel like compiled binaries because they can’t be diffed in repos, or visualized outside of heavy native software (like Fusion). But open parametric formats like OpenSCAD...

openscad models github scad like parametric

Related Articles