Connectors
OPC UA, MQTT, REST, PLC tags and file drops for presses, enamel lines, foamers, stations, testers and MES.
Duromex is not a SaaS dashboard with an API bolted on. The primary artefact is an edge runtime that runs beside your PLCs, speaks OPC UA and MQTT, and is operated like infrastructure — versioned, canaried and rolled back.
The CLI provisions the edge runtime, registers connectors, sets the autonomy level and captures a baseline before anything is written.
# Deploy the edge runtime to a plant
$ duromex edge init --site plant-ankara-2 --gpu jetson-orin
$ duromex connector add press --protocol opcua --endpoint opc.tcp://press-04:4840
$ duromex connector add tester --protocol mqtt --topic plant/tester-11/#
$ duromex connector add mes --protocol rest --url https://mes.internal/api
$ duromex autonomy set --line refrigeration-cabinet-01 --level shadow
autonomy: shadow writes: disabled audit: enabled
$ duromex baseline measure --metric first_pass_yield --window 14d
baseline captured. 14d first-pass yield: 91.4%
$ duromex twin validate --change recipe/foam-v13
predicted FPY 93.8% (+2.4) · takt held · gate: PASSThe Python SDK models the factory the way the plant does: sites, lines, stages and serialised units — not generic events.
# Register a line and stream a unit through the loop
from duromex import Factory
factory = Factory(site="plant-ankara-2", edge="local")
line = factory.line(
id="refrigeration-cabinet-01",
stages=["form", "weld", "enamel", "foam",
"assemble", "test", "pack"],
autonomy="shadow", # shadow | advisory | control
)
unit = line.unit(serial="RF-2026-0004417")
unit.attach("vision", stream="opcua://press-04/cam")
unit.attach("pressure_decay", stream="mqtt://tester-11/decay")
verdict = unit.evaluate()
print(verdict.first_pass, verdict.risk, verdict.citations)
# True 0.03 ["recipe:foam-v12", "spec:IEC-60335-2-24"]Four surfaces, chosen so an OT engineer and a platform engineer can both work without fighting each other.
OPC UA, MQTT, REST, PLC tags and file drops for presses, enamel lines, foamers, stations, testers and MES.
Register lines and units, attach streams, request evaluations and read verdicts with their evidence chain.
Exception escalation, autonomy changes, drift alerts and audit events pushed to your ticketing and notification surfaces.
Provision, configure, canary, roll back and inspect the runtime on site, including when the WAN link is down.
When an agent is below its confidence threshold, the unit is held and the exception is escalated with its probable cause and evidence already attached.
agent.exception — held for human reviewagent.action — a write was performedautonomy.changed — authority granted or revokedmodel.drift — drift detected against golden datatwin.gate — a change passed or failed validation// Exception escalation webhook payload
{
"event": "agent.exception",
"agent": "leak-and-test",
"line": "refrigeration-cabinet-01",
"serial": "RF-2026-0004417",
"confidence": 0.61,
"probable_cause": {
"stage": "foam",
"signal": "density_gradient_low_rear",
"evidence": ["frame:8821", "shot:4471"]
},
"action": "held_for_human",
"audit_id": "aud_01JQ8Z...c4"
}Go and Python FastAPI services behind a NestJS control plane, with a factory edge runtime in Rust and C++. PostgreSQL with pgvector, TimescaleDB for process and test telemetry, and Redis.
Infrastructure is AWS plus factory edge — K3s on site with IGX class hardware — delivered through GitHub Actions, Terraform, ArgoCD and signed edge OTA updates.
Same path every time, whether the change came from us or from your engineer's correction.
Golden datasets and judge models run against the change. A regression on any gated metric blocks the release.
The change is simulated against line and product behaviour, producing predicted quality, yield and takt.
Signed OTA update to a canary line with automatic rollback on regression.
Fleet-wide rollout per site, with per-site autonomy authority respected throughout.
Drift monitoring against golden data, with alerts routed to your on-call surface.
Because that is what it is once it can write to a press.
Inference, control and the audit log are local. WAN loss degrades learning, not production.
Write authority is scoped per line and per workflow, granted explicitly and revocable instantly.
Models, recipes, connectors and runtime versions are tracked together, so a rollback is one coherent action.
Per-tenant data, model and vector-store scoping enforced by the platform rather than by convention.
The assurance log is queryable and exportable, so quality can build their own evidence workflows.
The twin is available to developers, not just to the change process — test against a simulated line before you touch a real one.
Every design decision — offline-first, idempotent, fail-safe, signed, reversible — exists because the consequence of a bad deploy here is not a 500 error. It is a damaged cabinet, or worse.
What the runtime is designed against.
station decision where takt demands it
sensor streams per line Aspirational
uptime target
cloud dependencies on the control path
Connectors, agent APIs, the edge runtime, autonomy levels and the deployment workflow.
SecurityIsolation, audit logging, IP protection, safety design and the compliance posture.
AccessThe SDK and edge runtime are available to design partners and pilots during pre-launch.
Not yet. During pre-launch, SDK and runtime access is granted to design partners and pilot customers, because a sandbox without a real line teaches the wrong things.
The edge runtime is Rust and C++; connector configuration is declarative. You do not write connector code for the supported families.
In enterprise agreements, yes — custom product, line and quality models are part of the offering, served through the same Triton/NIM layer with the same evaluation gating.
Additively. Audit records are append-only and schema changes are backward compatible, because retroactive reinterpretation of an assurance log would defeat its purpose.
Request SDK and edge runtime access as part of a design-partner engagement.
Duromex is pre-launch. Figures shown are design-partner targets and modelled economics, not audited results. Ask us for the methodology.