MaximaLabs
Developers

Build on MaximaLabs

A first-class REST API, a zero-dependency Python SDK, and an Excel add-in — automation that isn't bolted on.

REST API

POST /api/simulationsCreate a simulation from a flowsheet JSON
GET | PUT /api/simulations/{id}Fetch or update a simulation
POST /api/simulations/{id}/runEnqueue a solve (async worker)
GET /api/simulations/{id}/statusPoll status, or subscribe over WebSocket
GET /api/simulations/{id}/streamsSolved stream table (SI units)
POST /api/ai/chatAI copilot — generate / diagnose / advise
GET /api/components · /api/thermo-packagesAvailable components & thermo models
GET /api/simulations/{id}/cost · /sustainabilityCapital cost · Scope 1/2/3 emissions
POST /api/simulations/{id}/optimize · /sensitivityOptimization & case-study sweeps
GET/PUT /api/simulations/{id}/twinDigital-twin tag mapping & live comparison

All solves run as async jobs; results stream back over WebSocket. Every value is produced by the deterministic solver — the AI proposes, it never invents numbers.

Python SDK

A zero-dependency client (standard library only, no numpy/scipy/solver stack) — pip install flowsim-sdk gets you a real, independent package, not a slice of the monorepo. Build flowsheets, run simulations, and pull results, cost, and carbon from Python.

pip install flowsim-sdk

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")],
}
client = FlowSimClient("https://maximalabs.io")
sim = client.run_and_wait("demo", fs)
print(client.streams(sim["id"]), client.cost(sim["id"]))

Comprehensive coverage

Simulate & analyze

  • Create, run, and poll simulations (sync or async)
  • Stream tables, cost, sustainability, HX rating, safety, datasheets
  • Optimization & sensitivity/parametric sweeps
  • CSV report export

Collaborate & organize

  • Version snapshots — save, list, restore
  • Collaborators — invite editors/viewers
  • Projects & organizations — shared defaults, scenario grouping
  • Digital twin — read live comparisons, ingest readings, pull history

Every method is a thin wrapper over the same REST API the app itself uses — nothing the SDK does is a special, less-capable path.

In-browser Python notebook

Open the "Notebook" panel inside a flowsheet for a real Python cell running client-side via Pyodide (WASM) — no install, no server-side kernel. It only ever ships the thin flowsim-sdk client, not the solver itself (CoolProp has no WASM build), so every real computation — a run, a sensitivity sweep — goes out over the same REST/ARQ path the app's own Run button uses. Nothing is invented locally; results are always the deterministic solver's real output.

from flowsim.sdk.transport_pyodide import AsyncFlowSimClient

client = AsyncFlowSimClient()  # same-origin, uses your session automatically
sim = await client.get_simulation(sim_id)
print(sim["name"], sim["status"])

Excel add-in

Drive the same API from a spreadsheet with the xlwings add-in — for the engineers who live in Excel/VBA.

=FLOWSIM.RUN("http://host:8000", "my sim", A1)          ' A1 = flowsheet JSON
=FLOWSIM.STREAM("http://host:8000", B1, "e_prod", "flow")  ' B1 = returned sim id

Stop fighting legacy software. Build your first flowsheet in 60 seconds.