Loom & knit controllers
Picanol, Toyota, Tsudakoma, Karl Mayer and Mayer & Cie controllers over OPC UA and vendor PLC tags.
Developers
Define agents, declare policy, subscribe to runs and mirror everything into your MES. Nothing about the platform is only available in the UI.
Define it in code
Autonomy level, approval conditions, setpoint envelopes and revert conditions are declared alongside the agent, reviewable in a pull request, not buried in a settings page.
# Define a bounded dye-control workflow
from yarneon import Mill, Agent, Policy, tools
mill = Mill("mill-02")
dye = Agent(
name="dye-and-color",
tools=[
tools.spectro.read_bath,
tools.colour.predict_recipe,
tools.plc.dose(machine="jet-07", mode="bounded"),
],
policy=Policy(
autonomy="assist", # observe | assist | auto
approve_if="recipe_deviation > 0.05",
setpoint_limits={"temp_c": (30, 98), "ph": (4.0, 11.5)},
revert_on="operator_manual",
),
)
run = mill.run(dye, goal="lot DL-4471 to 19-4028 TCX, dE <= 0.8")
for step in run.stream():
print(step.name, step.status, step.duration_ms)
// Subscribe to run events and mirror them into your MES
const stream = await yarneon.runs.subscribe({
mill: "mill-02",
events: ["step.completed", "approval.requested", "defect.detected"]
});
for await (const event of stream) {
if (event.type === "approval.requested") {
await mes.raiseApproval({
lot: event.run.lot,
reason: event.policy.reason, // "recipe_deviation 7.2%"
revertTo: event.policy.lastKnownGood
});
}
}
Command line
The same run, from a terminal. Output is real text, streamed as the mill works, and identical to what the console and the audit log record.
$ yarneon run --mill mill-02 --lot DL-4471 --goal "19-4028 TCX, dE<=0.8"
resolved 14 rolls · 3,180 kg · 40s combed cotton poplin
twin.simulate ✓ 46.0s best candidate dE 0.52
dye.predict_recipe ✓ 2.4s Navy RGB 2.14% · Blue BRF 0.61%
human.approve ! 4m12s approved by colourist
dye.control_bath ✓ 118m00s exhaustion 96.4%
inspect.scan_rolls ✕ 38m00s WEFT_STREAK roll 09 · 412–445 m
plan.rework_route ✓ 1.6s 33 m to seconds · ship date held
quality.release ✓ 3.0s 13 Grade A · 1 Grade B
run RUN-4471 complete · mean dE 0.58 · seconds 0.22% · 1 human decision
Also available as
API surface
| Resource | Purpose |
|---|---|
POST /v1/runs | Start a run against a lot, line or work order. |
GET /v1/runs/:id/events | Server-sent stream of steps, tool calls and status changes. |
POST /v1/approvals/:id | Approve or reject a gated action, with attribution. |
GET /v1/rolls/:id | Roll genealogy, defect map and conformance state. |
POST /v1/twin/simulate | Counterfactual simulation against the as-produced twin. |
GET /v1/policies | Current autonomy ceilings and setpoint envelopes. |
POST /v1/webhooks | Subscribe to approvals, defects, holds and releases. |
Tool-call stream
Machines, spectrophotometers, the optimiser and the humans are all tools. Calls go out, results come back, and the whole exchange is real, copyable text, the same record your auditor sees.
Guardrail in action
At 04:03:04 the proposed recipe deviated 7.2% from the standing card, above the 5% autonomy ceiling for dye dosing at this mill. The agent stopped and asked. Fifteen minutes later a colourist approved it, and that approval is attributed, timestamped and reversible.
Failure handled honestly
A 33 m weft streak is a real defect, and the run shows it as failed rather than smoothing it over. The mechanical root cause, a stenter pin-chain slip, was correlated automatically and raised as a work order.
Agent graph
This is the shape of a dye lot on Yarneon, shown as an illustrative scenario rather than a customer run. Ingest and simulation fan out, converge on a colourist approval gate, then dosing, verification, finishing, inspection and release. The accent traces the active path; every node opens in the inspector.
Scroll the graph sideways · or open the text equivalent below
| Step | Stage | Depends on | Status | Duration |
|---|---|---|---|---|
| ingest | conformance | none | SUCCEEDED | 0.8s |
| twin | simulate | ingest | SUCCEEDED | 46s |
| recipe | dye + colour | ingest | SUCCEEDED | 2.4s |
| approve | human gate | twin, recipe | APPROVAL | 4m 12s |
| dose | bath control | approve | SUCCEEDED | 118m |
| shade | verify ΔE | dose | SUCCEEDED | 9.1s |
| finish | stenter | dose | SUCCEEDED | 64m |
| inspect | vision | shade, finish | FAILED | 38m |
| rework | replan | inspect | SUCCEEDED | 1.6s |
| grade | release | rework | SUCCEEDED | 3.0s |
Run timeline
The same scenario run as an ordered timeline: step, status, duration and the tool result behind it. Inspection failed on one roll, the run recovered, replanned the cut and still held the ship date.
Goal: Dye lot DL-4471 · 3,180 kg · 40s combed cotton poplin · shade Indigo 19-4028 TCX · ΔE ≤ 0.8 · due Thu 06:00
Pulls greige genealogy for 14 rolls: yarn lots, loom, greige GSM 138, absorbency and residual size from the prep line.
agent Quality-and-Conformance
result ← 14 rolls · 3,180 kg · mean GSM 138.2 (σ 1.1) · prep OK
Omniverse fabric-line twin simulates the exhaust curve, machine loading and takt for three candidate recipes before a drop of dye is used.
agent Yield-and-Takt
result ← 3 candidates scored · best predicted ΔE 0.52 · 118 min cycle
Spectral recipe model proposes a 3-dye combination against the buyer standard, corrected for this substrate’s absorbency and the current water hardness.
agent Dye-and-Color
result ← 2.14% Navy RGB · 0.61% Blue BRF · 0.08% Black B · salt 62 g/L
Recipe deviates >5% from the standing card, so autonomy is capped: the colourist approves, rejects or edits before any dosing. Guardrail policy MILL-02/DYE-APPROVAL.
agent Dye-and-Color
result → awaiting colourist · approved on shift 04:18
Closed-loop dosing and ramp control against live bath spectrophotometry; two mid-cycle corrections applied when exhaustion ran 4% ahead of model.
agent Dye-and-Color
result ← exhaust 96.4% · 2 corrections · bath ΔE 0.41 at drain
Per-roll spectral read against Indigo 19-4028 TCX under D65/TL84/A; metamerism scored and rolls sorted into shade bands.
agent Shade-and-Quality
result ← mean ΔE 0.58 · 13 rolls band A · 1 roll band B
Stenter chemistry, overfeed and curing profile set to hold hand, 148 cm width and residual shrinkage under 3%.
agent Finish-and-Hand
result ← width 148.3 cm · shrink 2.1% warp / 1.4% weft
In-line vision flags a recurring 6 cm weft streak on roll 09 between 412 m and 445 m, traced to a stenter pin-chain slip, not a dye fault.
agent Defect-and-Inspect
result ← 1 defect cluster · roll 09 · 33 m affected · class WEFT_STREAK
cuOpt re-plans the cut and rework route: 33 m diverted to seconds, remaining 14,890 m re-sequenced so the buyer’s Thursday ship date still holds.
agent Yield-and-Takt
result ← 33 m to seconds (0.22%) · ship date held
Four-point grading, roll genealogy and the conformance packet (AATCC 61, ISO 105-C06, ZDHC MRSL declaration) are assembled and released to the buyer portal.
agent Quality-and-Conformance
result ← 13 rolls Grade A · 1 roll Grade B · packet signed
| Measure | Value | Context |
|---|---|---|
| Final mean ΔE | 0.58 | against a 0.80 tolerance |
| Re-dyes avoided | 1 | the standing card would have missed shade |
| Seconds | 0.22% | versus the scenario mill baseline of 1.9% |
| Water used | 46 L/kg | versus 59 L/kg on the scenario recipe card |
| Human decisions | 1 | the recipe approval gate |
Why this matters
A mill does not fail on the good lots. It fails on the lot where the substrate drifted, the recipe card was wrong, and nobody found out until the buyer opened the carton. Yarneon makes that lot legible while it is still in the machine.
Reasoning trace
Goal, observation, plan, action, decision, handoff, outcome. A colourist can read this and disagree with it, which is the point. Autonomy a mill cannot argue with is autonomy a mill will not adopt.
Land DL-4471 on Indigo 19-4028 TCX within ΔE 0.80, first time, before the Thursday 06:00 ship cut-off.
Greige absorbency for this lot reads 8% above the card baseline, and incoming water hardness is 142 ppm, both push the exhaust curve faster than the standing recipe assumes.
Simulate three recipes in the fabric twin before committing dye. Prefer the candidate with the lowest predicted ΔE that also fits the 118-minute machine slot.
twin.simulate(recipe_candidates=3, machine="jet-07")
Candidate B predicts ΔE 0.52 and finishes 6 minutes inside the slot. Candidates A and C either overshoot shade or miss takt.
Candidate B deviates 7.2% from the standing card, above the 5% autonomy ceiling for dye dosing. Escalate to the colourist rather than act.
Dye-and-Color → the colourist on shift, with the simulated curve, the deviation reason and a one-click revert attached.
plc.dose(machine="jet-07", schedule="ramp-B") after approval, with two mid-cycle corrections when exhaustion led the model by 4%.
Vision flags a 33 m weft streak on roll 09 after finishing. Correlating stenter telemetry shows a pin-chain slip at 04:51, a mechanical cause, not a dye fault.
Lot released at mean ΔE 0.58 with 0.22% seconds. A maintenance work order is raised against the stenter pin chain, and the streak signature is added to the mill’s defect memory.
Human in the loop
Textile mills run on scarce craft: the colourist who knows this jet runs hot, the weaving master who hears a beam going wrong. That knowledge is retiring faster than it is being replaced.
Yarneon writes it down. Every approval, override and correction becomes per-mill memory scoped to your tenant, so the mill keeps improving after the person who taught it has gone home.
Conventions
Idempotency
Every mutating call takes an idempotency key. A retried dose instruction never doses twice.
Typed tools
Tools declare typed inputs and outputs; the agent cannot call a machine with an out-of-range argument.
Backpressure
Event streams resume from a cursor, so an MES that fell over does not lose a shift of history.
Versioning
API versions are date-pinned per key. Breaking changes never arrive on their own.
Errors
Errors name the policy, the envelope or the machine that refused, not a generic 400.
Local dev
A mill simulator ships with the SDK so you can develop against a virtual line.
Guardrails
Nothing here is a global "AI on" switch. Autonomy is granted per setpoint, bounded by policy, reversible by any operator and logged permanently.
Integrations
Yarneon is not a rip-and-replace. It connects to the looms, frames, jets, stenters, cameras, spectrophotometers and MES already on your floor.
Picanol, Toyota, Tsudakoma, Karl Mayer and Mayer & Cie controllers over OPC UA and vendor PLC tags.
Rieter, Trützschler, Saurer and Murata frames, draft, twist, speed and end-break telemetry.
Thies, Fongs, Brazzoli jets and Monforts/Brückner stenters via PLC, recipe systems and dosing units.
Datacolor and X-Rite spectrophotometers, colour libraries, Pantone TCX standards and lab-dip workflows.
Line-scan RGB and NIR cameras, Uster and Elbit inspection frames, existing light boxes.
SAP, Datatex, TIM, Coats Digital and homegrown mill MES over REST, files and database CDC.
Water, steam and electricity meters; ZDHC Gateway, Higg FEM and OEKO-TEX reporting.
Vision-guided manipulators and AMRs on NVIDIA Isaac and Jetson for doffing, beams and roll transport.
Vendor names are listed for compatibility reference only and do not imply endorsement or partnership.
Operating figures
Latency targets, connector coverage, autonomy modes and the record: the practical questions after the headline.
Design target for a per-frame inspection decision on Jetson-class edge hardware. ASPIRATIONAL
Connector families: looms, frames, dyeing, colour, inspection, MES, utilities, robotics.
Autonomy modes: observe, assist, bounded control. Granted per setpoint.
Record per mill: append-only, exportable, shared with buyers on request.
Items marked ASPIRATIONAL are design targets ahead of production validation.
Questions
The simulator gives you a full line, a defect stream and an approval gate without touching production.