libfive is a software library and set of tools for solid modeling, especially suited for parametric and procedural design. It is infrastructure for generative design, mass customization, and domain-specific CAD tools.

The geometry kernel is based on functional representations, which have several benefits over traditional triangle meshes:

The libfive stack includes a low-level geometry kernel, bindings in higher-level languages, a standard library of shapes and transforms, and a desktop application for script-based design.

Studio
Desktop design tool
Standard library
Shapes and geometric operations
Scheme bindings
(use-modules (libfive kernel))
C API
#include <libfive.h>
libfive
C++ library

Studio is a great place to start, but it's only one example of an application that can be built on this framework. The layers are loosely coupled, so you can build useful tools at various levels of abstraction.

Building your own CAD software? Use the libfive kernel for solid modeling, then add domain-specific details with your own GUI and frontend.

Need bindings in a high-level language? Use the C bindings and your language's FFI to build tools that integrate with the rest of your system.

How about a design customizer? Write a headless CAD application with the Scheme bindings and standard library, then run it as a service to generate user-customized models.

libfive is an open-source project licensed under the LGPL (for core libraries) and GPL (for bindings and desktop application).