HackersCAD now pairs its code-first parametric CAD application with an MCP server and an agent skill, giving AI coding assistants tools to create, check, render and export models. The model remains a readable source file, whether a person types a dimension, rounds an edge with the mouse or asks an agent to make a change, according to the project’s documentation.
The project appeared in a Show HN listing on October 28, 2026, according to its dated discovery record. Its website describes the current workflow without identifying a precise release time or version for the agent integration.
The useful distinction is between giving an agent access to CAD operations and proving that its design will work. HackersCAD documents a repeatable path through modeling, geometric checks and exports. Its battery-holder example also reveals exactly where automated checks stop: they verify the conditions someone wrote down.
Code and Mouse Edits Share One Model
HackersCAD stores designs in .hcad files written in a small, C-style language. The repository documentation describes syntax based on a subset of D, with explicit units such as 60.mm and 30.deg. Solids can be joined, subtracted and intersected using +, - and &.
The geometry uses OpenCascade boundary representation, or B-rep. That represents solid boundaries through surfaces, edges and their relationships, supporting operations such as fillets, shells, sweeps, lofts and modeled threads before a mesh export is needed.
Mouse actions feed back into the same source file. Users can select edges for rounding, make holes and pockets, draw constrained sketches on faces, move parts and create repeated patterns. Those actions write code. Parameters marked with @param also appear as editable fields in the side panel.
That shared representation is the most interesting design choice here. An agent’s changes can be reviewed in a text diff, while a person can still adjust geometry visually. I’d favor that arrangement for a parameterized bracket or enclosure because it leaves a concrete record of which dimensions and operations changed.
Selectors such as edges.parallel(Z) describe geometric relationships instead of referring to numbered edges. Libraries supply common building blocks, including fasteners, threads, gears, hinges, snap fits and enclosures.
The Sandbox Has a Specific Boundary
The project says the modeling language has no filesystem or network access. That limits what code inside a model can do, which is useful when opening a generated or shared .hcad file.
That boundary applies to the modeling language. It should not be read as a blanket security guarantee covering the desktop application, software installation or the connected AI agent’s other permissions.
Installing the Skill and MCP Server
HackersCAD packages the desktop app, command-line tool and MCP server together. Its download page lists:
- Linux: x86-64 AppImage, requiring glibc 2.39 or newer.
- Windows: x86-64 builds for Windows 10 and 11.
- macOS: Apple Silicon builds requiring macOS 15 or newer.
The repository’s setup instructions say Windows and macOS builds are unsigned. That is worth considering before following instructions to bypass an operating system warning.
The agent integration has two separate pieces:
- The skill and language documentation teach the assistant the syntax, conventions and setup procedure.
- The MCP server exposes tools the assistant can use to work with models and the application.
MCP, short for Model Context Protocol, supplies the connection between the assistant and those tools. The skill supplies instructions for using them effectively.
Generate the Skill From the Installed Tool
For Claude Code, the project documents a skill directory containing SKILL.md and the full language reference, llms-full.txt. The following shell example uses those documented commands, with a variable to keep the destination readable:
skill_dir="$HOME/.claude/skills/hackerscad"
mkdir -p "$skill_dir"
hcad docs --skill >"$skill_dir/SKILL.md"
hcad docs >"$skill_dir/llms-full.txt"
This creates the directory and writes documentation produced by the installed hcad executable. It assumes hcad is available on the shell’s PATH; otherwise, use the executable’s full path. These are setup instructions, not commands executed for this article.
The website also provides a paste-in request for assistants that retrieves the skill and language documentation, then follows the skill’s setup process. The documented flow asks before installing HackersCAD if it is missing.
Register Claude Code or Codex
For Anthropic’s Claude Code, the documented registration command is:
claude mcp add -s user hcad -- hcad mcp
For Codex, it is:
codex mcp add hcad -- hcad mcp
Both commands register hcad mcp as the server process. The project instructs users to restart their agent afterward. If hcad is not on PATH, its executable path needs to be substituted in the registration command.
Generating the skill from the installed tool is a sensible detail: it gives the assistant documentation associated with the software available locally.
What the Battery-Holder Tests Actually Check
HackersCAD supports unittest blocks inside model files. Its command-line tool can check, render and export designs in scripts or CI, according to the project site.
The published AA battery-holder example makes this concrete. It defines:
- A nominal battery diameter of 14.5 mm.
- A clearance value of 0.4 mm.
- A pocket diameter calculated as their sum, 14.9 mm.
- A reference battery placed in the first pocket.
Its two assertions check that the pocket diameter exceeds the battery diameter and that the intersection between the holder and reference battery has a volume below 0.01 mm³.
Here is the same test logic with the explanatory error strings omitted:
unittest {
assert(hole > aa);
assert((holder & cell).volume < 0.01.mm ^^ 3);
}
The & operation computes the intersection of two solids. Reading its volume gives the test a measurable condition, beyond a visual inspection. The reference battery is marked as excluded from export, so it can serve as a checking aid without becoming part of the manufacturing file.
Two details matter when interpreting a pass.
First, the 0.4 mm allowance is diametral. For a centered 14.5 mm cylinder inside a 14.9 mm pocket, the nominal radial gap is 0.2 mm on each side. That follows from the published dimensions; the example does not specify whether a particular printer and material can reliably produce that fit.
Second, the intersection assertion checks the reference battery in the first pocket. It does not independently inspect every pocket, simulate insertion or test whether a printed holder will withstand use.
This is where I’d put the review effort: make the requirements explicit before asking an agent to satisfy them. A passing test can confirm that a documented geometric condition holds. It cannot supply missing requirements for tolerances, loading, material behavior or assembly.
CI Makes Those Requirements Repeatable
The documented example can be checked from the command line:
hcad check batteries.hcad
It can then be exported:
hcad export batteries.hcad -o batteries.3mf
Frequently Asked Questions
3 questions
1Is HackersCAD Free and Open Source?
Yes. The project describes HackersCAD as free and open source, with builds for Linux, Windows and Apple Silicon Macs.






