Skip to content

CLI reference

Generated

This page is generated from the code when the documentation is built (docs/hooks/reference.py). Do not edit it; change the code instead.

Every command of cheme, with its arguments and options, as cheme <command> --help prints them. The guides explain how the commands fit together.

command what it does
cheme init Create a plant repository from the template (folders, schemas, skills, CI).
cheme validate Validate every P&ID and list, and the lists against the P&IDs.
cheme fmt Write P&IDs in canonical form: readable ids on every object, DEXPI 2.0.1, stable order.
cheme render Render P&IDs to SVG or PNG: build/<sheet>(@<rev>)(_crop-X0-Y0-X1-Y1)(_inline).svg|png.
cheme diff Compare P&IDs between two git revisions; write an HTML report with changes highlighted.
cheme show Where an object is: its block, owner, drawing, references and what references it.
cheme check Run the engineering-step gates in checks/checks.yaml (--write signs off a stage).
cheme status Where the repository stands: sheets, findings by sheet, gates, sign-offs, review findings.
cheme impact Artifacts whose sources changed since they were reviewed or generated: review needed.
cheme maturity Which calculation maturity level the evidence supports, requirement by requirement.
cheme issues The plant's issues (plant.yaml issues:) as engineering items: actions, holds, technical queries and design changes,...
cheme cause-effect Write the cause-and-effect matrix of control/cause-effect.yaml (HTML and CSV).
cheme serve Serve the repository read-only as a JSON API (and the viewer, with --ui).
cheme export-static Write the viewer's API as static files: a read-only snapshot the viewer opens without a server (manifest.json + data/).
cheme git-setup Show P&IDs as review text in git diffs, and check them before each commit.
cheme schema Print the JSON Schema of a YAML file kind, or list the kinds.
cheme migrate Bring the YAML inputs to the schema versions this cheme-as-code reads: a file without schema: gets `schema:...
cheme copy Duplicate an object with its parts and drawing, renaming every id (e.g.
cheme fragment Print a ready-to-paste XML fragment (conceptual part and drawing part).
cheme run Run a Python script in cheme-as-code's interpreter, where pyDEXPI and chemeascode import.
cheme regen Rebuild generated sheets: frame -> cheme run SCRIPT FILE -> fmt.
cheme move Move an object's drawing: symbol, node positions, labels; attached lines follow.
cheme rename Rename an id and every reference to it, or a tag and the labels that show it.
cheme set Set data values of an object (typed as DEXPI defines them) and the labels showing them.
cheme sheet Start a P&ID sheet with a real title block, or change its title block.
cheme process Process design: BFD and PFD generated from process/materials.yaml and process/flowsheet.yaml.
cheme layout 3D layout: the plant model generated from layout/*.yaml, the lists and the P&IDs.
cheme assess Assessment: the material take-off of the 3D model, the estimates, the LCA and the TEA.
cheme datasheets Equipment datasheets: drafts, calculated sizes and dimensions, outline drawings.
cheme skills The bundled skills installed in .claude/skills/: status and safe updates.
cheme chemistry Chemistry: component properties from databases and correlations.
cheme control Control: the loop register, operating sequences, narrative and control philosophy.
cheme safety Safety: HAZOP studies and their risk matrix.
cheme experiments Experiments: kinetic data, rate laws fitted to them, data sampled from a mechanism, measured electrochemical series.
cheme data Optional datasets: fetch them into the user data directory.
cheme runs Run records: one folder per design session in runs/ (start, record, list).

cheme

Plant design as code: validate, format, render and diff a plant repository.

cheme [OPTIONS] COMMAND [ARGS]...
name kind type required default help
--version option flag Print the cheme-as-code and pyDEXPI versions and the interpreter, and exit.

Subcommands: init, validate, fmt, render, diff, show, check, status, impact, maturity, issues, cause-effect, serve, export-static, git-setup, schema, migrate, copy, fragment, run, regen, move, rename, set, sheet, process, layout, assess, datasheets, skills, chemistry, control, safety, experiments, data, runs

cheme init

Create a plant repository from the template (folders, schemas, skills, CI).

cheme init [OPTIONS] [directory]
name kind type required default help
directory argument path . Where to create the repository.
--name option str `` Plant name for plant.yaml.
--force / --no-force option flag Overwrite existing files.

cheme validate

Validate every P&ID and list, and the lists against the P&IDs.

A sheet declared generated in plant.yaml is rebuilt from its generator in a scratch file and compared (cheme.generated-sheet-drift); --skip-generators leaves that out.

cheme validate [OPTIONS] [paths]...
name kind type required default help
paths argument path Only these files.
--json option flag Machine-readable report.
--fail-on option error | warning | info error Lowest level that fails: error, warning or info.
--quiet / -q option flag Print only failures.
--skip-generators option flag Do not run generators to check generated sheets for drift.
--ignore option str Leave out these rules (ids or globs); also for --json and --fail-on.
--only option str Report only these rules (ids or globs).

cheme fmt

Write P&IDs in canonical form: readable ids on every object, DEXPI 2.0.1, stable order.

cheme fmt [OPTIONS] [paths]...
name kind type required default help
paths argument path P&ID files (default: all).
--check / --no-check option flag Only report files that would change.

cheme render

Render P&IDs to SVG or PNG: build/<sheet>(@<rev>)(_crop-X0-Y0-X1-Y1)(_inline).svg|png.

cheme render [OPTIONS] [paths]...
name kind type required default help
paths argument path P&ID files (default: all).
--png option flag Write PNG (needs the png extra).
--scale option float range PNG pixels per sheet millimetre (default 4; 8 with --tiles).
--crop option str Only this sheet region: X0,Y0,X1,Y1 in sheet mm, origin top left, Y down.
--rev option str Render the sheets as of this git revision.
-o option path Output file (one input).
--tiles option str Overlapping tiles covering the sheet's whole viewBox (which can include content left of or above the frame), C columns by R rows (e.g. 4x3), or auto: build/<sheet>_tile-<row letter><column>.svg|png and build/<sheet>_tiles.json.
--findings option flag Mark the drawing-geometry findings on it.
--emphasise-inline option flag Draw valves, inline fittings and actuators 1.5 times larger with bolder lines, for reading a full-sheet render (a review aid; the XML is unchanged): build/<sheet>..._inline.svg|png.

cheme diff

Compare P&IDs between two git revisions; write an HTML report with changes highlighted.

--json or --list print the result instead; the HTML report is then written only with --html. --list groups the changes by the plant item they belong to; --flat lists every object. A sheet that does not load or draw is named with the reason; the others are still compared, and the exit code is 1.

cheme diff [OPTIONS] [old_rev] [new_rev]
name kind type required default help
old_rev argument str HEAD Old revision, e.g. main.
new_rev argument str New revision (default: the working tree).
--path option path Only these sheets.
--html option path HTML report (default: build/diff.html).
--json option flag Print every sheet's changes as JSON.
--list option flag Print one line per changed plant item.
--flat option flag With --list: one line per changed object (0.2).
--verbose / -v option flag With --list: each change under its item.

cheme show

Where an object is: its block, owner, drawing, references and what references it.

cheme show [OPTIONS] {ID_OR_TAG}
name kind type required default help
ID_OR_TAG argument str yes An XML id or a tag.
--sheet option path Only this sheet (default: every sheet).
--layout option flag Measured plot-plan distances to the nearest items, buildings, roads, racks and the site boundary.

cheme check

Run the engineering-step gates in checks/checks.yaml (--write signs off a stage).

cheme check [OPTIONS]
name kind type required default help
--stage option str Gates of every stage up to this one (plant.yaml order).
--only-stage option flag With --stage: only that stage's gates.
--write / --no-write option flag Sign off the stage: record it in checks/status.json (refused unless the tree is clean and every gate passes).
--review option path With --write: the review record the sign-off rests on.
--by option str With --write: who signs off (default: git user.name).

cheme status

Where the repository stands: sheets, findings by sheet, gates, sign-offs, review findings.

cheme status [OPTIONS]
name kind type required default help
--json option flag Machine-readable summary.
--rev option str The repository as committed at this revision (a temporary worktree).
--gates / --no-gates option flag True Evaluate the gates (they may run commands).

cheme impact

Artifacts whose sources changed since they were reviewed or generated: review needed.

Review records whose scope or basis changed since, generated sheets whose process YAML changed, stale calculated values. Read-only, info only, exit 0: nothing is regenerated.

cheme impact [OPTIONS]
name kind type required default help
--json option flag Machine-readable findings.

cheme maturity

Which calculation maturity level the evidence supports, requirement by requirement.

Levels: sourced process description, balanced conceptual PFD, converged predictive simulation, preliminary/basic engineering package. The design maturity a process.yaml claims, artifact completeness and review status are reported beside them and never raise a level; no command sets the review status (docs/concepts/glossary.md).

cheme maturity [OPTIONS]
name kind type required default help
--json option flag The machine-readable report.
--write / --no-write option flag Also write the report to checks/maturity.json.
--require option str Exit 1 unless this calculation maturity level is reached: sourced, balanced, predictive, engineering.

cheme issues

The plant's issues (plant.yaml issues:) as engineering items: actions, holds, technical queries and design changes, by the gate they must close before. Exits 2 when they cannot be read (no GitHub token or network).

cheme issues [OPTIONS]
name kind type required default help
--all option flag Closed issues too.
--json option flag As JSON.

cheme cause-effect

Write the cause-and-effect matrix of control/cause-effect.yaml (HTML and CSV).

cheme cause-effect [OPTIONS]
name kind type required default help
-o option path HTML file (default: build/cause-effect.html).

cheme serve

Serve the repository read-only as a JSON API (and the viewer, with --ui).

In a folder of plants (process-library's root, or a folder of plant repositories) it serves each plant under /p/<id>/ and lists them at /api/plants (ADR 0034).

cheme serve [OPTIONS]
name kind type required default help
--repo option path Plant repository (default: the one around the cwd), or a folder of plants (a process library): then every plant is served under /p/<id>/.
--library option flag Serve every plant below the folder (at most 3 levels down), also when it lies inside a plant. Without it, a folder with no plant.yaml above it but plants below it is served as a library.
--host option str 127.0.0.1 Address to bind. A non-local address (e.g. 0.0.0.0) serves the repository to the network; requests must still name a local host or an --allow-host name.
--port option int 8765 Port to listen on.
--ui option path Built viewer to serve at / (a dist directory).
--allow-host option str Also accept requests for this host name or address in the Host header (repeatable), e.g. the machine's LAN address with --host 0.0.0.0. Only 127.0.0.1, localhost, ::1 and a non-wildcard --host are accepted otherwise (against DNS rebinding); no wildcard.
--allow-remote-checks / --no-allow-remote-checks option flag Let the viewer run the checks (POST /api/checks/run, which runs the command checks of checks/checks.yaml) although --host is not a local address.

cheme export-static

Write the viewer's API as static files: a read-only snapshot the viewer opens without a server (manifest.json + data/).

cheme export-static [OPTIONS] {out}
name kind type required default help
out argument path yes Output directory: new, empty, or a previous snapshot (replaced). Not the plant repository, a directory containing it, or one inside it other than below build/ (e.g. build/snapshot).
--repo option path Plant repository (default: the one around the cwd).
--rev option str Export this git revision (default: the working tree).
--max-file-mb option float range 2.0 Leave out files larger than this (MB).
--exclude option str Leave out paths matching this glob (repeatable; ** spans directories, e.g. reviews/** or PROGRESS.md).

cheme git-setup

Show P&IDs as review text in git diffs, and check them before each commit.

cheme git-setup [OPTIONS]
name kind type required default help
--hook / --no-hook option flag True Install the pre-commit hook.

cheme schema

Print the JSON Schema of a YAML file kind, or list the kinds.

cheme schema [OPTIONS] [kind]
name kind type required default help
kind argument str plant, equipment, lines, site_plan, ... (none: list the kinds)

cheme migrate

Bring the YAML inputs to the schema versions this cheme-as-code reads: a file without schema: gets schema: cheme/&lt;kind&gt;/v1 as its first key, its comments kept, and a v1 LCI dataset in lca/datasets/ (schema: cheme/lca/v1) gets schema: cheme/lci_dataset/v2. Exits 1 when --check finds a file to change or a file cannot be migrated.

cheme migrate [OPTIONS]
name kind type required default help
--check option flag Only list the files that would change (default).
--write option flag Rewrite the files.

cheme copy

Duplicate an object with its parts and drawing, renaming every id (e.g. a spare pump).

cheme copy [OPTIONS] {ID}
name kind type required default help
ID argument str yes The object to copy (id or tag).
--prefix option str yes Id of the copy; every id inside it is derived from it.
--tag option str Tag of the copy (TagName, ...).
--offset option str 0,0 Move the drawing by DX,DY (sheet mm, Y down).
--sheet option path The sheet (default: the one holding ID).
--into option str Put the copy into this object.
--print option flag Print the copied XML; change no file.
--rename option str An inner tag of the copy (data, labels, ids).
--renumber option str A number in the copy's inner tags, labels, ids.
--set option str On every copied object having PROP.
--sense-at option str Instrument: sensing location (and its node).
--connect option str Connect a copied pipe's open end.

cheme fragment

Print a ready-to-paste XML fragment (conceptual part and drawing part).

cheme fragment [OPTIONS] {kind} [name]
name kind type required default help
kind argument str yes node, pipe, valve, tee, segment, label, equipment, nozzle, instrument, signal, offpage, line, note or shape.
name argument str shape: the catalogue name, e.g. COLUMN_SHAPE.
--id option str Id of the new object; its parts' ids derive from it.
--dn option str Nominal diameter, e.g. 80.
--standard option str Din2448 DN standard: Din2448, Iso6708 or none.
--from option str pipe/segment: where it starts (ITEM:NODE); signal: the source instrument.
--to option str pipe/segment: where it ends (ITEM:NODE); signal: the operated valve(s) or instrument(s) it goes to, comma-separated for a trip.
--points option str pipe/signal/instrument (measuring line): the bends between the two node positions, x,y;x,y (default: routed).
--class option str valve: GlobeValve (default), BallValve, GateValve, Silencer, ...; equipment: the DEXPI class, e.g. CentrifugalCompressor.
--at option str Position X,Y (sheet mm, Y down).
--rotation option float 0.0 valve/tee: flow direction, degrees (0: left to right); equipment/offpage: symbol rotation, degrees.
--branch-dn option str tee: DN of the branch node.
--branch option str tee: side the branch leaves (absolute): up, down, left or right (default: left of the flow, up for --rotation 0).
--for option str label: the object it shows.
--attribute option str label: the attribute shown, e.g. TagName.
--tag option str valve: PipingComponentNumber; tee: its tag; equipment: K-1101; instrument: PIC-4101; nozzle: SubTagName.
--number option str segment: SegmentNumber (S2); line: LineNumber; signal: ActuatingSystemNumber.
--like option str segment: copy fluid, class and DN data from this segment (--sheet).
--sheet option path Take shape ids, node positions and values from it.
--shape option str equipment: symbol name (default: by --class).
--scale option str equipment: symbol scale S or SX,SY; valve: S.
--nozzle option str equipment: a nozzle, offset from the symbol centre; no DN: an instrument connection. The stub points away from the nearer side of the symbol, or DIR (left, right, up, down; N1:-10,40::left without DN). Repeat it.
--marker option str equipment: a marker symbol inside it (COLUMN_PACKED_BED_SHAPE, COLUMN_TRAY_SHAPE), dy from the symbol centre, ScaleY SY (ScaleX: the equipment's), m: mirrored. Repeat it.
--label-at option str equipment: tag label position X,Y.
--on option str nozzle: the equipment's id.
--sense option str instrument: what it measures (nozzle, segment, inline item), and where the measuring line starts.
--field / --central option flag instrument: field or central bubble.
--fail-action option str signal to a valve: FC, FO or FL.
--in option flag offpage: flow comes in from another sheet.
--out option flag offpage: flow goes out to another sheet.
--note option str offpage: text beside the arrow.
--note-at option str offpage: position of --note.
--text option str note: the text.
--fluid option str line: FluidCode.

cheme run

Run a Python script in cheme-as-code's interpreter, where pyDEXPI and chemeascode import.

Usage: cheme run [--fmt SHEET] SCRIPT [ARGS...]. Options go before SCRIPT: everything after it goes to the script (sys.argv[1:]); its exit code is cheme-as-code's. The working directory is the repository root, so relative paths mean the same wherever you start it. Use this instead of python3 or uv run python: neither has pyDEXPI in a plant repository.

cheme run [OPTIONS] {script}
name kind type required default help
script argument path yes The Python file to run, e.g. scripts/draft_P-02.py.
--fmt option path After a successful run, run cheme fmt on this sheet (repeatable).

cheme regen

Rebuild generated sheets: frame -> cheme run SCRIPT FILE -> fmt.

A sheet is generated when plant.yaml gives it generator: {script, frame}; it is then not edited by hand. regen refuses a sheet that differs from what its generator (as committed) makes, naming the items edited by hand, unless --force. --detach removes the generator: the XML becomes the source and the script provenance only.

cheme regen [OPTIONS] [sheets]...
name kind type required default help
sheets argument str Sheet ids or files (default: every sheet with a generator).
--force / --no-force option flag Overwrite a sheet edited by hand since its last generation.
--detach option flag Make the sheets hand-maintained: remove their generator.
--list option flag Print which sheets are generated; change nothing.

cheme move

Move an object's drawing: symbol, node positions, labels; attached lines follow.

cheme move [OPTIONS] {ID}
name kind type required default help
ID argument str yes The object to move (id or tag).
--offset option str yes DX,DY in sheet mm (Y down), e.g. -8,12.
--sheet option path The sheet (default: the one holding ID).
--print option flag Dry run: print the change as a diff; write nothing.
--no-fmt option flag Do not run cheme fmt after writing.

cheme rename

Rename an id and every reference to it, or a tag and the labels that show it.

cheme rename [OPTIONS] {old} {new}
name kind type required default help
old argument str yes The id (or a tag) to rename.
new argument str yes The new id (or tag).
--children / --no-children option flag Also rename the ids derived from it: OLD_* -> NEW_*.
--ids / --no-ids option flag Renaming a tag: also rename the ids that spell it (HV4146 -> HV4147).
--tag option flag NEW is the new tag of the object OLD names (by id): retags one of two objects sharing a tag (an instrument's sensor and actuator follow).
--sheet option path The sheet (default: the one holding ID).
--print option flag Dry run: print the change as a diff; write nothing.
--no-fmt option flag Do not run cheme fmt after writing.

cheme set

Set data values of an object (typed as DEXPI defines them) and the labels showing them.

cheme set [OPTIONS] {ID} {PROPERTY=VALUE...}
name kind type required default help
ID argument str yes The object (id or tag).
PROPERTY=VALUE... argument str yes DEXPI attribute names and values (FluidCode=Nitrogen, NominalCapacityVolume='26 MetreCubed', Stroke.Width=0.5); PROPERTY= removes it.
--sheet option path The sheet (default: the one holding ID).
--print option flag Dry run: print the change as a diff; write nothing.
--no-fmt option flag Do not run cheme fmt after writing.

cheme sheet

Start a P&ID sheet with a real title block, or change its title block.

cheme sheet [OPTIONS] COMMAND [ARGS]...

Subcommands: new, meta

cheme sheet new

Write a new sheet from the template, its title block filled from plant.yaml.

Sets the Model name and uri, the diagram Name and the MetaData (drawing and sheet number, title, project, client, site, revision, dates, status "for review"; approver, approval date and checker stay empty) with their title-block texts, and adds the sheet to plant.yaml (or marks a planned one drafted).

cheme sheet new [OPTIONS] {ID}
name kind type required default help
ID argument str yes Sheet id, e.g. P-05.
--title option str `` Sheet title (DrawingName); default: its plant.yaml title.
--file option str Path from the repository root (default pid/<ID>.xml).
--revision option str RevisionNumber (default: plant.yaml project.revision).
--force / --no-force option flag Overwrite an existing file.

cheme sheet meta

Show or set title-block values: the MetaData and the title-block texts together.

cheme sheet meta [OPTIONS] {SHEET} [KEY=VALUE...]
name kind type required default help
SHEET argument str yes Sheet id or file.
KEY=VALUE... argument str MetaData property (RevisionNumber) or short name (Revision, Status, Title, Approver, Checker, Client, Site, Project, ...), or ModelName, ModelUri, DiagramName. An empty value empties it. None: print the title block.

cheme process

Process design: BFD and PFD generated from process/materials.yaml and process/flowsheet.yaml.

cheme process [OPTIONS] COMMAND [ARGS]...

Subcommands: build, streams, reactors, crystallizers, reactor-uncertainty, reactor-hazards, reactor-choice, adsorption, cell, duty, stack, energy, pinch, furnace, props, propagate, simulate, phase, extract, methods, electrolyte, assay, layout

cheme process build

Generate the BFD and PFD sheets (DEXPI 2.0.1 ProcessModels with a drawing).

Refuses while the flowsheet has errors, and over a sheet edited by hand unless --force.

cheme process build [OPTIONS] [sheets]...
name kind type required default help
sheets argument str Sheet ids or files (default: every bfd/pfd sheet).
--force / --no-force option flag Overwrite a sheet edited by hand since it was generated.

cheme process streams

The stream table (value, unit, provenance per property) and the block balances.

cheme process streams [OPTIONS]
name kind type required default help
--case option str Case id (default: the default case).
--md option flag Markdown table.
--csv option flag CSV.
--json option flag Streams, balances and provenance as JSON.

cheme process reactors

Each reactor: model, extents, heats of reaction, ln K and ln(Q/K) at the outlet, and the duty H(out) - H(in) on the elements basis (ideal gas).

cheme process reactors [OPTIONS]
name kind type required default help
--case option str Case id (default: the default case).
--json option flag As JSON.

cheme process crystallizers

Each crystallizer and filter or centrifuge (crystallizer:, solid_separation:): its basis (solubility-equilibrium, imposed-yield or solid-split), crystals, recovery, the outlets as dry solid and liquid, the balances and the duty. Exit 1 on an error finding.

cheme process crystallizers [OPTIONS]
name kind type required default help
--case option str Case id (default: the default case).
--json option flag As JSON.

cheme process reactor-uncertainty

The spread of NODE's conversion, outlet flows and temperatures from the uncertainty of its reaction data, by Monte Carlo through its own reactor model. Only what the model reads is sampled (rate A and Ea; K with reverse: equilibrium; heat_of_reaction for a liquid adiabatic tank or batch; conversion for a conversion reactor; for a selectivity: step, the key's conversion and the selectivities from selectivity.uncertainty, evaluated as propagate does); other uncertainties are listed as not used, with the reason. Writes nothing. Exit 2 when it cannot be sampled or nothing it uses is uncertain.

cheme process reactor-uncertainty [OPTIONS] {node}
name kind type required default help
node argument str yes The reactor block or step.
--samples option int range 200 Monte Carlo draws.
--seed option int 1 Seed of the generator.
--case option str Case id (default: the default case).
--json option flag As JSON.

cheme process reactor-hazards

Thermal screening of each reactor: adiabatic temperature rise, MTSR after a cooling failure, MTT, TD24, Stoessel's criticality class and, for cooled beds, the hot spot's sensitivity to the coolant temperature (domains/safety/reaction_hazards.py). Screening values only. Exit 1 on a warning (class 3 to 5, an MTSR above MTT or TD24, a sensitive bed).

cheme process reactor-hazards [OPTIONS]
name kind type required default help
--case option str Case id (default: the default case).
--json option flag As JSON.

cheme process reactor-choice

Which ideal reactor suits NODE's reactions: the yield and selectivity of PRODUCT against the key's conversion for a plug-flow reactor, one stirred tank and --tanks tanks in series (isothermal, at the inlet's temperature and pressure), and the plug flow's instantaneous selectivity. --svg writes the plot. Exit 2 when it cannot be compared.

cheme process reactor-choice [OPTIONS] {node}
name kind type required default help
node argument str yes The reactor block or step.
--product option str yes The desired product.
--key option str The converted component (default: first fed).
--tanks option int range 3 Tanks in series to compare.
--case option str Case id (default: the default case).
--svg option path Write the plot to this file.
--region-svg option path Also compute the candidate attainable region and write its plot here.
--json option flag As JSON.
--csv option flag The points as CSV.

cheme process adsorption

Each adsorber of process/adsorption.yaml: core's equilibrium TSA cycle (breakthrough, recoveries, regeneration heat and purge, adsorbent replacement) from sourced isotherms, or an external performance model's results checked against its operating range; and whether the split process/simulation.yaml gives the simulator follows from it. An isotherm outside its stated range and a calculated PSA are refused. Writes nothing. Exit 1 on a warning or error, 2 for an unknown case.

cheme process adsorption [OPTIONS]
name kind type required default help
--case option str Case id (default: every case).
--json option flag As JSON.

cheme process cell

The Faraday balance of each electrochemical cell of process/cells.yaml: extents, products per outlet, charge and element balances, electric power, thermoneutral voltage, heat duty (Q = P - extent dH, electricity counted once) and kWh per kg of product, from the specified current, current efficiency and voltage. Refuses a cell without them. Writes nothing. Exit 1 on an error finding (a refused or inconsistent cell), 2 without process/cells.yaml.

cheme process cell [OPTIONS]
name kind type required default help
--json option flag As JSON.

cheme process duty

The dynamic duties of process/duties.yaml: each cell's current or power schedule against the anolyte reservoir (voltage, efficiencies and WDE from the measured series or the specified cell, never extrapolated), the pH, inventory, product, charge, energy, dosing and bleed over time, the time to the stated pH threshold and the time outside the measured range. A duty a stack of process/cells.yaml names (equipment.duty) runs at the arrangement that stack is sized at, as in cheme process stack (cheme.duty-arrangement). --compare ID,ID --co KG compares duties at equal delivered product (the duties are named there, not as IDS; --plot then draws the compared transients). Writes nothing but the plots. Exit 1 on an error finding, 2 without process/duties.yaml, for an unknown duty id or for IDS given with --compare.

cheme process duty [OPTIONS] [ids]...
name kind type required default help
ids argument str Duty ids (default: every duty).
--json option flag As JSON.
--plot option path Write the time plots and operating maps (SVG) into this directory.
--compare option str ID,ID: compare these duties at equal delivered product (--co).
--co option float With --compare: the delivered product, kg.
--tolerance option float 0.001 With --compare: relative tolerance on the delivered product.

cheme process stack

The stacks of the stacks: section of process/cells.yaml sized for their product duty at the cell's operating point (never outside its measured or declared range): active area, cells, cells per stack from the voltage limit, stacks, stack voltage and current, DC power, output and its margin, kWh per kg, the stack envelope; and the skid equipment inputs from the duty named, run at the sized arrangement over its horizon: reservoir and tank dimensions (a dosing or bleed tank over its refill or emptying interval), the recirculation and dosing pumps' flows, and with the duty's reservoir.size: to_horizon the reservoir volume that reaches its horizon. Without --write it writes nothing and reports what differs from the equipment list, the datasheets and process/duties.yaml (cheme.stack-outdated); --write writes them (a reservoir volume first, then the tanks from the duty at it); with --write --json the report (as the files are then) carries written, each file written with its tags (or duty ids). Exit 1 on an error finding (process/cells.yaml not following its schema among them: its findings are printed), 2 without process/cells.yaml or stacks, or for an unknown id.

cheme process stack [OPTIONS] [ids]...
name kind type required default help
ids argument str Stack ids (default: every stack).
--json option flag As JSON.
--write option flag Write the calculated stack and tank dimensions into the equipment list, the pumps' inputs into their datasheets (never over a value written by hand) and a reservoir volume the duty asks for (reservoir.size: to_horizon) into process/duties.yaml.

cheme process energy

Energy balances of blocks and steps (stream enthalpies against energy streams), the energy audit of the recorded simulation run, and the boundary-completeness gaps (utilities, waste and emission terminals not declared). Exit 1 on a warning or error.

cheme process energy [OPTIONS]
name kind type required default help
--case option str Case id (default: the default case).
--json option flag As JSON.

cheme process pinch

Whole-plant pinch targets of the case's recorded simulation run (process/simulation-run.json, from cheme process simulate --fill; the simulator is not run).

Prints the current utility demand, the theoretical minimum utility demand at dTmin and the theoretical energy-saving potential (their difference: not a saving), the hot-side, cold-side and shifted pinch (or a threshold problem), the utility-use pinch violations apart from cross-pinch transfer in existing exchangers, the thermal streams with class and quality, and the reconciliation against the run's duties. --write records the result in process/pinch-run.json. Exit 1 on an error (no current converged run, too few streams) or a reconciliation finding; 2 on invalid input; 3 when --write is refused (a reconciliation finding), nothing written.

cheme process pinch [OPTIONS]
name kind type required default help
--dt-min option float yes The global minimum approach temperature dTmin, K (required).
--dt-min-source option str ASSUMED Where dTmin comes from (recorded; default: ASSUMED).
--case option str Case id (default: the default case).
--include-constrained option flag Include the constrained duties (reactors) in the targets, as a sensitivity.
--json option flag As JSON.
--md option flag As Markdown.
--write option flag Record the targets in process/pinch-run.json.

cheme process furnace

Energy basis of the solid-reaction furnaces of process/furnaces.yaml (lime calcination): element balance, product and off-gas composition, reaction enthalpy and the furnace energy closure from condensed-phase NASA data (extra cantera), or a labelled specific-energy fallback. Exit 1 on a warning or error.

cheme process furnace [OPTIONS] [furnace_id]
name kind type required default help
furnace_id argument str Furnace id (default: every furnace).
--json option flag As JSON.

cheme process props

Stream properties (phase, vapour fraction, molar mass, density, enthalpy) through thermo (extra props), with the process's property package, inside its validated range only.

--fill never overwrites given or assumed values; a state outside the range is refused and not written, and values calculated earlier stay and are reported stale. --fill exits 3 when it refused a stream (out of range, unsupported, failed or a contradicted phase) and wrote the rest. --check exits 1 on a warning (stale, differing or out-of-range values). --coverage names the package (materials.yaml property_method.package, or the one covering the most streams) and per stream whether it covers its components and state or why not, nearest other package included; it needs no thermo and exits 0 unless the recorded package is unknown. --json prints the run as an adapter result (cheme/adapter-result/v1) per case, same exit codes (with --coverage: the coverage as JSON).

cheme process props [OPTIONS]
name kind type required default help
--fill option flag Write calculated values and the method.
--check option flag Recalculate and report; write nothing.
--coverage option flag List the property package and, per stream, whether it covers it or why not; write nothing.
--case option str Case id (default: the default case).
--json option flag The run as an adapter result (JSON).

cheme process propagate

Derive missing compositions and flows through steps their streams fully determine: pass-through steps (compressors, coolers, heaters, pumps, filters), mixers, splitters (split: fractions per outlet port, else the mass balance remainder).

Separators and reactors are only checked, never solved. Derived values are calculated with an input fingerprint; given and assumed values are never overwritten. --check exits 1 on a warning (stale propagated values). --json prints the run as an adapter result (cheme/adapter-result/v1) per case, same exit codes.

cheme process propagate [OPTIONS]
name kind type required default help
--fill option flag Write the derived compositions and flows.
--check option flag Derive and report; write nothing.
--case option str Case id (default: the default case).
--json option flag The run as an adapter result (JSON).

cheme process simulate

Solve the flowsheet in DWSIM, or in IDAES where process/simulation.yaml says simulator: idaes (optional; CHEME_IDAES_PYTHON names a Python with idaes-pse): feeds from process/flowsheet.yaml, simulator, property package and step specifications from process/simulation.yaml.

--fill writes temperature, pressure, flow and composition of every simulated stream that lacks them (and the duty of energy streams) as calculated with a fingerprint; given and assumed values are never overwritten, a deviation from them is a warning. --fill also records the run (convergence, unit results, stream values, input fingerprints) in process/simulation-run.json; --check reports a record made from other inputs. Exits 1 on an error (unmapped step, missing spec or feed, no simulator) and, with --check, on a warning (stale or deviating values, a stale record); 3 when the simulation did not converge (no stream value written, the run recorded).

cheme process simulate [OPTIONS]
name kind type required default help
--fill option flag Write the simulated values streams lack.
--check option flag Simulate and report; write nothing.
--case option str Case id (default: the default case).
--save option path Also save the DWSIM flowsheet here (.dwxmz; DWSIM only).

cheme process phase

Binary interaction parameter coverage and, with --temperature and --pressure, a flash (phase identification) through thermo (extra props). No solids, electrolytes or pseudocomponents; no application range claimed.

Each pair is sourced (with its source), missing (the calculation uses zero) or accepted_zero (--accept-zero). Exits 2 on invalid input, 1 with --check when a pair is missing.

cheme process phase [OPTIONS] {components}...
name kind type required default help
components argument str yes Component names or CAS numbers.
--model option str Equation of state: Peng-Robinson, Redlich-Kwong-Soave, Redlich-Kwong.
--liquid option str Activity-coefficient model: NRTL, Wilson, UNIFAC.
--vapor option str With --liquid: an equation of state or ideal_gas.
--z option str Overall mole fractions, comma-separated (mixtures).
--temperature option float Flash temperature.
--temperature-unit option str K Unit of the temperature.
--pressure option float Flash pressure (absolute).
--pressure-unit option str bar(a) Unit of the pressure.
--two-liquids option flag Allow a second liquid (stated assumption).
--accept-zero option str A pair A:B whose missing parameter is accepted as zero (repeatable).
--check option flag Exit 1 when a binary parameter is missing.
--json option flag The result as JSON.

cheme process extract

Liquid-liquid extraction from process/extraction.yaml: countercurrent equilibrium stages on NRTL (thermo, extra props) with a bundled or a sourced LLE system. Prints raffinate, extract, solute recovery, solvent loss, distribution and selectivity, closure, and whether the result is inside a benchmarked range (qualified). Solvent regeneration is a separate unit. Writes nothing. Exit 1 when a unit is refused (e.g. no two-phase region), fails or does not converge, 2 without the file or for an unknown unit.

cheme process extract [OPTIONS] [unit]
name kind type required default help
unit argument str One unit of process/extraction.yaml (default: all).
--systems option flag List the bundled LLE systems and exit.
--json option flag {lines, results: [adapter result per unit]}.

cheme process methods

The supported-method contract (methods.yml): per thermodynamic model the selection tree can recommend, whether cheme process phase and cheme process simulate run it, else its explicit substitute; and the coverage decisions for electrolytes, solids and pseudocomponents.

cheme process methods [OPTIONS]
name kind type required default help
--json option flag The table as JSON.

cheme process electrolyte

Mean ionic activity coefficient, osmotic coefficient, water activity and vapour pressure, and relative enthalpy of a qualified aqueous electrolyte system (electrolytes.yml; today NaCl-H2O) through Pitzer's equations in Cantera (extras cantera and props).

Inside the claimed range only: anything else (another salt or ion, a charge imbalance, a state outside the range, a boiling solution) is refused with exit code 3. Exit 2 on invalid input or a missing extra.

cheme process electrolyte [OPTIONS]
name kind type required default help
--temperature option float yes Temperature.
--pressure option float yes Pressure (absolute).
--molality option float Molality of the salt, mol per kg of water.
--mass-fraction option float Mass fraction of the salt in the solution.
--species option str Solute species molalities, e.g. 'Na+=1,Cl-=1'.
--system option str NaCl-H2O The electrolyte system.
--temperature-unit option str K Unit of the temperature.
--pressure-unit option str bar(a) Unit of the pressure.
--json option flag The result as JSON.

cheme process assay

Characterise the petroleum assays of process/assays.yaml into pseudocomponents (Riazi-Daubert, Lee-Kesler, Lastovka-Shaw; D86 converted to TBP by API 3A1.1) and print them with their identities and the characterisation fingerprint. An insufficient assay or one outside the correlations' range is refused (no pseudocomponents).

--pressure adds the bubble and dew temperatures, --temperature with --pressure a Peng-Robinson flash (kij = 0), each with why it lies outside the benchmarked claim. --fill records the characterisations in process/assay-characterization.json; --check reports a record made from other inputs or another method version. Exits 1 on an error (with --check also on a warning), 2 on a wrong call.

cheme process assay [OPTIONS] [ids]...
name kind type required default help
ids argument str Assay ids (default: all).
--fill option flag Record the characterisations.
--check option flag Report a missing or stale record; write nothing.
--prune option flag With --fill: drop entries of removed assays.
--temperature option float Flash temperature, K (with --pressure).
--pressure option float Flash pressure, kPa(a): bubble and dew points, or a flash at it.
--json option flag The result as JSON.

cheme process layout

Print the generated layout of a view; --pin writes it into flowsheet.yaml layout.<view> so later builds keep those positions.

cheme process layout [OPTIONS] [ids]...
name kind type required default help
ids argument str Object ids to pin (default: every node).
--view option str bfd bfd or pfd.
--pin option flag Write the positions as overrides into the flowsheet.

cheme layout

3D layout: the plant model generated from layout/*.yaml, the lists and the P&IDs.

cheme layout [OPTIONS] COMMAND [ARGS]...

Subcommands: build, route, pin, render, report, cables, lifting

cheme layout build

Derive layout/plant-model.yaml: equipment parts from type and dimensions, nozzles from the P&IDs (point, direction, DN, lines), maintenance envelopes, steel structures, platforms, zones, the site geometry and a pipe route for every P&ID segment.

Prints the build's findings and the model rules (clashes, headroom, access, rack fill). Refuses while a layout file is invalid, and over a model edited by hand unless --force. A rebuild from the same inputs is byte-identical.

cheme layout build [OPTIONS]
name kind type required default help
--check option flag Write nothing; exit 1 when the model is not up to date.
--force / --no-force option flag Overwrite a model edited by hand since it was built.

cheme layout route

Rebuild the model, routing only the given lines (the other pipes are kept from the committed model); without --line, the same as layout build.

cheme layout route [OPTIONS]
name kind type required default help
--line option str Route only this line (repeatable); keep the other routes.
--force / --no-force option flag Overwrite a model edited by hand since it was built.

cheme layout pin

Copy a generated route (into piping/routing.yaml), a proposed platform (into the item's access: in layout/equipment-placement.yaml), a proposed stair or ladder (into its structure in layout/structures.yaml, or its rack in layout/site-plan.yaml) or the opening a wall penetration proposes (into its building's or enclosure's openings; a roof penetration is refused: route the line through a wall), proposed support steel (into pipe_supports) or a valve access platform (into structures, with the routes of its valves' pipes), so the next build keeps it.

cheme layout pin [OPTIONS] {target}
name kind type required default help
target argument str yes A line number, pipe id, TAG/platform-N, a proposed stair or ladder (S/stair-to-L, S/ladder-to-L, RACK/ladder-start|end), a wall penetration (OWNER/LINE), proposed support steel (PIPE/SP-<arc>) or a valve access platform (VP-<valve tag>).

cheme layout render

Draw the committed model as build/layout-*.svg (or .png): the plot plan, a level plan or a section, with grid, tags, line numbers, north arrow, scale bar and title block.

cheme layout render [OPTIONS]
name kind type required default help
--plan option flag A plan (plot plan by default).
--level option str Level plan of a structure or building level id.
--z option str Level plan of the z range A,B (m).
--section option str A section at x=VALUE or y=VALUE (m).
--depth option float 6.0 Section depth (m).
--crop option str X0,Y0,X1,Y1: site m (a section: along, z).
--png option flag PNG (extra png) instead of SVG.

cheme layout report

Routed and unrouted lines with the reasons, lengths per line, rack fill, the model rule findings, and the generated / pinned / declared counts of the committed model.

cheme layout report [OPTIONS]
name kind type required default help
--json option flag The report as JSON.

cheme layout cables

The cable schedule of the committed model: every cable from, to, size, trays, length (Markdown by default).

cheme layout cables [OPTIONS]
name kind type required default help
--csv option flag The schedule as CSV.
--json option flag The schedule as JSON.
--write option flag Write electrical/cable-schedule.csv and .md.
--check option flag Exit 1 when the written schedule is not current.

cheme layout lifting

The lifting study of the committed model: per heavy item its crane or pad, radius, load moment, capacity needed, lift and hook height, lane and laydown; checked against layout/crane-chart.yaml when there is one (Markdown by default).

cheme layout lifting [OPTIONS]
name kind type required default help
--csv option flag The study as CSV.
--json option flag The study as JSON.
--write option flag Write layout/lifting-study.csv and .md.
--check option flag Exit 1 when the written study is not current.

cheme assess

Assessment: the material take-off of the 3D model, the estimates, the LCA and the TEA.

cheme assess [OPTIONS] COMMAND [ARGS]...

Subcommands: mto, estimate, equipment, lca, lca-scenarios, lca-cases, lci-estimate, tea, lca-search, lca-map

cheme assess mto

The material take-off of layout/plant-model.yaml (Markdown by default): pipe by DN, class and insulation; elbows, tees, reducers, flanges; valves; steel tonnage; grating, insulation and concrete.

cheme assess mto [OPTIONS]
name kind type required default help
--csv option flag CSV, one row per quantity.
--json option flag Rows, totals, findings and provenance as JSON.
--write option flag Write estimate/mto.csv and estimate/mto.md.
--check option flag Exit 1 when estimate/mto.csv or .md is not current.

cheme assess estimate

The take-off priced with estimate/rates.yaml, then its factors (direct, indirect, contingency): Markdown by default. cheme holds no prices; every rate is the project's, with its status, source and year.

cheme assess estimate [OPTIONS]
name kind type required default help
--csv option flag CSV, one line per row and factor.
--json option flag Lines, totals, findings and provenance as JSON.
--write option flag Write estimate/estimate.csv and estimate/estimate.md.
--check option flag Exit 1 when estimate/estimate.csv or .md is not current.

cheme assess equipment

The equipment estimate from published cost correlations (Turton et al., CAPCOST): the purchased and bare module cost of every listed item, escalated by the project's cost index in estimate/cost-basis.yaml (Markdown by default).

cheme assess equipment [OPTIONS]
name kind type required default help
--csv option flag CSV, one line per item.
--json option flag Lines, totals, findings and provenance as JSON.
--write option flag Write estimate/equipment-cost.csv and estimate/equipment-cost.md.
--check option flag Exit 1 when estimate/equipment-cost.csv or .md is stale.

cheme assess lca

The LCA of the plant's operation per functional unit (Markdown by default): the flowsheet's feeds and products in the case of lca/lca.yaml, shared between the co-products, characterised with lca/factors.yaml (and the open profiles it includes) or a Brightway project. --inventory and --dataset alone need neither: the foreground is exported without a background database or credentials. Every exchange without a burden is a gap, never 0.

cheme assess lca [OPTIONS]
name kind type required default help
--csv option flag The impacts as CSV, one row per contributor.
--inventory option flag The foreground inventory as CSV.
--dataset option flag The unallocated LCI dataset (kind lci_dataset) as YAML.
--coverage option flag How far the result can be read: the classification and its reasons, the gaps (exchanges without a burden), the sources, the limitations, the data quality rating (TfS DQR, PEF-style indicators, primary data share) and the water balance. Writes nothing.
--balance option flag The mass, element (C, H, O, N, S, Cl, ...) and carbon-by-origin balance of the plant's LCI dataset and its energy closure: in, out and residual per quantity (kg per hour and %), the tolerance, and the exchanges excluded with their reasons (with --json: as JSON). Needs no factors or background. Writes nothing.
--json option flag Inventory, impacts, findings and provenance as JSON.
--write option flag Write lca/inventory.csv, results.csv, results.md, gaps.csv, the unallocated LCI dataset lca/dataset.yaml and the run manifest lca/manifest.json.
--check option flag Exit 1 when one of the lca/ outputs is not current.
--pact option path Write the product carbon footprint as a WBCSD PACT (Pathfinder) v2 ProductFootprint JSON to this file (needs carbon_accounting with pact: in lca/lca.yaml).
--strict option flag Exit 1 when an exchange of the baseline or a scenario rests on an unpublished factor: an example factor, one ASSUMED, PROXY or ESTIMATE, or a gap (each named as the error cheme.lca-factor-status, with its factor status).
--case option str With --dataset, --write or --check only: the unallocated LCI dataset of this flowsheet case instead of lca/lca.yaml's, its id, title and uuid naming the case; --write writes it to lca/datasets/<dataset id>-<case>.yaml, --check exits 1 when that file is stale. The case lca/lca.yaml studies is the same as no --case.

cheme assess lca-scenarios

One machine-readable record per LCA scenario (a summary by default): its stable id <dataset>/<case>/<scenario>, the design case, the unallocated foreground, each exchange's background in the scenario (geography, year, status, source; linked, proxy, missing), the characterised totals per functional unit with the allocation, the gaps, warnings, publication policy and input fingerprints. A regional scenario changes the background only; only a scenario naming its own flowsheet case changes the foreground.

cheme assess lca-scenarios [OPTIONS] [ids]...
name kind type required default help
ids argument str Scenario ids of lca/lca.yaml (baseline included); default: all.
--json option flag The records as one JSON object, by path.
--write option flag Write lca/scenarios/<id>.json, one per scenario.
--check option flag Exit 1 when a scenario record is not current.

cheme assess lca-cases

Existing flowsheet cases side by side: each case's declared capacity and provenance, and each exchange per unit (kg, or kWh for an energy product) of the functional unit's product (unallocated). Only computed cases; nothing is scaled, and an exchange a case lacks is shown as missing, not 0.

cheme assess lca-cases [OPTIONS] [cases]...
name kind type required default help
cases argument str Flowsheet case ids; default: every case.
--json option flag The comparison as JSON.

cheme assess lci-estimate

A Tier 0 (stoichiometric) or Tier 1 (sourced conceptual) LCI dataset for a process without a flowsheet (YAML by default): from the reactions of process/reactions.yaml, the formulas of process/materials.yaml and the estimate's yield and selectivity, with every default exchange marked assumed and its rule cited. Refuses a dataset whose element balance does not close.

cheme assess lci-estimate [OPTIONS] [spec]
name kind type required default help
spec argument str lca/estimate.yaml The estimate (kind lci_estimate), from the repository root.
--write option flag Write the dataset (default lca/datasets/<id>.yaml).
--check option flag Exit 1 when the written dataset is not current.
--compare option flag Compare the estimate with the repository's flowsheet (process/flowsheet.yaml), per kg of the product: the validation of a tier against a full design.
--case option str The flowsheet case for --compare.
--json option flag The dataset, its balance and the findings as JSON.

cheme assess tea

The techno-economic analysis of the plant (Markdown by default): the capital cost built up from the estimate, the operating cost and revenue of the flowsheet's feeds and products, the discounted cash flow (NPV, IRR, LCOP, payback), scenarios, what dominates the outcome and what would change the decision. cheme holds no prices; every one is the project's, in estimate/tea.yaml with its status, source and year.

cheme assess tea [OPTIONS]
name kind type required default help
--csv option flag The cash flow as CSV, one row per year.
--sensitivity option flag Tornado and break-even values as CSV.
--json option flag Premises, results, findings and provenance as JSON.
--write option flag Write estimate/tea.md, tea-cashflow.csv, tea-sensitivity.csv and (with a Monte Carlo) tea-uncertainty.csv.
--check option flag Exit 1 when one of the TEA outputs is not current.
--compare option str Compare with the TEA at this revision (a temporary worktree): what the two do not share, then their results.

Find activities and flows in the Brightway project (extra lca), printed as the activity: or biosphere: mapping to paste into lca/lca.yaml.

cheme assess lca-search [OPTIONS] {text}
name kind type required default help
text argument str yes Words of the activity's name or product.
--database option str Only this database of the project.
--limit option int 20 At most this many.
--project option str Brightway project; default brightway.project of lca.yaml.

cheme assess lca-map

The exchanges without a background (unmapped, or declared missing:) with candidate activities of the Brightway project (extra lca), numbered, with the query that found them. A dry run: it writes nothing unless --apply names the approved candidates, and then only their activity: mappings.

cheme assess lca-map [OPTIONS] [keys]...
name kind type required default help
keys argument str Only these exchanges (e.g. feed:POWER); default every open one.
--query option str Search with this text instead of each exchange's name.
--database option str Only this database of the project.
--limit option int range 5 At most this many per exchange.
--project option str Brightway project; default brightway.project of lca.yaml.
--apply option str KEY=N: write candidate N of KEY (as listed with the same --query, --database and --limit) as its activity: into lca/lca.yaml. Repeatable; needs --source.
--source option str Why these mappings (their source: in lca/lca.yaml).

cheme datasheets

Equipment datasheets: drafts, calculated sizes and dimensions, outline drawings.

cheme datasheets [OPTIONS] COMMAND [ARGS]...

Subcommands: draft, fill, drawing

cheme datasheets draft

Write a draft equipment/datasheets/<TAG>.yaml for every listed item without one: type, service, design conditions and material from the equipment list, dimensions, nozzles from the P&IDs, inlet and outlet conditions from the flowsheet streams linked to it; every value with its source, unknowns TBD, draft: true. Existing datasheets are never touched.

cheme datasheets draft [OPTIONS]
name kind type required default help
--tag option str Only this item (repeatable).
--dry-run option flag Print the drafts, write nothing.

cheme datasheets fill

Fill the TBD sizes of the draft datasheets (draft: true) with calculated values and their basis: exchanger duty, LMTD and area; pump head, NPSH available and power; compressor and expander stages and power; column shortcut stages; vessel volume and residence time. A value the datasheet gives is never overwritten; what cannot be calculated stays TBD with the reason. The main dimensions and the empty weight come from the equipment list and the layout model (--dimensions: only those, final datasheets included).

cheme datasheets fill [OPTIONS]
name kind type required default help
--tag option str Only this item (repeatable).
--param option str NAME=VALUE: an assumption for every item without its own (repeatable), e.g. pump_efficiency=0.7; written ASSUMED. --list names them.
--case option str Flowsheet case.
--dimensions option flag Only the main dimensions and the empty weight the equipment list and the layout model state, into final datasheets too (never over a value written by hand).
--dry-run option flag Print the filled drafts, write nothing.
--list option flag List the parameters, the typical overall coefficients (u_service) and the pipe roughness rows, and exit.

cheme datasheets drawing

The outline drawing of each datasheet, equipment/datasheets/<TAG>.svg: an elevation and a nozzle orientation view with the stated main dimensions, the nozzle schedule, weights, materials and a title block, generated from the datasheet (never edited by hand). Without an option, lists each drawing's state (current, stale, missing).

cheme datasheets drawing [OPTIONS]
name kind type required default help
--tag option str Only this item (repeatable).
--write option flag Write equipment/datasheets/<TAG>.svg where not current.
--check option flag Exit 1 when a drawing is missing or not current.
--print option flag Print the drawing (one --tag) and write nothing.

cheme skills

The bundled skills installed in .claude/skills/: status and safe updates.

cheme skills [OPTIONS] COMMAND [ARGS]...

Subcommands: status, update

cheme skills status

Each bundled skill file as installed: current, outdated (an earlier bundled version), modified (changed locally) or missing.

cheme skills status [OPTIONS] [names]...
name kind type required default help
names argument str Skills (default: all).
--json option flag Machine-readable.

cheme skills update

Install the bundled version of missing and outdated skill files. A file changed locally is kept and reported (exit 1) unless --force.

cheme skills update [OPTIONS] [names]...
name kind type required default help
names argument str Skills (default: all).
--force / --no-force option flag Also replace files changed locally (they are still reported).

cheme chemistry

Chemistry: component properties from databases and correlations.

cheme chemistry [OPTIONS] COMMAND [ARGS]...

Subcommands: props, thermo, kinetics, microkinetics, library, evidence

cheme chemistry props

Look up properties of one component; each line names the source of its value.

Without --source the web databases are asked (network). Exits 1 when a property was not found.

cheme chemistry props [OPTIONS] {component}
name kind type required default help
component argument str yes Name or CAS number, e.g. ethanol, 64-17-5.
--property / -p option str yes Property to look up (repeat for several).
--temperature option float 298.15 Temperature.
--temperature-unit option str K Unit of --temperature.
--pressure option float 101325.0 Pressure.
--pressure-unit option str Pa Unit of --pressure.
--source option str Ask only these sources (PubChem, NIST, OSHA, Thermo, GRAPPA).
--grappa-endpoint option str Base URL of a running GRAPPA service (last resort).
--json option flag Results as JSON.

cheme chemistry thermo

Ideal-gas formation data (dHf, S at 298.15 K, Cp/R polynomial) for process/materials.yaml.

Prints one ideal_gas: entry per component to paste into its components: line (extra props, offline). Exits 1 when a component is not known.

cheme chemistry thermo [OPTIONS] {components}...
name kind type required default help
components argument str yes Names or CAS numbers.
--fit option str LO,HI in K: fit the heat capacity to thermo over this range (beyond 1000 K).
--json option flag Results as JSON.

cheme chemistry kinetics

Kinetics of an elementary gas-phase reaction from NIST (and RMG), reduced to one Arrhenius record, printed as a rate: entry for process/reactions.yaml (network).

The rate is a power law per volume on concentrations (kmol/m3), its A converted from SI moles. Exits 1 when no record is found.

cheme chemistry kinetics [OPTIONS]
name kind type required default help
--reactant / -r option str yes ID=NAME or ID=SMILES, a reactant (repeat). A formula that is also a SMILES (CO, NO) is refused: give a name, [C-]#[O+], or smiles:CO.
--product / -p option str ID=NAME or ID=SMILES, a product (repeat). A formula that is also a SMILES (CO, NO) is refused: give a name, [C-]#[O+], or smiles:CO.
--tmin option float K; records must cover it (alone: the one temperature).
--tmax option float K; records must cover it (alone: the one temperature).
--rmg-endpoint option str Base URL of a running RMG service (else NIST only).
--json option flag The record and rate as JSON.

cheme chemistry microkinetics

A reaction's elementary steps at steady state (mean field): coverages, TOF, degree of rate control of every step, apparent activation energy and reaction orders.

cheme chemistry microkinetics [OPTIONS] {reaction}
name kind type required default help
reaction argument str yes A reaction id of process/reactions.yaml.
--temperature / -T option float yes K
--pressure / -p option str yes ID=BAR, a partial pressure (repeat).
--product option str The component whose TOF is analysed (default: first product).
--cantera option flag Check the steady state with Cantera (extra cantera).
--export option path Write the mechanism as a Cantera YAML input to this file.
--json option flag As JSON.

cheme chemistry library

The reaction library: industrial processes with their components (ideal-gas data, critical constants), reactions and typical catalysts. Without an id, list them; with one, show it; with --add, add it to process/materials.yaml, reactions.yaml and catalysts.yaml.

cheme chemistry library [OPTIONS] [entry]
name kind type required default help
entry argument str An entry id (none: list them).
--add option flag Add the entry's components, reactions and catalysts.
--json option flag As JSON.

cheme chemistry evidence

The route comparison of process/reaction-evidence.yaml: per route its sources and observations, the temperature, pressure, conversion, selectivity and yield reported (each kept apart), kinetics, conflicts, sources not read and gaps, then the model basis and the file's cheme.evidence-* findings. Exit 1 on an error finding.

cheme chemistry evidence [OPTIONS]
name kind type required default help
--json option flag As JSON.

cheme control

Control: the loop register, operating sequences, narrative and control philosophy.

cheme control [OPTIONS] COMMAND [ARGS]...

Subcommands: report

cheme control report

Write the loop summary (control-loops.html, .csv) and the sequence report (control-sequences.html), with each file's review status and the control findings.

cheme control report [OPTIONS]
name kind type required default help
-o option path Folder to write to (default: build/).
--json option flag Print the report as JSON.

cheme safety

Safety: HAZOP studies and their risk matrix.

cheme safety [OPTIONS] COMMAND [ARGS]...

Subcommands: hazop

cheme safety hazop

HAZOP studies in safety/hazop/<study-id>/study.yaml: start one, check it, look its bands up in the risk matrix, write its report, record its analysed inputs.

cheme safety hazop [OPTIONS] COMMAND [ARGS]...

Subcommands: init, check, rate, report, stamp, review

cheme safety hazop init

Start a draft study: safety/hazop/STUDY/study.yaml with the analysed inputs at their current revision and an empty worksheet. Refuses an existing study.

cheme safety hazop init [OPTIONS] {study}
name kind type required default help
study argument str yes The study id: its directory under safety/hazop/.
--title option str `` The study's title.
--input option str A file or directory the study analyses (pid/P-01.xml, control/; repeat). A directory is recorded at the HEAD commit and must be committed.
--matrix option str The risk matrix file (default safety/risk-matrix.yaml if it exists).

cheme safety hazop check

The findings of the studies (as in cheme validate) and the state of each: invalid, draft, assessed or reviewed. Read-only; exits 1 when a study has errors.

cheme safety hazop check [OPTIONS] [study]
name kind type required default help
study argument str The study id; none: every study.
--json option flag As JSON.

cheme safety hazop rate

Look up the band of each rating (category, severity, likelihood) in the study's risk matrix. Without --write nothing is written and the command exits 1 when a band is missing, stale or edited, or a rating cannot be looked up. --write records the bands (with the matrix and input fingerprint) and changes nothing else in the file.

cheme safety hazop rate [OPTIONS] {study}
name kind type required default help
study argument str yes The study id: its directory under safety/hazop/.
--target option str Only this node, deviation or scenario id (default: the whole study).
--write option flag Record the bands (default: only check them).
--json option flag As JSON.

cheme safety hazop report

Write the study's report to build/hazop/STUDY.md and .html: state, analysed inputs, matrix, unresolved items, the worksheet with every rating and band, safeguards, actions, review status.

cheme safety hazop report [OPTIONS] {study}
name kind type required default help
study argument str yes The study id: its directory under safety/hazop/.
-o option path Directory (default build/; files in hazop/).

cheme safety hazop stamp

Show the analysed inputs at their recorded and current revisions; --write records the current ones (sha256 of each file). Only once the team has reassessed what changed.

cheme safety hazop stamp [OPTIONS] {study}
name kind type required default help
study argument str yes The study id: its directory under safety/hazop/.
--input option str Add an analysed input (repeat).
--write option flag Record the revisions.

cheme safety hazop review

Prepare a review record (skill review's format) for the study: scope, basis (analysed inputs and matrix) and the open items. The reviewer is left empty: the record does not validate until a person fills it in.

cheme safety hazop review [OPTIONS] {study}
name kind type required default help
study argument str yes The study id: its directory under safety/hazop/.
--write option flag Write reviews/<today>-hazop-STUDY.md (default: print it).

cheme experiments

Experiments: kinetic data, rate laws fitted to them, data sampled from a mechanism, measured electrochemical series.

cheme experiments [OPTIONS] COMMAND [ARGS]...

Subcommands: fit-rate, sample-mechanism, electrochem

cheme experiments fit-rate

Fit a rate law to kinetic data: the law as a rate: entry for process/reactions.yaml, each parameter with its standard error and 95 % interval, and the R^2 of ln r.

cheme experiments fit-rate [OPTIONS] {data}
name kind type required default help
data argument path yes A kinetic data file (cheme/kinetic-data/v1).
--form option str power_law power_law or lhhw.
--order option str Power law: a component with an order (repeat; default: the reactants). LHHW: ID=EXPONENT of the numerator.
--adsorb option str LHHW: a component in the denominator (repeat).
--power option float 1.0 LHHW: the denominator's exponent.
--reverse option flag Fit r / (1 - Q/K): the reaction is reversible.
--json option flag As JSON.

cheme experiments sample-mechanism

Sample a reaction's mechanism over a grid of conditions into a kinetic data file, to fit a rate law for a fixed bed with cheme experiments fit-rate.

cheme experiments sample-mechanism [OPTIONS] {reaction}
name kind type required default help
reaction argument str yes A reaction with a mechanism.
--temperature / -T option float yes K (repeat).
--pressure / -p option str yes ID=BAR,BAR,... partial pressures (repeat).
--sites-per-kg option float yes kmol of active sites per kg of catalyst.
--out option path yes The kinetic data file to write.
--product option str Default: the first product.

cheme experiments electrochem

Process a measured electrochemical series: per replicate and point (mean, sd, n) the Faradaic efficiency of each product, partial current densities, the water dissociation efficiency from the anolyte titration, power, heat and the charge and carbon balances. Reads the file only (a plant repository is not needed); --plot writes polarisation, Faradaic efficiency, partial current density and water dissociation plots. Exit 1 on an error finding, 2 when the file does not exist.

cheme experiments electrochem [OPTIONS] {file}
name kind type required default help
file argument path yes A measurement file (cheme/electrochemical-measurements/v1).
--json option flag As JSON.
--plot option path Write the SVG figures the data support into this directory.

cheme data

Optional datasets: fetch them into the user data directory.

cheme data [OPTIONS] COMMAND [ARGS]...

Subcommands: fetch, status

cheme data fetch

Download (or read with --zip) an optional dataset, check it and install it.

chemsep-srk: ChemSep-LITE from http://www.chemsep.org/downloads/data/lite.zip (plain HTTP; the sha256 recorded for ChemSep-LITE 8.50 is checked), its ipd/srk.ipd converted to srk.json for the Redlich-Kwong-Soave flash. Its licence is not confirmed for redistribution, so cheme-as-code does not ship it. Exits 2 on a failed check.

cheme data fetch [OPTIONS] {dataset}
name kind type required default help
dataset argument str yes Dataset: chemsep-srk.
--zip option file A local ChemSep-LITE lite.zip (offline); without it the archive is downloaded.
--url option str Download from this URL instead.
--sha256 option str Expected sha256 of the archive (default: the recorded release).
--no-verify option flag Do not check the archive's sha256.
--data-dir option path Install under this directory (default: $CHEME_DATA_DIR or the user data directory).

cheme data status

Which optional datasets are installed, and where.

cheme data status [OPTIONS]
name kind type required default help
--data-dir option path Look under this directory instead.

cheme runs

Run records: one folder per design session in runs/ (start, record, list).

cheme runs [OPTIONS] COMMAND [ARGS]...

Subcommands: start, record, list

cheme runs start

Remember the start of a session (HEAD, branch, time, working tree) in build/run-records/<session_id>.start.json, for cheme runs record.

cheme runs start [OPTIONS]
name kind type required default help
--hook option flag Claude Code SessionStart hook: read its JSON from stdin, never fail.
--session-id option str The session id (without --hook; required then).

cheme runs record

Write runs/<run-id>/ for one session: run.yaml (process-run/v1), task.md, report.md and session.jsonl.gz. Prints the run folder. A record that exists is never rewritten.

cheme runs record [OPTIONS]
name kind type required default help
--hook option flag Claude Code SessionEnd hook: JSON from stdin, kind interactive, no checks, no commit, skipped when nothing changed, never fails.
--session-id option str The Claude Code session id.
--transcript option path The session transcript (.jsonl) instead of --session-id.
--kind option str interactive agent, interactive or manual.
--slug option str Appended to the run id (e.g. the stage id).
--task-file option path The task, copied to task.md.
--report-file option path The session's report, copied to report.md.
--cost option float USD as reported by the API (never an estimate).
--budget option float The session's USD cap.
--effort option str The reasoning effort it ran with.
--result option str How it ended (Claude Code's result subtype: success, ...).
--start-commit option str HEAD at the start, when no start file was written.
--checks option flag Run cheme check and cheme maturity and record them.
--commit option flag Commit the run folder alone (git commit -- runs/ID).
--sdk-version option str Claude Agent SDK version, from a runner that uses it.
--runner-name option str The external runner that ran the session.
--runner-commit option str The runner's commit, when it knows one.
--runner-dirty / --runner-clean option flag Whether the runner's checkout had changes.

cheme runs list

One line per run record in runs/: run id, kind, cost, wall time, complete, turns. Read-only.

cheme runs list [OPTIONS]
name kind type required default help
--json option flag Machine-readable.