SpiralSimby Spiral Hydrogen

The Modelica environment you can talk to.

SpiralSim runs OpenModelica in your browser. Ask the chat for a change and it edits the source, checks it, and reruns the simulation. Or ignore the AI and just write Modelica.

The alpha is invite-only. We work through the list in order. Your email is used to contact you about access, nothing else.

SpiralSim
Pendulum.moRlcCircuit.mo
1 2 3 4 5 6 7 8 9 10 11
1 2 3 4 5 6 7 8 9 10 11 12 13 14
model Pendulum "Damped pendulum" parameter Real L = 1.2 "Length (m)"; parameter Real m = 0.8 "Mass (kg)"; parameter Real d = 0.4 "Damping"; constant Real g = 9.81 "Gravity"; Real theta(start = 0.6, fixed = true) "Angle"; Real omega(start = 0, fixed = true) "Velocity"; equation der(theta) = omega; m*L^2*der(omega) = -m*g*L*sin(theta) - d*omega; end Pendulum;
model RlcCircuit "Series RLC, sine drive" import Modelica.Electrical.Analog.*; Sources.SineVoltage V(V = 10, f = 50); Basic.Resistor R(R = 5); Basic.Inductor L(L = 0.02); Basic.Capacitor C(C = 200e-6); Basic.Ground g; equation connect(V.p, R.p); connect(R.n, L.p); connect(L.n, C.p); connect(C.n, V.n); connect(V.n, g.p); end RlcCircuit;
ResultsDiagram
theta theta · previous run
i (A)
AI chat
You
add damping to the pendulum
SpiralSim
Added viscous damping d = 0.4 N·m·s/rad and reran — the swing now decays within about 8 seconds.
Applied to Pendulum.mo
You
add an inductor and a capacitor to make it an RLC filter
SpiralSim
Proposed: L 20 mH and C 200 µF in series after R, closing the loop back to the source. Shown in green on the diagram.
Applied to RlcCircuit.mo
check: oksimulate: ok · 0.8 s · 2,401 points Modelica 4.0.0 · OpenModelica 1.26
What it does
check simulate FMU
RlcCircuit.fmu · 148 kB · fmi 2.0 co-simulation

OpenModelica core

A real OpenModelica does the compiling and solving, not a reimplementation. If it runs in OMEdit, it runs here.

condenser
Modelica.Fluid.Examples.HeatExchanger
YourLib.Process.CondenserStage
Modelica.Thermal.FluidHeatFlow.Pipes

A library-aware AI

The chat searches every loaded library and reads its docs. Nothing it writes lands in your model without passing a check first.

e7c91f2raise stack pressure to 30 barmain
a41f2c3add stack thermal model
9be07d1tune damping to 0.4
55d0e1afirst pendulum sketch

Workspaces are git repos

Models stay plain .mo files with real commit history. Push to your own remote whenever you like.

Pendulum0.8 s · just now
RlcCircuit0.3 s · 2 min ago
StackThermal4.1 s · yesterday

Runs are records

Every run keeps its parameters, log, and result. Each one has a URL a colleague can open.

No UI required
curl -s https://sim.example.com/api/simulate \
  -H "content-type: application/json" \
  -d '{"model": "RlcCircuit", "sim": {"stopTime": 0.08}}'
{"ok": true, "model": "RlcCircuit", "vars": ["V.i", "R.i", "C.v", "L.i"],
 "trajectories": {"time": [0, 8e-4, …], "R.i": [0, 0.031, …]}, "job_id": "f83d74a0"}

The UI is just a client for an HTTP API, and the API is yours to use. Drive it from CI or a notebook. There is an MCP server too, if you want to put an agent on it.

Questions

Is it really OpenModelica?

Yes. An unmodified OpenModelica 1.26 does the compiling and solving. SpiralSim is the environment around it, not a fork.

Can I use my own libraries?

The Modelica Standard Library is loaded for everyone. Your own libraries, open or proprietary, mount per workspace, and the AI can read whichever ones you can.

What happens to my models?

They live as .mo files in your workspace's git repository. Clone it, push it to your own remote, take everything with you.

We built SpiralSim at Spiral Hydrogen because we needed it ourselves. Our electrolyzer models run through it every day.