Platform

Perception at the line. Reasoning above it. Guardrails around both.

The Doughex platform is a plant-edge inference runtime, a plant orchestrator with a policy engine, the Bakesim twin, and a cloud or on-prem training loop. Agents perceive from cameras, checkweighers, moisture sensors and PLCs, predict rise, weight, colour, moisture and defects, and act through guarded connectors.

Plant edge + cloud or on-premNine agents, one orchestratorAudit log from day one

run_scn_01 · agent graph · scenario 10 nodes · 1 approval gate
01 · orchestrator order.receive ✓ SUCCEEDED 02 · orchestrator twin.simulate ✓ SUCCEEDED 03 · dose_mix mix.dose ✓ SUCCEEDED 04 · ferment_proof proof.hold ✓ SUCCEEDED 05 · makeup_deposit deposit.trim ✓ SUCCEEDED 06 · orchestrator approve.human ◆ APPROVAL 07 · bake_cool bake.zone ✓ SUCCEEDED 08 · defect_inspect inspect.line ✓ SUCCEEDED 09 · robot_handling handle.pack ✓ SUCCEEDED 10 · quality_conf release.genealogy ✓ SUCCEEDED

Illustrative scenario: Plant run · one bread line, flour-lot change at the silo · shared oven. Not a measured run.

Architecture

The loop, end to end

Perceive the ingredients, the dough and the product; plan mix, proof, deposit, bake and inspect; run with adaptive recipe and oven control; sense and predict colour, bake, weight and foreign bodies; optimise yield, waste, giveaway, energy and takt; flag off-spec and safety risk; log; retrain.

01 · Sense

Plant-edge ingestion

PLC and SCADA, MES, QA systems, checkweighers, inline moisture and colour sensors, cameras, thermal and X-ray streams, robots and energy meters are normalised into one plant state at the edge.

02 · Infer

Edge models

Fine-tuned colour, bake, shape, hole and foreign-body vision, inline moisture and weight, dough-development, proof and oven-bake models, plus time-series prognostics for mixers, proofers and ovens, served with TensorRT and Triton.

03 · Reason

Plant orchestrator

Retrieves recipes, proof and bake specs and food-safety procedures with citations, asks the agents for recommendations, runs constraint checks, rehearses high-impact moves on Bakesim and applies the autonomy policy.

04 · Act and learn

Guarded write-back

Approved actions go back through OT connectors inside tag, rate and magnitude limits. Every action and every engineer correction becomes a labelled event for the training loop.

Run timeline

A run is the unit of work

Every Doughex run is an ordered, inspectable sequence. This is run_scn_01, an illustrative scenario: Plant run · one bread line, flour-lot change at the silo · shared oven. Scenario complete · every stage inside spec · one human approval at the oven.

run_scn_01 scenario · not measured SUCCEEDED
  1. 01 order.receive SUCCEEDED 0.8 s

    Plant Orchestrator · Pulled the product spec, the recipe, the HACCP plan with its bake kill-step and metal-detection control points, the allergen status of the line and the new flour lot's certificate from MES and the lab system; locked the target envelope for the run.

  2. 02 twin.simulate SUCCEEDED 38 s

    Plant Orchestrator · Simulated 24 candidate profiles across mix, proof, deposit and oven on the Bakesim as-baked twin for the new flour lot; ranked them on colour and moisture margin, weight margin, energy per unit and takt, and discarded every candidate that thinned the bake kill-step margin.

  3. 03 mix.dose SUCCEEDED 12 m 40 s

    Dose-and-Mix · Adjusted hydration and mix energy for the new lot's absorption so dough temperature and development landed on target; dough state was handed to the proofer with its predicted rise curve.

  4. 04 proof.hold SUCCEEDED 58 m

    Ferment-and-Proof · Predicted the rise curve from inline height, temperature, humidity and CO2, then trimmed proofer humidity and dwell so rise and volume landed on target instead of running fast on the fresher lot.

  5. 05 deposit.trim SUCCEEDED continuous

    Makeup-and-Deposit · Fused checkweigher readings with dough state and divider feedback and trimmed the divider in real time so portion weight sat at the minimum safe margin above the declared weight, with the underweight guardrail armed.

  6. 06 approve.human APPROVAL 1 m 36 s

    Plant Orchestrator · The twin's lowest-energy candidate wanted a zone-three temperature outside the site's bounded envelope. Held for the shift process engineer, who approved the step with a tighter colour alarm.

  7. 07 bake.zone SUCCEEDED continuous

    Bake-and-Cool · Ran the oven against the twin's colour and moisture prediction; stepped zone temperatures and band speed toward the minimum-energy profile while predicted crust colour and crumb moisture stayed inside spec and the core-temperature kill step was verified on every reading.

  8. 08 inspect.line SUCCEEDED continuous

    Defect-and-Inspect · 12 camera streams at oven exit, cooler exit and packing at the plant edge: colour, shape, holes, cracks, foreign-body and seal checks on every unit; two pale-top rejects were attributed to a draught at zone one and the oven agent was notified.

  9. 09 handle.pack SUCCEEDED continuous

    Robot-and-Handling · Robotic depanning, tray transfers and packaging handling paced to the line, with rejected units diverted off the belt and the safe zone around each cell monitored.

  10. 10 release.genealogy SUCCEEDED 1 m 05 s

    Quality-and-Conformance · Lot released: flour lot, recipe, mix and proof setpoints, portion weights, oven profile, kill-step readings, inspection rejects and every human decision written to the genealogy and checked against spec and the HACCP plan.

Tool calls

The agent shows its work

Every tool invocation, argument and result is written to an immutable, human-readable log, and every reasoning step is expandable. Nothing about a run is hidden from the plant. The log below is the scenario run, not a measured one.

tool-call stream · run_scn_01
  1. 04:40:02mes.read_order({ line: "BR-2", product: "SANDWICH-800", flour_lot: "F-3312" })
  2. 04:40:02ok spec locked · HACCP plan v6 · CCPs: bake kill step, metal detection
  3. 04:40:03lab.read_results({ lot: "F-3312", test: "flour_certificate" })
  4. 04:40:03ok protein and absorption read · lot accepted at the silo
  5. 04:40:04twin.simulate({ candidates: 24, horizon: "shift" })
  6. 04:40:42ok best profile #7 · kill-step margin held · lowest energy per unit
  7. 04:40:43policy.evaluate({ profile: 7, level: "bounded" })
  8. 04:40:43ok 8 writes permitted · 1 write requires human approval
  9. 04:40:44plc.write_setpoint({ tag: "MIX1.ENERGY", basis: "lot absorption + dough temp" })
  10. 04:53:24ok dough temperature on target · development inside window
  11. 04:53:25plc.write_setpoint({ tag: "PRF1.DWELL", basis: "rise curve + humidity" })
  12. 05:51:30ok rise and volume on target · proof not running fast
  13. 05:51:31plc.write_setpoint({ tag: "DIV1.TRIM", mode: "min_safe_margin" })
  14. 05:51:31ok portion weight at minimum safe margin · underweight guardrail armed
  15. 05:51:33approval.request({ action: "oven.zone3", reason: "outside bounded envelope" })
  16. 05:53:09ok approved by the shift process engineer · tighter colour alarm set
  17. 05:53:10plc.write_setpoint({ tag: "OVN1.ZONE3_T", mode: "min_energy" })
  18. 05:53:10ok predicted colour and moisture inside spec · kill step verified
  19. 05:53:11vision.stream({ cameras: 12, models: ["colour_shape", "foreign_body", "seal"] })
  20. 06:21:48reject: pale top · unit 2231 · attributed to draught at zone one
  21. 06:21:49defect.attribute({ event: "pale_top", cause: "oven.zone1_draught" })
  22. 06:21:49ok oven agent notified · second reject at 06:23:12 · zone one corrected
  23. 06:21:50robot.execute({ cell: "DEPAN-1", mode: "guarded", pace: "line" })
  24. 06:21:50ok depanning and tray transfer paced · rejects diverted · safe zone clear
  25. 08:14:20mes.release_lot({ lot: "BR2-3312", genealogy: "full" })
  26. 08:15:25ok lot released · scenario complete

Reasoning trace

Goal, plan, thought, action, observation, exactly as the orchestrator would record it.

GoalStart flour lot F-3312 on bread line BR-2, hold development, r…

Start flour lot F-3312 on bread line BR-2, hold development, rise, weight, colour and moisture on target through the change, and release the lot with full genealogy.

PlanSimulate the whole profile on the twin first. Lead with the mi…

Simulate the whole profile on the twin first. Lead with the mixer so the proofer gets dough with a known rise curve and the divider gets dough with a known density. Verify the bake kill step continuously. Let the oven chase minimum energy only inside the bounded envelope; hold anything beyond it for a person.

ThoughtThe standing recipe overshoots portion weight and runs the ove…

The standing recipe overshoots portion weight and runs the oven hot to protect against lot variability. With continuous dough-state, weight and colour estimates the margins can sit at their minimum safe values. The saving is giveaway and energy, not safety margin: the kill step is never a candidate for optimisation.

Actiontwin.simulate(candidates=24) → profile #7: minimum safe weight…

twin.simulate(candidates=24) → profile #7: minimum safe weight margin, kill-step margin unchanged, lowest predicted energy per unit.

ObservationProfile #7's zone-three temperature sits outside the site's bo…

Profile #7's zone-three temperature sits outside the site's bounded envelope. The policy engine routes that single write to the shift process engineer and permits the other eight.

ActionExecute profile #7 at the bounded level: mixer, proofer and di…

Execute profile #7 at the bounded level: mixer, proofer and divider writes proceed; the zone-three write waits.

ObservationApproval granted at 05:53:09 with a tighter colour alarm. Two …

Approval granted at 05:53:09 with a tighter colour alarm. Two pale-top rejects at oven exit were attributed to a draught at zone one and corrected by the oven agent.

OutcomeScenario complete. The lot released with flour lot, setpoints,…

Scenario complete. The lot released with flour lot, setpoints, kill-step readings, inspection events and the human decision in the genealogy. No measured plant result is claimed; this is the run the platform is designed to execute.

Plant edge

The edge node is the product

Dough is alive and the lines never stop, so Doughex's inference runs beside the equipment and keeps working if the cloud does not.

  • Local inference. Reject decisions in under 100 ms and supervisory control intervals of 1 to 5 seconds, as design targets, on Jetson Orin or Thor and plant-edge GPU servers.
  • Deterministic stream fusion. DeepStream and Holoscan fuse 8 to 24 camera streams per line with checkweigher, moisture, thermal and metal or X-ray signals.
  • Model routing. Triton and NIM serve bake, defect, weight, shelf-life and reasoning models, routed by product, line and station.
  • Fails to existing control. If the node, the network or a model stops, the line keeps running on its PLC and SCADA control and interlocks.
  • Tenant-scoped memory. Per-bakery yield-and-quality history and per-engineer corrections stay with the plant.

What runs where

Workloads by location
WorkloadWhere
Vision, sensing and control inferencePlant edge
Orchestrator, policy engine, audit logPlant edge
Training and fine-tuningCloud, private cloud or on-prem GPUs (planned)
Bakesim oven CFD and process twinGPU cloud or on-prem (planned)
Synthetic rare-defect generationGPU cloud (planned)
Fleet analytics, model governanceCloud or private cloud
Digital twin

As-baked, not as-designed

Bakesim couples GPU-accelerated oven CFD, proof dynamics and dough rheology with the live plant state, so a profile is rehearsed before dough and energy are spent.

Before the run

Profile and envelope search

Candidate profiles are ranked on colour and moisture margin, weight margin, energy per unit and takt. Anything that thins the kill-step margin is discarded before it is ever proposed.

During the run

Setpoints for the agents

Validated setpoints are handed to Proofa, Gramex and Ovenix. Distilled surrogates run at the edge for on-line envelope checks.

After the run

Reconciliation

Twin-versus-actual drift is measured on every lot and feeds the next calibration. Validated synthetic rare defects harden every Vizra model.

Bakesim in detail

Accelerated computing

Physical AI, at the plant edge

Dough is alive and the lines never stop, so perception has to be local and fast. Doughex runs GPU inference at the plant edge and keeps training, simulation and optimisation in the cloud, in a private cloud or on-prem. Items marked planned are on the roadmap, not running.

Jetson Orin / Thor · DeepStream · Holoscan · TensorRT

Edge perception

8 to 24 cameras per line plus inline moisture, weight, thermal and metal or X-ray streams. Design target: sub-100 ms reject decisions, 10 to 60 FPS per station, offline-tolerant operation at the plant edge.

Triton · NIM

Model serving

Bake-prediction, defect, weight, shelf-life and bakery-reasoning models behind one orchestrator, with version routing by product, line and station. Plants run many lines, SKUs and models at once.

DGX / HGX · NeMo · RAPIDS

Training (planned)

Vision, time-series, multimodal and bakery-process models fine-tuned from batch telemetry, images, engineer corrections and lab outcomes. Initial design target: 50 to 200 GPU-hours per product family per release.

Omniverse · Modulus · OVX

Digital twin (planned)

GPU-accelerated oven CFD, proof heat and humidity dynamics, dough rheology and deformation, and robot cells, run as-baked before the run to find quality-safe, low-energy profiles.

Cosmos · Omniverse Replicator

Synthetic data (planned)

Rare foreign-body, under- and over-bake, blistering, cracked-top, hole, deformation and seal or fill scenarios, generated with domain randomisation and validated against real plant events before use.

cuOpt

Optimisation

Oven and changeover scheduling, energy allocation across zones and lines, proof dwell allocation and line balancing, recomputed on the GPU when the line is disrupted.

Isaac · Jetson

Robotic handling

Pan loading and unloading, tray transfers, reject diversion and packaging handling, with perception and motion policies built in Isaac Sim before they touch the line.

Autonomy

Five levels, set per loop

A bakery does not go from manual to bounded control in one step. Doughex makes the level explicit per loop, auditable and reversible at any time, and some decisions never leave the person.

Autonomy levels and the human role at each
LevelWhat the agent doesWhat the person doesWhen
ObservePredicts rise, weight, colour, moisture and defects; writes nothingRuns the bakery as today; compares predictions to QA checksFirst phase with every design partner
RecommendProposes mix, proof, deposit and oven moves with the evidence behind eachA process engineer or baker approves or corrects each oneAfter accuracy is proven against the baseline
Approve to applyPrepares the write; applies it only on a named person's approvalApproves per move; reviews the shift recordOnce recommendations are trusted
BoundedWrites low-risk oven, depositing and inspection setpoints inside explicit limitsApproves anything above the limits; reviews exceptionsAfter the food-safety and ROI gates agreed up front
ExceptionsEscalates anything outside its envelope, CCP-adjacent moves and release decisionsAlways decides these; the agent never doesPermanent
Multi-agent handoff

Agents negotiate, they do not collide

Two agents will want the same actuator. The orchestrator arbitrates on the run goal, with food safety above everything, and the handoff is logged like any other step.

Contested move: oven band speed

  1. 01yield_takt.request(band +4%) SUCCEEDED0.2 s

    Yield-and-Takt wants a faster band through the oven so the line clears the proofer backlog and the packing hall is not left waiting.

  2. 02bake_cool.request(band hold) SUCCEEDED0.2 s

    Bake-and-Cool requires the band speed that keeps core temperature above the kill-step threshold for the full dwell. That is the HACCP critical control point.

  3. 03orchestrator.arbitrate SUCCEEDED0.4 s

    Food safety outranks takt under every run goal. The critical control point wins the actuator; the request for more speed is logged with its score and the reason it lost.

  4. 04yield_takt.handoff(resequenced) SUCCEEDED90 s

    Yield-and-Takt recovers the schedule by trimming proofer dwell on the next batch within its window and resequencing the changeover. Takt is met without touching the kill step.

Arbitration rules

  • Run goal first. Every request is scored against the declared goal, not against the requesting agent's local objective.
  • Food safety outranks everything. A critical control point is never an optimisation variable. A kill-step or foreign-body escape is a recall; a takt miss is a schedule.
  • Time-boxed ownership. An agent holds a contested actuator for a bounded window, then must re-justify.
  • Everything is logged. The losing request, the score and the reason all appear in the run record.
  • Deadlocks escalate to a person rather than resolving by timeout.

See the agent roster

Agent roster

Nine agents and an orchestrator

Each agent owns a stage of the bakery line, a bounded tool set and a measured outcome. They negotiate for shared actuators through the orchestrator, never directly. Five ship as products; the rest arrive with the Plant tier.

agent.dose_mix

Dose-and-Mix

Ingredient dosing, mixing, dough development

Controls hydration, mix energy, dough temperature and development time against the flour lot in the silo and the ambient conditions on the floor, so the dough that leaves the mixer is consistent instead of over- or under-mixed.

plc.read_mixerlot.read_flourplc.write_setpoint(mixer.energy)

Design scope: consistent dough development, flour-lot drift compensated

Ships in: Plant tier

agent.ferment_proof

Ferment-and-Proof

Fermentation, proofing time, temperature, humidity, rise

Fuses inline dough temperature, humidity, height and CO2 signals with recipe and flour-lot context, predicts the rise curve for the batch in front of it, and holds proofer temperature, humidity and dwell so rise, volume and structure land on target rather than on a fixed clock.

sense.read_riseproofer.read_climateplc.write_setpoint(proofer.dwell)

Design scope: target rise every batch, no baker at the panel

Ships in: Proofa

agent.makeup_deposit

Makeup-and-Deposit

Makeup, forming, sheeting, depositing, weight

Fuses checkweigher readings with dough state and depositor feedback, predicts the portion weight for the dough flowing now, and trims depositor and divider setpoints in real time to hold target weight at the minimum safe margin without going underweight.

checkweigher.readdepositor.read_feedbackplc.write_setpoint(depositor.trim)

Design scope: giveaway toward zero, underweight guardrail held

Ships in: Gramex

agent.bake_cool

Bake-and-Cool

Oven zones, profile, colour, bake, moisture, cooling

Senses surface colour, product profile and inline moisture, predicts the as-baked outcome for the product entering the oven, and tunes zone temperatures, airflow, humidity and band speed to land colour, bake and moisture at the minimum energy per unit. Coordinates cooling to protect texture and shelf life.

vision.read_colournir.read_moistureplc.write_setpoint(oven.zone)

Design scope: colour and moisture to spec at minimum energy

Ships in: Ovenix

agent.defect_inspect

Defect-and-Inspect

Colour, bake, shape, holes, foreign bodies, seal and fill faults

Runs multi-camera vision and inline sensing at the plant edge to detect colour and bake faults, misshapes, holes, cracks, blistering, foreign bodies and seal or fill failures at line rate, rejects the unit and attributes each defect back to the upstream agent that caused it.

vision.stream(cams)reject.actuatedefect.attribute

Design target: sub-100 ms reject decisions at 10 to 60 FPS per station

Ships in: Vizra

agent.quality_shelflife

Quality-and-Shelflife

Weight, moisture, texture and shelf-life optimisation

Predicts shelf life and finished-product quality from moisture, bake state, cooling curve and weight, and proposes the recipe and profile moves that protect both before the product is packed.

shelf.predictspec.checkrecipe.propose

Design scope: quality and shelf life predicted before packing

Ships in: Plant tier

agent.yield_takt

Yield-and-Takt

Yield, waste, giveaway, energy and line balancing

Prices every candidate move in grams of giveaway, kilograms of waste and kilowatt-hours of oven energy, sequences products and changeovers, and balances the moving line so takt is met without starving the oven or flooding the cooler.

cuopt.sequenceenergy.budgettakt.balance

Design scope: yield up, waste, giveaway and energy down

Ships in: Plant tier

agent.robot_handling

Robot-and-Handling

Pan, tray, product and packaging handling

Drives robotic pan loading and unloading, tray transfers, rejected-product diversion and packaging handling, with perception and motion policies built in simulation before they touch a pan on the line.

isaac.perceiverobot.plan_motionrobot.execute(guarded)

Design scope: handling paced to the line, safe zones monitored

Ships in: Plant tier

agent.quality_conf

Quality-and-Conformance

Right-first-time, non-conformance, lot genealogy, food-safety traceability

Builds the lot genealogy record from flour lot, recipe, mix, proof, deposit, oven and inspection events and every human decision, gates release against product spec and the plant's food-safety procedures, and blocks any action the HACCP plan does not allow.

mes.release_lotgenealogy.writeaudit.write

Design scope: complete, immutable release records

Ships in: Plant tier

agent.orchestrator · coordinates all nine

Plant Orchestrator

Planning, arbitration, human approval, twin rehearsal, bakery knowledge

Plans the run, rehearses high-impact moves on the Bakesim twin, arbitrates between agents that want the same actuator, enforces the autonomy level per loop and routes anything above the site threshold to a named person. Grounds its reasoning in the plant's recipes, proof and bake specs and food-safety procedures through cited retrieval.

plan.composepolicy.evaluateapproval.requesttwin.simulate

Design rule: every write policy-checked, every output cited

Ships in: Bakesim

Design targets

What the platform is engineered against

The numbers Doughex is engineered against, from the GPU utilisation plan.

<100 ms reject decisions for inspection at the plant edge
10–60 FPS vision inference per station, depending on the station
8–24 synchronised cameras per high-speed line
1–5 s supervisory control interval for proof, bake and deposit loops
50–200 GPU-hours of fine-tuning per product family per release
100k–1M synthetic rare-event images per defect family, validated before use

Design targets from the GPU utilisation plan. Nothing on this page is a measured plant result; measurements start when the first design-partner line runs in observe mode.

Developers

Every action is a record

There is no SDK to download yet. What design partners get is the integration surface: connectors, an autonomy policy declared per loop, and an audit record for every reading, recommendation, write and approval. This is the shape of one record, illustrative.

What the surface gives you

  • Connectors to PLC and SCADA, checkweighers, moisture and colour sensing, MES, cameras and meters, with declared allow-lists and limits
  • An autonomy policy per loop: level, tags, rate and magnitude limits, named approvers
  • Citations on every recommendation to the recipe, spec or procedure it relied on
  • Model versions named in every record, with rollback by version
  • Export of the audit log and lot genealogy to your quality system

What the docs cover Developer overview

audit record · illustrative
// one write, as the audit log would hold it
{
  "run": "run_scn_01",
  "step": "deposit.trim",
  "agent": "agent.makeup_deposit",
  "level": "bounded",
  "action": { "tool": "plc.write_setpoint", "tag": "DIV1.TRIM" },
  "limits": { "max_step": "declared per tag", "per": "declared per tag" },
  "evidence": ["checkweigher.read", "depositor.read_feedback"],
  "citation": "spec:SANDWICH-800 declared weight v3 §2",
  "policy": "permitted",
  "models": { "weight": "versioned", "policy": "versioned" },
  "human": null,
  "outcome": "inside spec · minimum safe margin"
}
From the plant floor

Who this is built for

The three people in an industrial bakery whose week changes when the line runs itself, and what each of them needs from Doughex.

Economic buyer

Plant or Operations Director

Owns production rate, quality, waste, giveaway and yield, energy and food safety. Wants a bakery that holds spec at higher rate with fewer interventions, and a number that justifies the spend.

Champion

Bakery or Process Engineer

Owns recipes, dough development, proof and oven profiles, process windows and yield. Approves and corrects the agents in recommend mode; those corrections train the models.

Approver

Quality and Food-Safety Manager

Owns HACCP, FSMA, BRCGS, ISO 22000 and allergen conformance, foreign-body and defect conformance, and lot genealogy. Needs every action grounded, cited and written to an immutable record.

IT/OT and sustainability leads approve the deployment. There are no customer quotes on this site yet; design partners will speak for themselves when they choose to.

Integrations

It speaks plant, not cloud

Doughex reads and writes through the systems already on the floor. No parallel historian, no new HMI, no rip-and-replace. Connectors are built against each design partner's stack first; long-tail integrations are out of scope for the first release.

Plant automation

PLC and SCADA of mixers, proofers, dividers and depositors, ovens, coolers and slicers

Setpoint reads, guarded writes, interlocks untouched

Inline sensing

Checkweighers, inline moisture and NIR, thermal cameras, dough height, temperature and humidity

Continuous product and process state

Safety detection

Metal detectors and X-ray systems

Read and verified; reject interlocks stay the plant's

Bakery MES

Orders, recipes, product specs, lot genealogy, allergen status

Targets in, release records out

Vision

Multi-camera stations at oven exit, cooler exit, slicer and packaging

Frames, defect events, reject commands

Energy

Plant and oven-level gas and electricity meters

Hard constraints for the oven profile and schedule

Robotics

Isaac-driven depanning, tray transfer and packaging cells

Perception and motion for pans, trays and packs

Identity (planned)

SSO and role-based access; SOC 2 on the roadmap

Named approvers, scoped roles

See all integrations

Guardrails

An agent that can move a setpoint needs a leash

Doughex writes to production equipment in a food plant. Every capability is scoped, every write is policy-checked, every output is cited, and every action is written to an append-only audit log the plant owns.

  • Bounded action space. Each agent can only write to an explicit tag allow-list, inside per-tag rate and magnitude limits, at the autonomy level the plant has set.
  • Critical control points are read, never written. The bake kill step, metal detection and X-ray rejects, allergen changeover and release decisions stay with the HACCP plan and the people who own it.
  • Policy engine before every write. Autonomy level, interlock state, product, allergen status, shift and operator presence are evaluated before a setpoint moves.
  • Grounded and cited. Every recommendation carries a citation to the recipe, spec or procedure it relied on. Retrieval is tenant-isolated and permission-aware.
  • Immutable audit log. Append-only, exportable and retained on the plant's own storage, aligned to HACCP, FSMA, BRCGS and ISO 22000 record-keeping.
  • Hard fallback. If the edge node, the network or a model stops, the line keeps running on its existing PLC and SCADA control and interlocks.
  • Tenant and IP isolation. Recipes, customer specs and tolerance models never cross a customer boundary. On-prem deployment available.

Assurance posture

Assurance and certification status
ItemScopeStatus
SOC 2 Type ICloud control plane QUEUED Roadmap, first 6 months
SOC 2 Type IICloud control plane QUEUED Roadmap, 6 to 12 months
HACCP · FSMA · BRCGS · ISO 22000 · allergenGrounding and record-keeping RUNNING Design basis for retrieval and the audit log
Per-tenant isolationData, memory, models RUNNING Design rule
On-prem deploymentRecipe-sensitive bakeries RUNNING Design option

Doughex supports your food-safety records. It is not a certification and it does not replace your HACCP plan.

Read the security overview

Enterprise

Standardise autonomy across the group

One policy model, one audit trail and one set of yield, waste, giveaway and energy benchmarks across every bakery in the group, with each site's recipes and tolerance models kept private to that site.

Talk to us Enterprise details

  • Multi-site plant-edge fleet with shared model governance
  • Custom recipe, product and tolerance models per site
  • SSO and role-based access, named approvers (roadmap, 6 to 12 months)
  • Model versioning, validation reports and rollback
  • On-prem or private-cloud deployment
  • SLAs and outcome-based components on the highest-value workflows
FAQ

Straight answers

The questions plant directors, process engineers and quality managers ask in the first meeting.

Only at the autonomy level your plant has set, and only to an explicit allow-list of low-risk loops inside explicit limits. Every design partner starts in observe mode, where Doughex predicts and writes nothing. Recommend mode follows, where a process engineer approves each move. Bounded autonomy on oven, depositing and inspection loops comes after the food-safety and ROI gates agreed up front.

Get started

See the platform on your line

One line, one baseline, observe mode first. We will show you the run record before anything is written.