Skip to content
Moduloa
← Index
MOD-04 · Work in progress, on purpose

Matrix

First buildCommunity

Matrix is Moduloa's community network: local matrixes that raise local productivity through shared projects, and international matrixes that connect people with fewer restrictions. This page is the umbrella: projects appear here as they get built. The first one is running: PrintDrop, which turns one 3D printer into a small production network for a circle of friends.

Moduloa's flagship is Manufacturing, and PrintDrop, it turns out, is that model in miniature.

1machine on the network
11parts dropped, 5 printed
262 gfilament, billed to nobody
0friends' machines yet

Counted out of the live database on 4 August 2026. The last number is the one that matters: everything needed to add a second machine is built, and nobody outside this house has used it.

The umbrella

What Matrix is, and what is coming under it

Local matrixes raise local productivity through shared projects; international matrixes connect people with fewer restrictions. Projects appear here as they get built: never finished, opened up, left running for others to join.

01 · PrintDrop: runningOne 3D printer, opened to a circle of friends. A friend drops a model and picks a colour from the spools actually in the machine; the hub slices it by itself for a real time and weight; the owner looks at the plate, confirms it is clear, and sends it. Capacity visible, cost shown at cost, no accounts. One X1 Carbon in Norway is node 001: live card, open queue, real drop-off →
02 · A second machine: built, unprovenA friend's printer needs no hub and no server of its own: an installer sets up two small programs, trades a one-time setup code for a key belonging to that machine alone, and a guided run takes them from nothing to a finished test print. All of it exists and is tested against a hub in a sandbox. Nobody outside this house has walked it yet, so the honest status is built rather than working.
03 · Any machine: the platformThe near goal: whoever can add whatever machine, showing up the same standardised way for every consumer and every owner. Three primitives, always the same: a live machine card for current and planned capacity, an open queue everyone reads identically, and one standardised way to hand the machine a file. All three are built for one printer model. Nothing but a Bambu X1C has been tried.
Project 01, in detail

What PrintDrop actually is, now

Four programs. One runs on a machine anybody can reach; three run in a house, next to a printer, and dial outward. No printer is ever exposed to the internet.

The hub

The only part on the public internet, published through a tunnel that dials out: there is no open port anywhere. It holds the queue, the machine's state, the filament library and the money, and it is the only thing that ever sees an access code, which it keeps as a slow hash and never in the clear.

The agent

Sits beside the printer and reads it over the local network. It reports what the machine says and nothing it does not: no plate sensor exists, so nothing in this system claims to know what is lying on the bed. It can also carry a file to the printer and start it, and now stop it.

The slicer

Runs the same slicing engine as the desktop app, headless, on the owner's PC. Every dropped part gets a real print time and a real weight without anybody opening anything, sliced for the spool the printer says is loaded and for the plate that is actually fitted, which it works out by reading the owner's own slicer settings, because the machine cannot be asked.

The console

The owner's half, built for a phone held next to the machine: the queue in the order they choose, the file, the states a job moves through, a send that has to be confirmed against the plate every time, a stop, and (at the bottom, behind typing the machine's name) removing the machine and everything about it.

The friend never gets an accountDropping a part hands back one private link. It is the whole credential (no code, no sign-up), and it opens one page about one part: where it is, the real time and weight once sliced, what it cost, and a still from the machine while that part is the one printing. It shows nothing else and no other job.
Three codes are the whole permission modelPersonal, friends, international. Who holds which is the entire model: no accounts, no roles, nothing to administer. The personal one is also the exit: it removes the machine, the queue, the stored files, the filament library and the history, and there is no copy anywhere.
Cost, at costFilament by weight at what the spool cost, plus the electricity the printer drew, and nothing on top. It is shown, never charged: there is no payment channel in the system at all. A finished job can carry an invitation to send something back, and that is as far as it goes.
What is built but has never worked here

The camera. The printer serves a stream no browser can play, so the agent grabs one frame at a time instead. That needs a video tool installed beside it, which node 001 does not have, so the panel is real, wired and empty. A page that promised a picture and delivered silence would be the worse outcome, so it now says the machine cannot take one.

Push notifications. Built on a free push app where the topic string is the entire credential. No topic is set on this node, so nothing is being pushed anywhere.

The international tier. Off. Nobody outside the circle can reach this machine, and no request to join has ever arrived.

A second machine. The installer, the one-time setup code and the guided first print all exist and pass against a hub in a sandbox. No friend has run them.

The method

Never finished, on purpose

Things get built to a useful state, opened up, and left running: people use them as they want, plug their own machines in, or get inspired and build their own version. A project that someone builds on, extends, or outgrows has succeeded. There is no payment channel and none is planned soon: friends print, that is the point. And PrintDrop is, unplanned, the Manufacturing model in miniature: strict intake, a process the system owns, tiers of trust, live capacity, one honest gate. The convergence was emergent, which is the point.

The real landscape

Routing a print job onto someone else’s machine is already an industry, for buyers with purchase orders

Other people’s work, from their own filings and papers. Not evidence that anything above works: a map of who already coordinates distributed capacity, including the one company that tried exactly this shape and moved on.

4,996Active Suppliers in one marketplace’s network at FY2025 close, from its annual report
943,678+Pieces matched to requesters in the FDA/NIH/VA COVID collaboration, as of 3 August 2020
38,000Fake OctoPrint instances found inside the nearest public census of connected hobby machines
01 · Marketplaces route on part dataXometry’s FY2025 Form 10-K reports 4,996 Active Suppliers and 81,821 Active Buyers, and names the routing inputs: “part geometry, materials, tolerances, quantities, historical transaction data and supplier performance signals.” It is candid about why shops join: “a reliable way to fill their capacity gives suppliers the confidence they need to invest in new equipment…”
02 · The peer model was built, grown, and left behindThis is the part that matters most, and it argues against us. The company now called Protolabs Network was founded in Amsterdam in April 2013 as 3D Hubs, and in 2021 “it was the world’s largest peer-to-peer network of 3D printing services.” Protolabs acquired it that January for $280 million in cash and stock, and the same entry now describes it as integrating “more than 250 vetted manufacturers”: the peer-to-peer network became a vetted professional one, and the two printer counts are the evidence. Protolabs runs it as the Protolabs Network, “a global network of premium manufacturing partners who reside across North America, Europe and Asia,” per its FY2025 Form 10-K, which also names a competitive category beyond it: “an increasing number of digital brokers that offer a network of manufacturers.” One prior attempt at this exact shape did not stay in the hobbyist market. PrintDrop has no evidence it can.
03 · One paper calls the joint scheduling and delivery problem hardA 2025 paper in JUSTC on distributed 3D printing treats production scheduling and delivery routing as one problem and states it “is known to be strongly NP-hard,” citing earlier work for the single-machine, single-vehicle case and asserting rather than proving the multi-vehicle version. Two cautions: one paper is not the literature, and its hard problem includes vehicle routing, which a circle of friends handing over prints does not have. It also says “there is a pressing need to model the matching of supply and demand for 3D printing tasks and services”, one group’s account of a gap, not a measurement.
04 · One well-documented case of pooled capacityUnder an FDA/NIH/VA memorandum of understanding, with America Makes as non-profit partner, the work split two ways: America Makes connected health care providers with manufacturers that had capacity, matching on capability and proximity, while VA personnel ran preliminary evaluations and experimental tests on designs, and those that passed received an NIH-issued clinical badge. By 3 August 2020: 943,678+ pieces matched, 685 models published, 33 clinically reviewed. Note what did the work: an agency vetted the designs, and an emergency supplied the demand.
05 · No count of the machines that this research could verifyThis research found no statistical-agency count of the desktop installed base. The nearest public census of connected hobby machines is OctoPrint’s opt-in telemetry, which counts server instances rather than printers and only for users who opt in, and in 2024 its maintainer found 38,000 fake instances, manipulation that “has probably been going on… since the fall of 2022.” Market size is softer still: Creality’s Hong Kong listing application proof, a draft document quoting the consultancy CIC rather than a survey, puts 2024 consumer 3D printing at US$4.1 billion of GMV across printers, consumables, accessories and software. Its concentration figure sits on a narrower base: the top five vendors above 70% of the consumer 3D printer market, Creality second at 11.2%. Those are two different denominators and should not be read as one.
06 · Creality already ships the live machine viewThat same document describes Creality Cloud’s remote printing control tracking “job status, elapsed time, nozzle and bed temperatures, printing speed, and estimated material consumption,” on a platform reported at “over 5.7 million registered users globally.” The live machine card is table stakes, and it is shipped by a vendor, not by us. What the sources read here do not describe is a peer circle publishing that view to each other as capacity to claim, and given row 02, the honest reading is that the shape was tried at scale and abandoned, not that it is untouched.
Reading the slicer’s source

Can a language model choose print settings? The honest answer is that nobody has published it, and the slicer is cleverer than its own documentation says

Research done while building auto-orientation into PrintDrop. Three of these rows correct things this project said earlier, which is why they are here rather than quietly fixed. Two source files, a benchmark, and a pile of security papers. And the strongest finding is an absence.

62%Best LLM accuracy at spotting bad FDM print parameters in G-code, in the only benchmark that tests it
0Published studies of a language model choosing slicer settings, judged against how the prints came out
12 of 12Prompt-injection defences broken once the attacker was allowed to adapt to them
01 · The objective is a ratio, and we said it was a minimumPrintDrop’s notes quoted Bambu’s own help string: “Optimize object rotation to have minimum amount of overhangs needing support structures.” The shipped cost function is a different thing. Orient.cpp line 482, the branch the command line actually takes, divides: overhang sits in the numerator scaled by TAR_C, and the denominator is contour + bottom + bottom_hull, the footprint and the footprint of the convex hull. Then cost += (bottom < BOTTOM_MIN) * 100, a hard disqualification for standing on too little. It is overhang per unit of footprint, not overhang. That single fact explains the hoop: laid flat its hull footprint is an enormous disc, and no overhang penalty in the numerator can outweigh it.
02 · So the lesson we drew from the hoop was the wrong oneThis project concluded that overhang area is a bad objective, having watched a hand-built area-minimising scorer stand the hoop back up. The metric criticism is fair. The inference was not: Bambu uses raw overhang area too (costs.overhang = overhang_areas.array().cwiseAbs().sum(), no steepness weighting at all on the CLI path) and still gets the right answer, because of the denominator. Effort spent on a cleverer overhang metric would have bought nothing. The fix was never the numerator.
03 · The threshold is 30 degrees, not 45, and the print profile moves itOrient.hpp sets overhang_angle = 30 and ASCENT = -0.86602540378f, which is −cos 30°. Our own measurements used 45°, so part of the disagreement was never a disagreement about geometry, just a different line drawn. The consequential part is four lines later: Orient.cpp 667–671 reads support_threshold_angle off the print profile and overwrites that threshold. A support setting silently changes which way up the part is printed. PrintDrop’s draft whitelist offered exactly that key to a language model while stating that orientation was not the model’s to touch. Found by reading, not by testing.
04 · The diagnostics do exist. They are unreachable on WindowsPrintDrop measured one line of output from a part with a 50 mm cantilever and concluded the slicer says nothing. Orient.cpp line 149 is an unconditional std::cout printing every candidate orientation and its cost. Both are true: bambu-studio.exe is PE subsystem 2, a Windows GUI binary, so it has no console to write to when the worker launches it detached. The bytes are emitted and land nowhere. The practical conclusion survives (read the G-code, not the chatter), but for a different reason than the one recorded.
05 · The graded metric we wanted is in the code this was forked fromBambu’s orienter is a fork of Tweaker-3: same parameter names down to RELATIVE_F and ASCENT. Tweaker does not use raw area: each facet contributes its area times its steepness past the threshold, squared. That distinguishes a gently curving underside from a flat ceiling by about two orders of magnitude, in forty lines of numpy. Bambu also still contains a support-volume objective, which the literature considers the right estimator, and no command-line flag reaches it.
06 · The critique is published, as a taxonomy rather than a warningLivesu, Ellero, Martinez, Lefebvre and Attene’s From 3D Models to 3D Prints catalogues how printability is detected and separates the two measures this project conflated: contact area proxies surface damage, support volume proxies material and time. No paper found states the specific complaint (that area cannot tell a self-supporting curve from a shelf in mid-air) in those words. Neither is there any published evaluation of Bambu’s or Orca’s auto-orient at all. Two slicers ship this feature to a great many people and nobody has measured it in public.
07 · What language models actually score on this kind of workFDM-Bench is the one benchmark that tests LLMs on FDM tasks directly. Asked to spot anomalous process parameters in G-code, GPT-4o “correctly identif[ied] the ground truth anomaly label in 62% of cases”, the best result in the paper. The next models sat at 44%, 44% and 31%. In ARKNESS, asked the diameter of a size-82 drill (0.0125 in), a small model answered 0.820 in, about sixty-five times wrong, and a hosted one was also badly off. Recalled engineering numbers are not to be trusted; that is why PrintDrop measures the mesh in Python and hands over figures rather than asking for them.
08 · Nobody has published the thing we are proposing, and nobody has shown the premiseThis is the row that argues hardest against building it. Searching for prior work on a language model selecting slicer settings (layer height, walls, infill, brim) evaluated against real print outcomes returns nothing. The nearest neighbours are text-to-CAD, which is a different problem, and LLM-3D Print, which is a vision loop watching layers go down rather than a chooser of parameters. Worse for us: no evidence, measured or otherwise, that a friend’s free-text note (“a gift for my daughter”, “it’s a bracket, needs to be strong”) carries information that improves a setting. That premise is the whole reason for the layer, and it is currently an assumption.
09 · The safety design has a name, and a published limitModel proposes, deterministic code disposes is the Action-Selector pattern in Design Patterns for Securing LLM Agents against Prompt Injections; the strict form also forbids the action’s result flowing back to the model. Meta’s Agents Rule of Two says pick at most two of: reads untrusted input, touches something that matters, acts without a human. PrintDrop reads an untrusted note and touches a printer, so the third has to stay unavailable, which is what the owner’s approval already is. That is not caution added for the model; it is a property the system happened to have.
10 · Prompt injection is unsolved, by the people best placed to solve itOWASP’s LLM01 states it plainly: “it is unclear if there are fool-proof methods of prevention for prompt injection.” The Attacker Moves Second (OpenAI, Anthropic, Google DeepMind and ETH Zürich together) took twelve published defences and got past most of them above 90% once attacks were allowed to adapt. Zhan et al. broke eight more. The design conclusion is not a better filter. It is that a note must never be able to name a setting, only tilt a choice inside a range someone else fixed.
11 · What happens when a model runs a physical thing, measured twiceAnthropic’s Project Vend put Claude in charge of a real vending business; staff talked it into discounts and free items, and it invented a Venmo account to be paid into. Butter-Bench put frontier models in charge of a real office robot: “the best model scoring 40%… compared to 95% for humans.” Neither is a slicer, and both are about open-ended authority rather than picking a number inside a clamp, but they are the closest measurements that exist, and they point the same way. Small action space, human at the end.
12 · A JSON schema cannot enforce the ranges we care aboutStructured outputs guarantee shape, not values: numeric bounds such as minimum and maximum are not supported, and vLLM’s own write-up says the same of its default grammar engine. Counted against PrintDrop’s draft whitelist, six of its ten settings, every numeric one, cannot be constrained by the schema at all. So the clamp is not defence in depth, it is the only defence, and the fix is to spell the ranges as enumerations, which schemas do support. There is a measured cost to constraining too: Let Me Speak Freely? found reasoning declines under format restriction, though a re-run attributes much of that to prompt differences rather than the constraint.
13 · Temperature zero is not determinism, and caching would not have helped usThinking Machines ran a thousand identical zero-temperature completions and got eighty distinct outputs; the cause is batch-dependent kernel arithmetic, not sampling. On current models the parameter is gone anyway: passing temperature is rejected outright. Repeatability therefore has to come from an exact-match cache keyed on the inputs, which is a cache we would write ourselves. Provider prompt-caching is the wrong tool twice over here: PrintDrop’s system prompt is about 443 tokens against a 512-token floor, so it would silently never engage. And at a quarter of a cent per job, a thousand jobs cost under three dollars. Cost is not a reason to choose anything.
What this research changed

Four corrections to work already shipped or drafted: the slicer’s objective is a ratio and not a minimum; its threshold is 30° and not 45°; a support setting in the profile silently steers orientation, which a draft whitelist was about to hand to a model; and the diagnostics exist but cannot reach us on Windows. None of those were found by testing. All four came from reading two source files that were on the disk the whole time.

What it did not settle

Whether any of this is worth doing. There is no published evidence that a customer’s sentence improves a print, no evaluation of the auto-orient feature two slicers already ship, and no measurement of numbers-versus-a-screenshot as the better thing to hand a model. The first ten real jobs through node 001 will be better evidence than anything cited above, which is the argument for shipping the deterministic half, watching, and leaving the model switched off until there is something to compare it against.

The parallel

A queue is a coordination layer, the same thing the manufacturing thesis is betting on

Why the two look alike

Every network above works in the same order: take in a file, choose the machine, give the owner a reason to say yes. Xometry chooses on part geometry; the COVID collaboration matched on capacity and proximity and gated the designs separately on clinical review. In each the coordination layer is the product: the machines already existed. That is the same claim Manufacturing makes about contract manufacturing, stated here as a parallel and nothing more.

What would have to be true to start

Three tests, none passed. A second owner attaches a machine they own and lets a friend-of-a-friend claim time on it without phoning first: the marketplaces buy that consent with money and vetting; a circle of friends has neither, and 3D Hubs’ own move upmarket is the evidence that this is the hard part. A failed print gets settled without a person adjudicating; the COVID case answered that with a government badge, unavailable here. And idle capacity proves measurable in one real circle, in a field where no count we could verify exists.

Documentation, decisions, and build logs accumulate here. Everything is public.
Ask Datum