Modernizing heavy-industry engineering
Browser-native, AI-assisted process simulation — built by engineers who understand chemical process modeling, not a wrapper around a node engine.
The real canvas engine, running live in your browser — not a screenshot.
Why MaximaLabs exists
Process simulation has run on the same desktop-installed, license-server-gated software since before most of today's engineers started their careers. Legacy desktop simulators are thermodynamically rigorous — and stuck in 2003: a multi-day onboarding course, an email thread to share a .hsc file, and a per-seat license that puts real simulation out of reach for smaller teams.
MaximaLabs exists to bring the same rigor into the browser: zero install, real-time collaboration instead of emailed files, version history instead of "final_v3_REAL.hsc," and an AI copilot that reads your actual flowsheet state — not a chatbot bolted onto the side of a 20-year-old codebase.
Built on verified thermodynamics
The solver is pure Python — NumPy, SciPy, and CoolProp for thermophysical properties, with Peng-Robinson, NRTL, UNIQUAC, and steam-table packages for phase equilibrium. The distillation column solves the same material/equilibrium/summation/energy (MESH) balances every rigorous simulator does — by default via a Newton-Jacobian simultaneous correction, with a Boston-Sullivan inside-out solve as the fallback for wide-boiling feeds where that converges more reliably; the flash engine is Rachford-Rice with successive substitution. None of it is a black box: every unit op traces back to a named method, not a proprietary correlation.
We don't ask you to take that on faith. Every thermo package is regressed against cited, published VLE datasets with a stated accuracy tolerance — pass or fail, not "looks about right."
from flowsim.sdk import FlowSimClient, feed, unit, edge
fs = {
"thermo_package": "nrtl", "components": ["ethanol", "water"],
"nodes": [
feed("FEED", flow=10, temperature=350, pressure=101325,
composition={"ethanol": 0.3, "water": 0.7}),
unit("COL", "distillation", n_stages=8, feed_stage=4,
reflux_ratio=2.5, distillate_rate=3.0, pressure=101325),
unit("D", "product"), unit("B", "product"),
],
"edges": [edge("e1", "FEED", "COL"),
edge("e2", "COL", "D"), edge("e3", "COL", "B")],
}
sim = FlowSimClient("https://maximalabs.io").run_and_wait("demo", fs)