<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/antimony-cad-software-evolved-from-lisp-machines-and-not-drafting-tables-wkkah90fq" -->

---
title: Antimony: CAD Software Evolved from Lisp Machines and...
description: Antimony is a node-based CAD tool built on a directed acyclic graph engine, a CSG geometry engine, and a standard library of shapes and transforms. Each graph...
canonical: https://daily.dev/posts/antimony-cad-software-evolved-from-lisp-machines-and-not-drafting-tables-wkkah90fq
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables | daily.dev
og:description: Antimony is a node-based CAD tool built on a directed acyclic graph engine, a CSG geometry engine, and a standard library of shapes and transforms. Each graph...
og:url: https://daily.dev/posts/antimony-cad-software-evolved-from-lisp-machines-and-not-drafting-tables-wkkah90fq
og:image: https://api.daily.dev/og/posts/wkkaH90fq.png
og:image:alt: Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables

**[Hacker News](https://daily.dev/sources/hn)** · 4 min read · 0 upvotes · 0 comments

## Summary

Antimony is a node-based CAD tool built on a directed acyclic graph engine, a CSG geometry engine, and a standard library of shapes and transforms. Each graph node is defined by a Python 3.x script with extra 'magic keywords' like input() and output(). The geometry engine uses functional representations for solid modeling, well suited to boolean union, intersection and difference operations. It exports heightmaps for 2.5D work and .stl files with sharp-corner feature detection for 3D manufacturing. A prebuilt Mac app is on GitHub releases, and the project is in active beta, grown out of CAD/CAM research at MIT's Center for Bits and Atoms.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.mattkeeter.com/projects/antimony/3>

## Questions this post answers

### What is functional representation (F-Rep) used for in CAD modeling?

Functional representation (F-Rep) models solids as distance fields, functions that return a signed distance from any point to the shape's surface. This representation is particularly well suited to boolean operations like union, intersection, and difference, since combining two shapes is as simple as combining their distance functions, making it a natural fit for CSG-based CAD tools like Antimony.

_Exploring F-Rep versus boundary representation for CSG? daily.dev surfaces CAD and geometry engineering deep dives._

### How does Antimony let you create custom CAD nodes with Python?

Antimony defines each CAD node with a Python 3.x script plus extra built-in functions like input(), output(), and title(). A node script declares typed input ports, calls a shape function such as fab.shapes.circle(x, y, r), and exposes the result through output('shape', c). Nodes can also add UI elements, like draggable corner points, that push value changes back into the graph.

_Building custom parametric CAD nodes? daily.dev tracks tools that mix scripting with visual node graphs._

## Community take

How the wider developer community reacted, aggregated from 4 discussions and 40 comments across hackernews (as of 2026-11-03).

**TL;DR:** The discussion is less about Antimony itself (noted as old/unmaintained, with a more active fork pointed out) and more a broader debate about the merits and limits of code-based/parametric CAD versus GUI CAD, with several alternative tools recommended.

**Sentiment:** 35% positive · 55% mixed · 10% skeptical

**The case for**

- Code-based CAD lets you build complex, parametrically tunable models quickly once you're fluent with it.
- Several people found Antimony's approach 'pretty sick' or neat compared to expectations.
- Tools blending code-CAD with GUI sketching (like FluidCad) are seen as promising middle-ground approaches.

**The pushback**

- CSG operations change topology unpredictably, making it hard to reliably reference sub-features (like edges for fillets) across parameter changes.
- Pure code-based CAD is viewed by some as more of a toy than a tool for real-world, complex parts.
- The project itself is outdated (2015-era) and tapering off in maintenance, though a more active fork exists.
- Fillets/bevels and 2D sketching support are seen as missing or hard to implement in this constructive-geometry style.

**By community**

- hackernews (mixed): Conversation splits between appreciation for the node/code-based CAD approach and skepticism about its practical limits, while also drifting into recommendations for alternative and successor projects.

**Hottest debate:** Whether code-based/parametric CAD (like Antimony or OpenSCAD) is a genuinely powerful tool or fundamentally more of a toy due to unpredictable topology changes from CSG operations.

**Open questions**

- How would one apply a fillet to an edge within Antimony's constructive geometry model?
- Is there a CAD system that successfully combines code-CAD with traditional sketch-based CAD workflows?
- What is the state and direction of the more actively maintained fork of this project?

**Highlights**

> I love OpenSCAD and code-based CAD, but even I must admit it's really only good for simple things and is more of a toy than a tool to solve real world problems. The main issue is fundamental, which is that CSG operations change topology in unpredictable ways, and there is no reliable way to refer to the components of the result. This is already bad for a few operations, but becomes exponentially problematic for more complicated models. Even in 2D, suppose I want to make a C-shaped thing out of a box and subtracting a different box out of it. You don't know how many edges the result will have, or even how many connected components the result will have, so how do you go on to perform the next step "on that one part that I want" if it even exists? Of course for a single concrete instantiation this is not really a problem, but the whole point is to have the shape tunable based on parameters, and once you allow that all hell breaks loose.
> — [CyLith on hackernews · 2 comments](https://news.ycombinator.com/item?id=50356386)

> Yeah, I oscillate a ton between code-based CAD (OpenSCAD, Build123d) and Fusion 360 and they require very different ways of thinking about things, with different things being easier/harder with each approach. I hesitate a bit to call code-based CAD "a toy", but there are a lot of times where what I think I actually want is some kind of, sorry for the phrasing here, fusion of Fusion 360 and OpenSCAD. The Fusion timeline is pretty phenomenal and having the ability to do something like code steps and manual "click on all of the edges you want to put a fillet on" steps interwoven seems like it has a lot of potential for my "ultimate CAD workflow". The timeline part is kind of the magic that unlocks the whole thing: - update a parameter or a piece of code, triggering a recompute - see that the fillet operation is now missing an edge - rewind the timeline, tweak the fillet edge set - fast-forward the timeline to let the rest of the code blocks re-execute Things like MakerWorld let you upload parametric OpenSCAD files and that's cool and all, but for my own uses I don't care if I need to use the "insert a manual step in the timeline" feature occasionally. OpenSCAD on its own doesn't have that and the idea of trying to do "operations as code" in Fusion (there is a scripting interface) is not super appealing as-is. Being able to use hand-created objects as function inputs seems pretty powerful too. As an example, instead of needing to manually specify all of the points to make a polygon that I'm going to do a bunch of OpenSCAD extrudes with, just referencing a sketch earlier in the timeline. My current OpenSCAD "hack" for that is to draw those in FreeCAD as DXFs and then import them, but it's not a smooth workflow at all.
> — [tonyarkles on hackernews · 1 comments](https://news.ycombinator.com/item?id=50356781)

> This could use a (2015) label :) I've been tapering off maintenance since 2016 or so, but it has a more actively-maintained fork over at https://github.com/nsfm/stibium (albeit with heavy LLM assistance, because it's 2026!) YMMV – I haven't used it or closely inspected the changes, but have corresponded with the author, who seems genuinely dedicated in the success of the project.
> — [mkeeter on hackernews · 2 comments](https://news.ycombinator.com/item?id=50353591)

> >Antimony is a computer-aided design (CAD) tool from a parallel universe in which CAD software evolved from Lisp machines rather than drafting tables That's an ironic take in that the most prolific CAD software in use, AutoCAD, has supported a a lisp dialect, named AutoLISP[0], natively as an alternative runtime for more than four decades. It is so prolific in the CAD industry, that other vendors have even adopted compatibility with the language. It is heartening to see CAD referenced in relation to drafting tables. I spend much of my time trying to educate new CAD users about the different solutions offered between the 'drafting table' metaphor and the 'world model' metaphor present in most CAD applications. [0]https://en.wikipedia.org/wiki/AutoLISP
> — [seemaze on hackernews](https://news.ycombinator.com/item?id=50357108)

> How would one apply a fillet to an edge, in this model? I haven't really used the constructive geometry approaches to CAD, but I've been learning CAD recently through OnShape, and really appreciated how easy were all the operations I wanted to do with it. I've heard that the purely constructive geometry approaches of the OpenSCAD type can make certain operations more complicated to implement.
> — [AceJohnny2 on hackernews](https://news.ycombinator.com/item?id=50356248)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=50334363) · 71 points · 32 comments
- [hackernews](https://news.ycombinator.com/item?id=32030579) · 31 points · 8 comments
- [hackernews](https://news.ycombinator.com/item?id=39663832) · 2 points · 0 comments
- [hackernews](https://news.ycombinator.com/item?id=31542032) · 1 points · 0 comments

## Similar posts on daily.dev

- [GitHub - gumyr/build123d: A python CAD programming library](https://daily.dev/posts/github---gumyr-build123d-a-python-cad-programming-library-s1iw3vdez) · Hacker News · 0 upvotes · 0 comments
- [HardCuts: New Hard-Surface 3D Modeling Tool](https://daily.dev/posts/hardcuts-new-hard-surface-3d-modeling-tool-9g4uyybes) · 80 LEVEL · 6 upvotes · 0 comments
- [2D CAD Design Tool For GNOME Desktop Lands More Features](https://daily.dev/posts/2d-cad-design-tool-for-gnome-desktop-lands-more-features-lb1xa0kez) · Phoronix · 0 upvotes · 0 comments
- [Browser-based 3D Editor Covers The Basics While Staying Local](https://daily.dev/posts/browser-based-3d-editor-covers-the-basics-while-staying-local-qvzhw9rsf) · Hackaday · 0 upvotes · 0 comments
- [3D Modeling Made Accessible for Blind Programmers](https://daily.dev/posts/3d-modeling-made-accessible-for-blind-programmers-lugnmx7vh) · IEEE Spectrum · 1 upvotes · 0 comments

---

Tags: [#python](https://daily.dev/tags/python), [#open-source](https://daily.dev/tags/open-source)

[View this post on daily.dev](https://daily.dev/posts/antimony-cad-software-evolved-from-lisp-machines-and-not-drafting-tables-wkkah90fq)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables","url":"https://daily.dev/posts/antimony-cad-software-evolved-from-lisp-machines-and-not-drafting-tables-wkkah90fq","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/antimony-cad-software-evolved-from-lisp-machines-and-not-drafting-tables-wkkah90fq"},"datePublished":"2026-11-03T16:48:34.992Z","dateModified":"2026-11-03T20:04:54.933Z","description":"Antimony is a node-based CAD tool built on a directed acyclic graph engine, a CSG geometry engine, and a standard library of shapes and transforms. Each graph...","image":"https://media.daily.dev/image/upload/s--2-1xRawN--/f_auto/v1722860399/public/Placeholder%2011","thumbnailUrl":"https://media.daily.dev/image/upload/s--2-1xRawN--/f_auto/v1722860399/public/Placeholder%2011","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/antimony-cad-software-evolved-from-lisp-machines-and-not-drafting-tables-wkkah90fq","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"python,open-source","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"Antimony: CAD Software Evolved from Lisp Machines and Not Drafting Tables"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/antimony-cad-software-evolved-from-lisp-machines-and-not-drafting-tables-wkkah90fq#faq","mainEntity":[{"@type":"Question","name":"What is functional representation (F-Rep) used for in CAD modeling?","acceptedAnswer":{"@type":"Answer","text":"Functional representation (F-Rep) models solids as distance fields, functions that return a signed distance from any point to the shape's surface. This representation is particularly well suited to boolean operations like union, intersection, and difference, since combining two shapes is as simple as combining their distance functions, making it a natural fit for CSG-based CAD tools like Antimony. Exploring F-Rep versus boundary representation for CSG? daily.dev surfaces CAD and geometry engineering deep dives."}},{"@type":"Question","name":"How does Antimony let you create custom CAD nodes with Python?","acceptedAnswer":{"@type":"Answer","text":"Antimony defines each CAD node with a Python 3.x script plus extra built-in functions like input(), output(), and title(). A node script declares typed input ports, calls a shape function such as fab.shapes.circle(x, y, r), and exposes the result through output('shape', c). Nodes can also add UI elements, like draggable corner points, that push value changes back into the graph. Building custom parametric CAD nodes? daily.dev tracks tools that mix scripting with visual node graphs."}}]}
```

