ComposeBiology as code
Biosimulant is an open source framework for humans and agents to compose and run any biomodel, from Boltz, DiffDock, and SBML pathways to your own custom dynamics.
Why a framework
Biology has the models. It's missing the framework.
Biology has built up decades of mechanistic standards: SBML pathways, CellML cells, NeuroML neurons. Now AI models like Boltz-2 and DiffDock are arriving too. Getting any two to run together still means hand-writing custom Python for every connection. So only specialists can do it, and every project rebuilds the same plumbing.
inputs() · outputs() · advance_window()Without it: custom Python wiring for every pair of models.
Biotech, beyond the specialists
Today, simulation is gated behind one-off scripts and bespoke wiring. A real framework turns biology into a developer tool. If you can write Python, you can compose and run models, and the field opens to far more builders.
Built for the agent era
As coding agents take over more of the code layer, they need one consistent interface to build against. A shared contract across every standard lets agents compose and run biomodels they've never seen, without learning each format's quirks.
One contract. Any biology standard.
Three steps. Anything else that follows the same contract, an SBML pathway, a CellML cardiac cell, a NeuroML neuron, an ONNX inference module, your own ODEs, can plug straight into your model.
- Subclass
BioModule. - Declare
inputs()andoutputs()as named ports with units. - Implement
advance_window.
The runtime handles unit checks, time alignment, and signal delivery.
import biosimulant
class Tumor(biosimulant.BioModule):
"""A tumor that grows, shrinking under an incoming drug signal."""
def inputs(self):
return {"drug": biosimulant.SignalSpec.scalar()}
def outputs(self):
return {"cells": biosimulant.SignalSpec.scalar(emitted_unit="cells/mL")}
def advance_window(self, start, end):
... # net growth over [start, end], scaled by the drug signal
def get_outputs(self):
return self._outputs
world = biosimulant.BioWorld()
world.add_biomodule("tumor", Tumor())
world.add_biomodule("dose", Infusion()) # your code, SBML, CellML, ONNX...
world.connect("dose.drug", "tumor.drug")
world.run(duration=24.0)
One platform, three surfaces
An open simulation runtime, a workbench you can run anywhere, and a public hub of runnable labs.

Biosimulant Platform
The simulation workbench, on every surface.
The hosted platform built on the open-source biosimulant runtime. Compose labs, run sims, and compare results from your browser, your desktop, or your terminal. One platform, three ways in.
Open source runtime
The open source runtime that powers Biosimulant.
The MIT-licensed Python core of the platform. Compose biomodules into runnable worlds, locally, in CI, or anywhere Python runs.

Biosimulant Hub
A public catalog of runnable labs.
Discover, version, and publish labs across SBML, CellML, NeuroML, and more. The shared shelf for simulation work.
See Biosimulant in action
Four real labs, running in your browser.

Drug discovery
Predict how a drug binds, from text
Paste a protein sequence and a candidate drug. The model folds the protein, drops it into the right pocket, and scores how tightly they bind. A week of wet-lab work, in a single pass. The leap that made structure-based drug discovery practical.
Talk to us about your simulation workflow
Biosimulant Platform is for teams building reusable virtual simulations across research and engineering.
- Research teams building reusable virtual experiments instead of one-off simulations.
- Simulation groups that need inspectable workflows, reproducible runs, and shared review loops.
Contact
Start the conversation
Tell us what you are simulating, how your team works today, and where Biosimulant might fit.
Prefer the standalone page? Use the contact page.