First vertical
FFF printers
Preflight, upload gates, build-volume checks, slicer profile import, macro proofing and live Moonraker/OctoPrint drift checks.
Appearance
SaaS architecture
A hosted review, registry and proof service for printers, CNC routers, mills, lasers, plasma tables and other machines whose production artifact is G-code.
Dry should turn the printer capability library into a broader machine control plane:
The "honeypot" is a product-led data flywheel: a free analyzer attracts real files, profiles, controller fingerprints and error cases. Paid users get private storage, policy gates, proof retention and machine-drift checks.
First vertical
Preflight, upload gates, build-volume checks, slicer profile import, macro proofing and live Moonraker/OctoPrint drift checks.
Second vertical
CAM post review, work-envelope checks, modal-state hazards, tool table assumptions, spindle/feed sanity and safe-Z policy.
Adjacent
Power/speed sanity, pierce/cut sequencing, unsupported dialect detection, dwell risks and bounds checks.
The common abstraction is:
machine envelope + controller dialect + modal state + tools + process limits + artifact policyThe top-of-funnel product accepts .gcode, .nc, .tap and related files, then returns:
Raw files should be stored only with explicit consent. For paid tenants, raw artifact retention belongs to the tenant policy.
Printer packs become one subtype of a generic machine pack:
dry-machine-pack/
manifest.json
machine.json
controller/
grbl-settings.txt
linuxcnc.ini
klipper.cfg
moonraker.objects.json
tools/
endmills.json
nozzles.json
laser-heads.json
processes/
pla-0.4.json
aluminum-router-6mm.json
checks/
bounds.json
modal-state.json
tool-change.json
spindle-feed.json
safe-z.json
samples/
first-layer.gcode
pocketing.nc
proofs/
manifest.proof.json
sample.review.jsonMachines are usually behind LANs, firewalls or USB serial. The SaaS should use an outbound-only local agent that:
First adapters: Moonraker, OctoPrint, LinuxCNC config/status import, Grbl read-only serial settings and CNCjs-style CNC sender integration where available.
POST /v1/artifacts/review
POST /v1/artifacts/trace
POST /v1/packs/import
GET /v1/machines
GET /v1/machines/{id}/capabilities
POST /v1/machines/{id}/proofs
GET /v1/reports/{id}curl -X POST https://api.dry.dev/v1/artifacts/review \
-H "Authorization: Bearer $DRY_TOKEN" \
-F artifact=@part.nc \
-F machine=shapeoko-xxl-grbl \
-F process=aluminum-router-6mmGeneralize dry printer into dry machine, while keeping dry printer as a friendly alias.
dry machine search shapeoko
dry machine inspect shapeoko-xxl-grbl
dry machine import grbl --port /dev/tty.usbserial -o ./packs/shapeoko/
dry machine import linuxcnc ./linuxcnc-config/ -o ./packs/router/
dry machine import moonraker http://printer.local -o ./packs/voron/
dry machine review part.nc --machine shapeoko-xxl-grbl --process aluminum-router-6mm
dry machine prove shapeoko-xxl-grbl --sample pocketing.nc
dry machine diff shop-router-old shop-router-newCross-machine checks:
Additional CNC checks include work coordinate systems, tool length offsets, spindle speed vs feed per tooth, coolant commands, canned cycles, probing support and safe-Z relative to stock/fixture data when present.
| Entity | Role |
|---|---|
Machine | physical or virtual machine target |
MachinePack | versioned capability package |
ControllerAdapter | importer/query bridge for firmware or sender |
ProcessProfile | material/tool/process-specific runtime constraints |
Artifact | uploaded or referenced G-code-like file |
ReviewReport | deterministic findings and metrics |
ProofRun | reproducible pack/sample validation |
Observation | timestamped live machine/controller state |
Policy | upload/start/release gate rules |
Agent | local outbound connector |
Dry should sell review, proof and policy first. Remote actuation is a later, local-agent-only capability.
Do not claim CNC/laser/plasma collision safety unless stock, fixture, tool, workholding and setup data are present. Do not run calibration samples without local human confirmation. Rewrites must be reviewed again before export.
Free
Small file limits, public packs and optional anonymized contribution. Built to collect corpus and reveal adapter demand.
Pro
Saved machines, private artifacts, CLI/API tokens, report history and local registry sync.
Team
Organization registry, edge agent, drift checks, CI/upload gates, approvals, webhooks and proof retention.
Enterprise / OEM
Private registry, custom adapters, signed packs, vendor-maintained libraries, support SLA and embedded SDK/API license.
| Phase | Deliverables | Exit |
|---|---|---|
| 0. Generic schema | dry-machine-pack-v1, printer compatibility mapping, Klipper + Grbl example packs | dry machine validate/inspect/review works locally |
| 1. Public analyzer | upload UI, wasm/Rust review, machine selector, report download, consent controls | users get useful reports from .gcode, .nc, .tap |
| 2. Registry/proofs | pack registry, trust levels, proof runner, sample corpus, Git-backed packs | packs can be installed, pinned and proven in CI |
| 3. Edge agent | outbound local agent, Moonraker/OctoPrint, Grbl read-only import, LinuxCNC import | team compares live state to registered pack before accepting a job |
| 4. Integrations | sender plugins, GitHub Action, CAD/CAM post-checks, MES/fleet webhooks | Dry sits before upload/start in customer workflows |