How to help
- Star the repo.Help bring attention to popkern!
- Use it.Build a part, then tell people it exists.
- Break it.If popkern can't do it, we'll fix it!
- Chip in.Help me cover the project's costs on Ko-fi.
- Join the Discord.Come say hi and show us what you build.
- Follow along.On Bluesky, X and Reddit.
- Pass it on.To anyone who makes things.
At the end of 2023, I lost somebody I loved to cancer, somebody who lived to think and create and play and invent. The world was always a little brighter when she made things, and grief has made it clear to me how much I want more people to be able to do the same.
I believe everyone who wants to make something, whether useful, joyful, or both, should have access to the best possible tools for making it, and for free. So today I am announcing popkern, and I intend to make it one of the best CAD engines on the planet.
Introducing popkern
popkern is an open-source parametric boundary representation CAD kernel written in Rust, AKA the math that builds and edits precise solid models, with a tool for creating them on top. It is AGPL-3.0 licensed, with an exception that leaves your creations yours. It is public and available as of today.
Why another kernel
Every CAD application sits on a geometry kernel, which is the layer that knows what a solid is, and can be trusted to intersect two of them, or round their edges, and hand back something valid. Commercial solutions such as Parasolid or ACIS are available through many paid products.
On the open side, OpenCASCADE (OCCT) has carried an enormous load for a long time. FreeCAD, CadQuery, build123d, and a long list of research tools depend on it. Similar kernels, such as the more modern Truck kernel, also exist. On 8 October 2026, NVIDIA open sourced its long-commercial SMLib kernel under Apache 2.0 as part of USD BRep, and it is now being translated into Rust as SolidCore for the SolidCraft CAD application. That is a massive contribution, with much useful logic inside, and we should all be thankful for it. OpenSCAD is another popular free engine, where one programmatically creates and manipulates meshes instead of orchestrating parameterized solids with BReps.
I have used many of these tools, both open source and commercial, in various capacities and am forever thankful for all of them, no matter how they came to exist. They have been crafted by skilled people over decades of unfathomably difficult work. The open source options have been provided through generosity I cannot possibly fully appreciate. However, there are well-known differences in capabilities between the best free kernels and the premier commercial offerings.
popkern started as an experiment to test whether it is now possible to help bridge this capability gap, and my goals have since evolved. I now aim to create a commercial-grade CAD kernel that is fully open source, built from the best available research alone. In my view, because of the huge amount of labor involved, this endeavor wasn't feasible until very recently. The goal is not yet met, but I believe sufficient progress has been made to warrant continued effort.
If you wonder why I didn't choose to contribute to an existing kernel, I confess that I have no good answers to offer. Honestly, the primary reason was that I didn't want to conform to another project's standards. I wanted to make changes to what I built without permission, to have the freedom to be messy and whimsical. Perhaps more importantly, I wanted to ensure that any value I did manage to create belonged to the people it was meant to empower, forever. From my perspective, no existing candidate project I could contribute to, rewrite, or fork from was licensed appropriately for my goals, and if one day relicensing popkern better serves the community's needs, that is possible.
The hardest part is the corners
There are many hard problems geometry engines must solve. Two of the hardest are boolean operations and fillet corners. The latter was of particular interest to me, since it is where many open source kernels have reasonably made compromises.
Rounding a single edge is well understood. What separates kernels is what happens where three or more rounded edges meet at a corner. There, the surface has to bend smoothly in every direction at once, without a visible crease or bump. Those corners are where much of the research effort has gone, and they are one reason why the best CAD kernels could only be built as commercial endeavors for so long. Implementing the math is just incredibly difficult and tedious.
popkern builds those corners from the best of that research. For the curious, the main construction is Karčiauskas and Peters' G² vertex-blend macro cap from 2020, built on a small region carved back from the corner (a “setback”) so the cap has room to blend smoothly into each fillet. Underneath sit their earlier bi-6 polar caps and bi-5 macro patches, Chiyokura and Kimura's rectangular Gregory patches from 1983, Shirman and Séquin's vertex enclosure extended to G², and Stam's exact Catmull-Clark evaluation.
When that cap can't be built cleanly, popkern doesn't quietly settle for something worse. It falls back to a variational fit, which is a spline patch over the same corner, pinned to meet every fillet smoothly and then pulled as fair as it will go by minimizing bending and curvature variation. That draws on Loop and Schaefer's G² splines over extraordinary vertices, the variational surface design of Welch and Witkin and of Greiner, and Schneider and Kobbelt's curvature-variation fairing. If you just prefer how the fitted corner looks, you can ask for it directly. Below that sit the classic corner constructions, and if nothing works, the fillet declines and tells you why.
Smoothness is certified. A certifier computes rigorous bounds along the whole of each seam rather than at a handful of sample points, so a crease can't hide between samples. Corner patches also have to be fair on the inside, so a cap that meets its neighbors perfectly but ripples in the middle doesn't pass. A full map from publications to implementations is available in the project repo.
On agentic AI
Turning a CAGD paper into tested code is long, careful, and unglamorous work. Reparameterizations, coefficient tables, and boundary conditions, followed by weeks of mentally taxing debugging. There is a lot of it, and that cost is much of why so few kernels exist, and why commercial kernels with a long lineage are the best available.
Some may then naturally wonder how popkern managed to implement these algorithms if they are so hard to write.
Every line of popkern was guided by me, but ultimately written by AI agents. I don't believe that is a detail to be left to a footnote. It is the reason a project of this ambition can exist at all, alongside the countless hours I have spent curating research, evaluating different methods, reviewing failures, and choosing which experiments to pursue towards this project's goals. Nothing an agent writes is trusted on its own. Every change has to pass a suite of thousands of automated tests, and results are checked against OpenCASCADE wherever the two can be compared.
popkern was not built over a week against an existing product. It all began on March 14, 2026, and has been developed nearly 24/7 since. Seven months and over 3,000 commits in, most of that time went into the places no application UI would show. Smooth corners where fillets meet took most of April through July on their own! There are some great projects being built quickly with agents, and I'm cheering them on too. popkern is a slower bet, where most of the work is checking. I expect to work on popkern a very long time.
- Core topology, booleans, tessellation, STEP
- Fillets and smooth corners
- Sketches, constraints and feature history
- Certified smoothness
- Scripting and the browser
- Threads and fasteners
- Assemblies, hinges and popkern live
- Simulation
I understand not everybody is on board with the use of generative models, and that discussion is worth making plenty of space for. My intention with popkern is to demonstrate good stewardship through community-first principles. I hope to create the fully capable, fully open source kernel I could only dream of for years. If it can be achieved, I know it will have a great positive impact on makers of all experience levels. And the fact of the matter is that such an ambition has only become possible with the recent emergence of highly capable agentic AI.
What works today
Quite a lot, actually! Booleans work on exact solids, and they're transactional, so an operation either works completely or fails cleanly without leaving you a half-broken part. Fillets and chamfers work, chains of them too, and corners where three or more fillets meet get smooth patches (G² where the geometry allows it) or mitres. You can sweep, revolve, and loft, shell and offset a body, and thicken an open sheet into a solid. There's a 2D constraint solver for sketches, and a solved sketch can be turned straight into a body. Tessellation is watertight, and STEP goes in and out, checked against OpenCASCADE in testing. On top of all that sits a full feature tree. Roll back, suppress and reorder features, undo and redo, and your selections keep pointing at the right faces and edges after a rebuild. You can even run structural and thermal simulations right in popkern live! Pick the faces to hold and load, along with a material, and see stress, deflection and safety factors on your part in seconds.
Every render in the gallery comes out of the test suite. They have to pass kernel validation, a watertight tessellation check, and a STEP round-trip before they count.
What does not work yet
Plenty. popkern first had to satisfy my own internal skepticism about whether this was even possible. Consider this maximally early test software, where hardening has only just begun, poor architecture choices have been allowed to persist, unoptimized code is abundant, etc. Loads of features that you might expect to exist probably don't. I promise I am constantly working to make steady improvements!
Complex parts can be slow to build. Some shapes still fail, including certain arrangements of holes cut through a part, fillets that run into other fillets at awkward corners, and curved surfaces that nearly touch can all trip up the kernel. That list is certainly not exhaustive; suffice it to say much work is left to do. Where the kernel declines, it is supposed to decline loudly and tell you the numbers. If it ever fails quietly, that is a bug and I want to hear about it!
Using popkern
While popkern is predominantly the core math for building solids, it also comes with popkern live, a tool for creating models. You can try it entirely in your browser at the live page, or install it on your preferred OS. The kernel itself is a set of Rust crates, if you would rather build on it directly.
Models are built by writing scripts, either one-offs or collections of scripts that iteratively update parts and assemblies in sequence. Example projects and a scripting guide are available. If you install popkern directly on your computer or self-host popkern, an MCP server is available, and popkern can make full use of available compute.
Ownership of creations
The kernel is AGPL-3.0-only with an additional permission for user
scripts and produced geometry. Everything you make with it is yours alone.
Your part scripts and .pkn documents are covered by the exception, as
are all models, meshes, and STEP files you produce with popkern.
The AGPL applies to the kernel itself, meaning if you modify it, or build
software on top of it, and then share that software or run it for
other people over a network, you have to offer those people its
source under the same license. That keeps improvements to the kernel
open, and they can always find their way back.
What's next
Of course, the thing the kernel needs most is more work on booleans and fillets! Specifically, adding non-manifold topology to booleans is my top priority, along with more exact geometry cases, as well as more fillet special cases and kinds. Fuzz testing booleans, fillets, and surface healing would help harden popkern tremendously and will also be a major focus soon.
Come and break it
Early is the useful time to arrive! The most valuable thing anyone can do right now is throw a part at popkern that it cannot build and open an issue.