BooleX.ai DOCS Book a demo
Docs / Manual

Demo plants

The twelve synthetic demo plants, how to start one, switch between them and stage a stop.

BooleX ships with twelve demo plants, one per sector, each with its PLC code, functional specification, manuals and procedures, work orders, spare parts and recorded stops. All plant data is synthetic. They run on the bench stack, never on a customer site.

Start a demo plant

shell
make up                         # the dairy plant (bench CIP skid, separator, evaporator) on http://127.0.0.1:8080
make up PLANT=food-bev          # another plant, by its pack ID
make up PROFILES=bench,ollama && make model   # with a local language model

Sign in as demo; the password is in deploy/secrets/demo_password, made on the first make up. To switch plants from the Web UI, sign in as an administrator (below). Without a language model the Web UI opens sources and evidence cards but refuses questions with "No language model is configured": it never invents an answer.

Switch plants without a restart

On the bench the Assistant runs with the demo pack switcher. The top bar shows Demo pack: <sector> to everyone. An administrator (docker compose -f deploy/compose.yaml run --rm assistant python -m edge.users add presenter administrator) opens Switch demo pack, picks a pack and presses Load pack: the pack's plant (code, documents, work orders, parts and starter prompts with its headline question) and its headline stop, replayed so it happened two minutes ago, load in the running stack. The top bar shows the loading status, and the error if a pack fails to load. Open sessions are closed so no answer cites the previous plant, the store is not changed, and every switch is in the audit log.

The switcher exists only in the development profile, never on a customer site. Each pack's 10-minute script follows a common storyline (plant/demos/storyline.md).

Stage a stop

shell
make replay F=F16               # the recorded stop, placed two minutes ago
make replay F=FB01 PLANT=food-bev
make fault F=F02                # the live simulator runs the fault (dairy plant only)
make live                       # back to fault-free cycles

Then ask the scenario's question, for example "Why did the CIP hold on the caustic wash?".

The plants

Pack IDPlantCode
(default) cipDairy: CIP skid CIP-100 with separator S-201 and evaporator EV-301Bachmann PLCopen, plus Siemens, Rockwell, Omron, Mitsubishi, SLC 500, PLC-5, Schneider, B&R, PACSystems, CODESYS V3.5 and STEP 7 Classic exports of the same logic
food-bevBottling line BL-400Rockwell L5X
medtechAssembly cell 3: ultrasonic weld, leak test, visionSiemens TIA
process-chemBatch reactor R-501Siemens TIA
packagingPackaging line 2 (PackML) and extruder EX-100Rockwell L5X and CODESYS V3.5
automotiveWeld and assembly line A1Siemens TIA and Rockwell L5X
machine-buildersOEM hydraulic press HP-800 at a customer siteBeckhoff (PLCopen)
waterSewage pumping station PS-14 with its outstationSiemens TIA
energyWind turbine WTG-07 pitch systemBachmann PLCopen
data-centresData centre DC1 power and coolingRockwell L5X
marineVessel power managementSiemens TIA
pharmaSIP skid SIP-2 on a media preparation vessel, non-GMP (no GMP, Annex 11, Annex 22 or Part 11 claim)Siemens TIA

The same answer from another vendor's code

shell
make vendor VENDOR=siemens      # or rockwell, omron, mitsubishi, slc500, plc5, schneider, br, pacsystems, codesys, step7
make vendor VENDOR=bachmann     # back
make vendor VENDOR=codesys PLANT=packaging      # packaging line 2 from its CODESYS export
make vendor VENDOR=rockwell PLANT=automotive    # line A1 from its Rockwell export

The answer is the same and cites that vendor's code, as project <project>-<vendor> (cip-siemens, l2-codesys).