How to Build an Open-Source Concrete 3D Printer: M3-CRETE BOM, CAD, and Validation Workflow

M3-CRETE is the open-source concrete 3D printer designed to be replicated, validated, and extended by anyone with a US pallet of floor space, an aluminum extrusion supplier, and a willingness to commission a real machine. This guide is the canonical entry point for builders. Everything described here is published under CERN-OHL-W-2.0 for hardware and CC BY-SA 4.0 for the V-slot CAD library.

1. Why this exists

In 2026 the concrete 3D printing market has bifurcated into two unworkable extremes for the people who actually need a printer.

On one side sit closed industrial systems with capital costs in the high six figures, proprietary slicers, single-source pump consumables, and licensing terms that prevent any university lab from publishing the geometry of the machine, let alone modifying it. These printers exist to serve precast factories and venture-funded construction startups. They are not available, in any meaningful sense, to researchers, contractors, structural engineers, makerspaces, and university labs.

On the other side sit a long tail of unmaintained hobby plans built around CoreXY desktop-printer kinematics scaled up into a frame that cannot survive a real cementitious printhead. They exist as forum posts, dead Hackaday pages, and abandoned GitHub repositories. None of them are buildable today from sourceable parts.

M3-CRETE by Sunnyday Technologies exists in the gap. It is a buildable, field-serviceable, sub-meter cartesian motion system that fits on a standard US pallet, targets a low-five-figure system cost, runs on commodity Klipper hardware, and ships its full CAD assembly, bill of materials, firmware configuration, and validation harness as open-source artifacts. The design intent is mundane and important: enable a researcher, a contractor, a master's student, and a makerspace to all build the same machine, source parts locally where possible, modify the design to suit their work, and publish their results without permission from a vendor.

This page documents how to do that. It walks the architecture, the BOM, the CAD workflow, the validation tooling, the licensing model, and the open issues. Concrete 3D printing is not a 280-character problem.

2. Design philosophy

Three commitments shape every component decision in M3-CRETE.

The first is pallet-scale. The machine is engineered to fit, fully assembled, on a standard US pallet, a global shipping primitive that simplifies kit logistics, lab installation, and field deployment. The default M3-2 build volume is sub-meter in two axes and pallet-scale in the long axis. We treat the pallet footprint as a feature, not a bug. The reason is sourcing reality: above the pallet boundary you start needing freight LTL shipping, gantries no longer fit through a standard doorway, and long-stock aluminum extrusions become custom-cut SKUs with multi-week lead times. The pallet boundary is a hard sourcing constraint disguised as an aesthetic preference.

The second is sensorless homing via StallGuard4. Every stepper axis on the machine, including all four Z-posts and the two anti-racking Y motors, homes by detecting motor back-EMF when the carriage stalls against a hard stop. The machine has zero mechanical limit switches. The drivers are TMC5160s onboard the BTT Kraken mainboard, with StallGuard support over SPI plus a single-wire diagnostic output. Eliminating limit switches removes a substantial number of wired connections, an equal number of chances of dust contamination on a job site, and the small components that any concrete-aerosol environment will eventually destroy. A NEMA23 with a heavy-duty shaft is required, not optional, because StallGuard's torque/inductance window depends on it.

The third is scope discipline. M3-CRETE is a motion system. The pump, mixer, hopper, hose management, and material chemistry are all explicitly out of scope on this repository. The pump system is a separate Sunnyday product called NemoCrete and lives behind a different brand wall. Mix design lives in CEMFORGE, the Sunnyday AI formulation engine. Printability data lives in the Open3DCP open standard. By refusing to bundle these subsystems into one repository we keep the machine reviewable, maintainable, and forkable.

The design exclusions list is unusually explicit and worth reading verbatim:

The exclusions section exists because the project has accreted many rounds of "have you considered adding..." suggestions over the last year and a half. Each rejection is an active engineering decision, documented so that contributors do not waste round-trips proposing rejected directions.

3. Architecture overview

The default model variant is the M3-2, a pallet-scale cartesian gantry with a sub-meter working envelope. The motion system has four mechanical subsystems: a 4080 C-Beam frame, a dual-Y belt-pinion gantry, a quad-Z self-tramming Z-stage, and a printhead carriage on a spliced X-beam.

Frame: 4080 C-Beam, single-length stock

The primary structure is 4080 C-Beam aluminum extrusion, used for Z-posts and Y-gantry rails, with 2040 V-slot for cross-bracing. Every structural member is cut to a single canonical length. There are no custom cuts and no mixed lengths. Single-SKU procurement is a non-negotiable for a kit business and a meaningful gift for any solo builder. The C-channel openings face inward toward the printer cube so the belt path runs inside the C, where it is shielded from concrete spray and aerosol.

The X-axis is built from two stock segments spliced at center span to yield the longer build envelope. The splice uses a straight-line internal slot-linking kit that fits inside the T-slot channels and sits below the wheel path, plus three V-slot bars staggered inside the C-channel and bonded with structural adhesive. The center bar bridges the splice equally to either side; the left and right bars fill the remaining sections. No long custom-cut extrusion is required.

Corner joints use 5-screw T-plate or L-plate connectors at every 4080-to-4080 junction.

Motion: belt-pinion drive, polycarbonate V-wheels, GT2 belts

Every axis runs on GT2 belts and polycarbonate V-wheels. The Y-axis uses a wider belt; the X-axis carriage runs on a narrower belt that fits inside the gantry slot (a deliberate cross-axis material distinction documented in the BOM). The Z-axis is belt-driven from hub disks on the motor side and smooth idlers at the post bottom.

V-wheels engage the V-groove on the narrow face of each extrusion at a specified engagement depth. This depth is encoded as a hard invariant in the validation harness; any geometry that drops the wheel out of engagement fails CI before the STEP file lands.

Steppers: NEMA23, sensorless homing

The motion system uses NEMA23 motors with heavy-duty shafts: one X, two Y for anti-racking, and four Z for self-tramming. An additional motor (NEMA34, owner-supplied) drives the pump, on a separate ecosystem. The shaft sizing is required for StallGuard4 sensorless homing torque compatibility, not a comfort choice.

Z-axis motors straddle the top Y-brace, body above and shaft pointing down. A hub disk below the brace routes the belt over the brace and down the post to the carriage, where it terminates at the bottom idler and returns. This routing eliminates lead screw alignment as a build skill and lets each Z-corner tram independently against the others under Klipper's Z_TILT_ADJUST macro.

Controller: BTT Kraken, Klipper, Pi 5

The mainboard is a BTT Kraken with onboard TMC5160 drivers configurable for SPI-mode StallGuard4. The host runs Klipper on a Raspberry Pi 5 with a touchscreen. The firmware repository lives at M3-CRETE-FIRMWARE for kinematic profiles and stepper configuration.

Specification table (qualitative)

Parameter M3-1 M3-2 (default) M3-4
Build envelope Sub-meter cube Pallet-scale long, sub-meter wide and tall Pallet-scale in two axes, sub-meter tall
X-axis splice None Center splice Center splice
Y-axis splice None None Center splice
Frame primary 4080 C-Beam 4080 C-Beam 4080 C-Beam
Stepper architecture Quad-Z self-tramming, dual-Y anti-racking Same Same
Pallet footprint One standard pallet One standard pallet One standard pallet
Target system cost Low-five-figure Low-five-figure Low-five-figure
License CERN-OHL-W-2.0 CERN-OHL-W-2.0 CERN-OHL-W-2.0

Variants are configured in config.js as MODEL_VARIANTS with quantity overrides per part. Switching between variants in the BOM viewer is a one-click operation.

4. The bill of materials

The full BOM is served live at m3-crete.com/bom as a static JSON document with no backend. The viewer supports multi-supplier selection, per-part quantity overrides, fabrication-method toggles (Buy / Print / CNC), CSV and JSON export with supplier filters, model variant selection, and a "Suggest Supplier" button that opens a GitHub Issue. The privacy guard in the validation tooling explicitly suppresses vendor names, SKUs, unit costs, prices, and supplier identifiers from any audit emit path; cost data exists in the data file but is not exposed by the public report surface.

Sourcing reality

There is no US manufacturer of V-slot extrusion. Every V-slot bar in the BOM is imported from China through a US distributor or shipped direct. Bonnell Aluminum / TSLOTS in Niles, Michigan makes T-slot but not V-slot, and a custom V-groove die would cost a substantial domestic tooling line. We have estimated and rejected that capital line until kit volume justifies it.

The supplier strategy splits the build across three procurement paths:

Cost shape

The kit-business view has Sunnyday-supplied parts (frame, plates, motion components) packaged at a margin that supports continued maintenance, with the customer adding a smaller Amazon order for small hardware and electronics. The total system cost lands in the low-five-figure range inclusive of motors and electronics if the customer is sourcing fresh; meaningfully lower if the customer already owns a BTT Kraken and most of the steppers, which most of our early adopters do.

The BOM surfaces all of this directly in the viewer. Click a supplier chip to assign that supplier to all matching parts; click "I have this" to exclude a row from the buy list; flip the Buy / Print / CNC toggle on a fabricated part to mark it as locally produced. Export the result as CSV for the spreadsheet, or as JSON for the AI buying-guide assistant.

A short caution: supplier listings in the BOM viewer are community-contributed reference information, not endorsements. Prices and availability change. Verify each line against the live supplier page before placing an order.

5. CAD and assembly

The full M3-2 assembly is a parametric CadQuery-driven STEP, generated from a script (CAD/m3_2_assembly.py) that runs against a versioned V-slot library. The STEP file lives in the repository as the human-reviewable artifact; the Python script is the source of truth.

LLM-driven CAD: the AI-CAD whitepaper workflow

The M3-CRETE CAD workflow is documented in the Sunnyday AI-CAD whitepaper, titled Self-Verifying LLM-Driven Parametric CAD Assemblies: Lessons from a Meter-Scale Concrete 3D Printer (Sonnentag, 2026). The headline claim of that paper is intentionally narrow: an LLM coding agent paired with CadQuery is most useful when forced to verify its own geometry against engineering invariants on every iteration, not when asked to "design a part." The harness is the artifact that matters; the agent is a means.

This work sits in a longer lineage. The M3-CRETE printer is the Print stage in Sunnyday's ICME-style closed loop, in the spirit of Olson's Materials by Design framework: predict properties from composition and process, deposit the candidate, measure the result, feed the measurements back into the predictor.

The whitepaper documents three layers:

  1. Geometry library, a set of STEP files imported from the OpenBuilds ecosystem (CC BY-SA 4.0), plus extended/compatible parts in CAD/Advanced/ and vendor-sourced models for steppers, the BTT Kraken board, and GT2 pulleys. STEP files have arbitrary native orientations, which is the single largest source of agent placement bugs. A probe_steps.py script reads the bounding box of any STEP file before the agent attempts to place it.
  2. Assembly script, a CadQuery 2.7 script that loads the V-slot library, places every component parametrically against frame topology constants (W, D, H), and writes the assembled STEP. The script evolved through three major versions: a pure-parametric early build, a Phase C completion with stricter component coverage, and a v3 filter-and-replace strategy that loads a human-edited Fusion 360 export and surgically replaces specific components with parametric versions.
  3. Self-verification harness, a preview_assembly.py that runs engineering invariants against the generated geometry, renders three orthographic projections (XY, XZ, YZ) headlessly with matplotlib, and exits non-zero on any failure.

CADCLAW: extracted as its own tool

The validation harness was extracted into a generalized framework called CADCLAW (Zenodo DOI 10.5281/zenodo.19647391), now a separable open-source project. CADCLAW is field-tested against the M3-CRETE repository on every release. The latest field-test report documents Doctor PASS at full coverage, the harness running end-to-end after one workaround, and a small set of issues identified for the next milestone. CADCLAW reads the BOM, classifies STEP solids by sorted bounding-box signature, runs BOM/CAD count cross-checks, and emits a markdown report.

The privacy guard is unconditional: vendor names, SKUs, unit costs, and supplier identifiers are dropped from every emit path, regardless of whether the project's cadclaw.yaml declares them private. This is non-negotiable in concrete 3D printing where supply chain advantage is real and the BOM viewer is the public interface.

Specific design decisions

A few CAD decisions deserve calling out because they fail in obvious ways if you do not know them:

6. Mix design and printability

M3-CRETE is a hardware platform, not a materials platform. We do not ship a recommended concrete mix in the repository. The reasons are practical: cementitious printability is a function of local aggregate, ambient humidity, fresh-state rheology, set-time targets, and structural intent. A mix that prints well in Appleton in October will not print well in Phoenix in July. Hard-coding a recipe would be a disservice.

What we do ship is the Print stage in the Predict to Print to Prove loop:

The academic literature on 3DCP printability is robust enough that a builder does not have to start from scratch. Chen et al. (2020) studied the effect of printing parameters on interlayer bond strength of 3D printed limestone-calcined-clay-based cementitious materials and showed how interval time and nozzle standoff drive cold-joint formation. TU Delft's set-on-demand work (2021) demonstrated chemical activation strategies that decouple pumpability from buildability. The TU Delft graded-clays study (2021) identified calcined-clay supplementary cementitious materials as a viable LC3 path for 3DCP. An, Zhang, and Yang (2024) reviewed coarse aggregate incorporation strategies in Virtual and Physical Prototyping (DOI 10.1080/17452759.2024.2351154). For limestone-blended binder fundamentals relevant to PLC-based 3DCP, Tennis et al. (2024) is the current state-of-the-art reference for limestone in cement.

We do not redo the CEMFORGE pillar page here. The point of this section is to establish that the printer is one stage in a larger Predict-Print-Prove loop, and that the boundary between the printer (M3-CRETE), the formulation engine (CEMFORGE), and the data standard (Open3DCP) is intentional and clean.

7. License and contribution model

M3-CRETE ships under a dual-license structure that almost no one in 3D printing has bothered to read carefully, so this section is worth your time.

CERN-OHL-W-2.0 for hardware

The hardware design itself (frame, motion system, custom brackets, BOM, firmware configurations) is licensed under CERN Open Hardware Licence Version 2 - Weakly Reciprocal, commonly written CERN-OHL-W-2.0. CERN-OHL-W is the open-hardware analog of LGPL: derivatives of covered files must be made available under the same license, but you can integrate the design into a larger product without infecting the entire product with the license. You can build M3-CRETE printers commercially, sell them, modify the design, and ship that modified design as a kit, provided the modified design files (CAD source, BOM changes, firmware patches) remain available under CERN-OHL-W-2.0.

Why CERN-OHL-W and not, say, MIT or Apache 2.0? Because hardware is not software. A permissive software license assumes that downstream users will keep contributing upstream because the marginal cost of doing so is trivial. Hardware does not work that way. A weakly reciprocal license keeps the design files open without preventing commercial integration. CERN-OHL-W is the closest the open-hardware community has to a battle-tested, lawyer-reviewed, internationally enforceable instrument for this trade-off.

CC BY-SA 4.0 for V-slot CAD

The V-slot component models in CAD/Components/ derive from the OpenBuilds ecosystem, which licensed those models under CC BY-SA 4.0. We preserve that license on the component files and require derivative V-slot models in our repository to remain CC BY-SA 4.0. This is a license-compatibility matter, not a preference. Note that the OpenBuilds company itself dissolved in May 2025; the CAD ecosystem is community-maintained.

How to contribute

Three paths, all on GitHub:

Email info@sunn3d.com for kit early-access, lab partnerships, journalist inquiries, or speaker invitations.

8. What we know that's missing or open

Honest open issues are the most credible content on this page. Concrete printers are mechanical systems with hundreds of edges; pretending otherwise is a tell that the documentation has not survived a real build. Below is the current open-issues list, drawn from internal mechanical audits and the most recent CADCLAW field-test report.

Mechanical open items

CAD model gaps

CADCLAW false-positives (already triaged)

The latest field test surfaced a small set of false-positives on the M3-CRETE BOM that are scheduled for the next CADCLAW milestone:

These are CADCLAW issues, not M3-CRETE issues. The fact that they exist in the current release is documented in the field-test report; the fact that they are not yet fixed is also documented.

Material and process variability

We document these openly because builders should know what they are signing up for. Closed-source competitors hide identical issues behind support contracts.

9. Get started

Three reader profiles, three paths.

Path A: I just want to read the BOM

Open the interactive BOM viewer. Click through the parts. Toggle suppliers. Select a model variant (M3-1, M3-2, or M3-4). Export a CSV when you want to take it to a spreadsheet. No GitHub login required, no Supabase account, no email gate. The viewer is a static site.

If you want the underlying data, bom/data.json is the source of truth and is human-editable. The schema is documented in config.js.

Path B: I want to actually build one

  1. Read this page in full. Yes, all of it.
  2. Read the project README on GitHub and the AGENTS.md file in the repository root, which captures every design exclusion the project has accreted.
  3. Decide which model variant fits your floor space. Default is M3-2 unless your application demands the larger M3-4 or you want a quick prototype on M3-1.
  4. Export the BOM as CSV from the viewer. Reconcile against parts you already own.
  5. Place the V-slot order with MakerStore USA or Bulkman3D first. Lead time is the bottleneck.
  6. Place the Amazon order for fasteners and electronics in parallel.
  7. Clone the GitHub repository and run the CADCLAW harness against the assembly to confirm everything is current.
  8. Print the 3D-printed brackets while the V-slot is in transit.
  9. Build the frame. Tram the Z-axis. Wire the BTT Kraken. Flash Klipper. Calibrate StallGuard4.
  10. Pair with a pump system. M3-CRETE itself is motion-only; the NemoCrete pump is one option, but you can run any peristaltic or screw pump capable of feeding a 1" Male NPT line at the pressure your mix requires.
  11. Pair with a mix design. CEMFORGE generates printability-targeted formulations, but you can also start with a published recipe and tune.
  12. Print. Capture data. Publish to Open3DCP.

If you get stuck, open a GitHub Discussion. Build experience reports are some of the most valuable contributions the project receives.

Path C: I want to contribute

Easiest first issues:

Email info@sunn3d.com for partnership conversations or speaker invitations. Sunnyday Technologies is based in Appleton, Wisconsin, and we travel for conference talks where it makes sense.

10. Citations and further reading

Sunnyday Technologies stack

Selected academic literature

Open-hardware tooling


Cite this work

cff-version: 1.2.0
message: "If you use M3-CRETE designs in research or a build, please cite it as below."
title: "M3-CRETE: Open-Source Concrete 3D Printer"
abstract: >-
  M3-CRETE is an open-source, buildable, field-serviceable concrete 3D
  printer designed for teams that need to replicate, maintain, and scale
  independently of proprietary industrial systems. Includes CAD,
  bill-of-materials, firmware configuration, and validation tooling.
type: software
authors:
  - family-names: Sonnentag
    given-names: Nicholas
    email: info@sunn3d.com
    affiliation: Sunnyday Technologies
license: CERN-OHL-W-2.0
license-url: "https://cern.ch/cern-ohl"
repository-code: "https://github.com/sunnyday-technologies/M3-CRETE"
url: "https://m3-crete.com"
identifiers:
  - type: doi
    value: 10.5281/zenodo.19647436
    description: Zenodo concept DOI (all versions)
keywords:
  - 3D-printing
  - concrete
  - construction
  - CNC
  - open-hardware
  - DIY
  - 3DCP
  - additive-manufacturing

Zenodo concept DOI: 10.5281/zenodo.19647436, citable identifier for M3-CRETE across all versions. Each tagged GitHub release gets its own version DOI, archived automatically by Zenodo.