Presenting the BMI Controller

Since we’ve created RemoteBMI I have wanted to create a front-end for BMI-enabled models. With help from Claude Code I can finally present the BMI Controller, a javascript front-end connecting to the RemoteBMI API.

When connecting to the Python BMI Heat example, the interface looks like this;

And with a more realistic example (Wflow.jl), it can look like the following;

I’m sure there are still some bugs and improvements to be made, but I do think it’s a very nice tool already to play with models.


For the current setup you need;

  • a bmi enabled model, hosted with RemoteBMI [1]
  • the BMI Controller, started using the instructions on the readme.

To use:

  • start the BMI Controller
  • start the RemoteBMI instance (using the default path)
  • pass the path to a valid config relative to the directory you started RemoteBMI in

[1] note that the Python version needs this fix, and a bug has been identified with the R version we need to fix still.

Sadly I don’t have more time to work on this now, but I’m hoping this tech demo can help with being able to make time for this in the future.

The current interface is very generic (should support any BMI enabled model), but it would also be possible to make a model-specific interface using the BMI Controller as a starting point.