Why another framework
Large engines such as Chrono, Exudyn and Simbody are the right choice for broad multiphysics, large contact stacks or production vehicle simulation. MBSD's niche is smaller: a mechanism-first API, readable Python source, direct NumPy/SciPy integration and examples that expose the math. Think of it as a “PySpice for mechanisms”, a compact declarative layer over a solver kernel that stays close enough to the equations to inspect and change.
Validation first
Every solve can be checked: constraint residuals across a trajectory, explicit assertions that fail loudly, Jacobian rank and rank-based degrees of freedom, and per-configuration classification as fully constrained, underconstrained, overconstrained or rank-deficient. Dynamics results record their integration method, tolerances and stabilisation settings, so a result file says how it was produced.
Scope, honestly
The stable solver API covers 2D planar mechanisms. The mbsd.spatial namespace provides an experimental 3D vocabulary with pose transforms, point velocities and joint residuals, but no general 3D solver yet. Forward dynamics currently require each body's reference point to coincide with its centre of mass, and models that need the missing terms raise a clear error rather than a wrong answer.
Install
git clone https://github.com/JAlcocerT/mbsd-core.git
cd mbsd-core
git checkout v0.7.0
uv sync --extra dev
uv run pytest -q
Then try a slider-crank or a four-bar. Each tool page shows the equivalent MBSD script.