Time for MultiBodySystemsDynamics (dot) com

Time for MultiBodySystemsDynamics (dot) com

September 5, 2026

Tl;DR

Intro

Some people are were billing 50$/h and paying 5$/h for such expertise.

Now its OSS and thats fine.

Because ideas are worthless and execution is everything

Executing with CC 📌

Claude Code - Start with this agentic coding assistant that runs in your terminal

Computer Use - Explore this set of tools that lets Claude interact with desktop applications

Agents - Understand what makes these applications successful as agents

Claude Code has access to generic, flexible tools like:

bash - Run any command read - Read any file write - Create any file edit - Modify files glob - Find files grep - Search file contents

It notably doesn’t have specialized tools like “refactor code” or “install dependencies.” Instead, Claude figures out how to use the basic tools to accomplish these complex tasks. This abstraction allows it to handle countless programming scenarios that the developers never explicitly planned for.

claude 
#/goal work until my webaudit framework returns a 100%
#/goal clear

Use workflows when you can picture the exact flow or steps that Claude should go through to solve a problem, or when your app’s UX constrains users to a set of tasks Use agents when you’re not sure exactly what task or task parameters you’ll give to Claude

Managed Policy > User > Project > Local

Use Claude.md for conventions skills for procedures tied to tasks and Hooks for rules that cant be skipped

A skill isn’t just a single skill.md file. The folder around it can carry other things, and this is what makes skills powerful for verification.

Drop a reference.md next to the skill for detailed material, then link to it from skill.md. Claude only reads it when it actually needs that depth. Your main file stays short. Put scripts in the folder too. Claude executes them rather than loading their contents into context. That means a skill can carry its own tooling, like a check.sh that runs all the gates.

The takeaway: keep skill.md itself lean. Push the heavy material, the long explanations and the executable scripts, into side files. The lean file describes what to do; the side files hold the depth and the tools.

With this one:

/schedule daily audit for blabla at 9am #this runs at anthropic servers
#/routine #routine can runs on Anthropic infrastructure on a cron trigger
claude -p "summarize the changes in this diff"

Get a cold second opinion

The sub-agent code review you’d run before a pull request works here too. Point it at an unsupervised run.

Open a fresh session or sub-agent and have it review the changed code with no memory of how the code was built. Because it has no stake in the approach, it catches the things the original run talked itself past. A second reviewer with fresh eyes finds what the author rationalized away.

PLUGINS are how CC packages a setup and moves it between ppl https://agent-plugins.org/

#these execute code with your user permissions, be careful
/plugin install #marketplace add abc/def

alt text

Executing with CC 📌

Intro

  • Why Im writting this post: Bc The engine behind https://multibodysystemsdynamics.com/ cant be closed source.
  • What Ive learnt with it: Ive ended

From the wedding conversation with Gilabert, my last mbsd post with the framework launch and inspired by diode Inc.

We are coming from this agentic mbsd centered design post:

make list-user-repos NEW_USER=hermesagent
make tinker-to-github #https://github.com/JAlcocerT/hermesagent/tree/tinker/hermesagent/mbsd

Current behavior in scripts/tinker-to-github.sh:1:

  • it clones each Forgejo repo as a mirror
  • then it pushes only HEAD to one GitHub branch:
    • refs/heads///

So for hermesagent/mbsd:

  • if it has 1 branch, that one branch is what gets exported
  • if it has 2 or more branches, only the repo’s current HEAD branch is sent
  • the other branches are not sent

alt text

I have in this folder a multi body system dynamics repository with quite a lot of tinkering pushed to my local forgejo instance at the homelab with the user hermesagent via ssh, what do you think about this?

oss-core-2d - http://192.168.1.2:3034/hermesagent/mbsd/src/branch/oss-core-2d

Yes. The intended meaning is:

  • oss-core-2d / v0.1: clean 2D core
  • oss-0.2-plotting: 2D core + plotting/gallery
  • oss-0.3-synthesis: previous + 2D synthesis helpers
  • oss-0.4-export: previous + export/CAD hooks
  • oss-0.5-3d-experimental: previous + experimental 3D API

So 0.5 should include all earlier 2D functionality plus the first public 3D namespace.

PWA coming up as subdomain: http://192.168.1.2:3034/hermesagent/mbsd/src/branch/oss-core-2d/web

Showcase - Engine Vibrations

Say that you can to simulate a new engine type:

git clone 

Inline

V

W

Yep, these can get 20L displacement and require a huge power spike to get started.

Rotatory

The Web x Leads

Inspired by diode inc, i decided to make the core engine OSS.

The landing and the leads are mine :)


Conclusions

Lately Ive seen many people in charge of noisy roadmaps or release plans.

Not sure whats the excuse to make a clear: planned / next / released.

Recommended release order:

  1. Push mbsd-core/main; confirm CI.
  2. Push core v0.3.0; create GitHub release.
  3. Push mbsd-examples/main; confirm CI.
  4. Push examples v0.3.0; create GitHub release.
  5. Update the website/docs, as specified in the roadmap.

There are some useful gh clis to keep the release order:

cd /home/jalcocert/Desktop/mbsd-framework/mbsd-core
git push origin main
git push origin v0.3.0

Then:

cd /home/jalcocert/Desktop/mbsd-framework/mbsd-examples
git push origin main
git push origin v0.3.0
cd /home/jalcocert/Desktop/mbsd-framework/mbsd-core
git add readme.md
git commit -m "Fix release README links"
git tag -fa v0.3.0 -m "v0.3.0"
git push origin main
git push origin v0.3.0

#Wait for core CI, then:

cd /home/jalcocert/Desktop/mbsd-framework/mbsd-examples
git add README.md
git commit -m "Clarify relationship to MBSD Core"
git tag -fa v0.3.0 -m "v0.3.0"
git push origin main
git push origin v0.3.0

What is already strong: narrow scope, honest limitations, MIT license, changelogs, paired versions, reproducible examples, numerical checks, CI across Python 3.10–3.13, and a clear roadmap. That is a solid first OSS framework foundation.

See mbsd-examples/docs/release-plan.md:73

New ladder:

0.4.0: export schema and CAD handoff bridge 0.5.0: experimental 3D model vocabulary 0.6.0: 2D solver hardening and API maturity 0.7.0: 3D kinematics preview 0.8.0: 3D dynamics preview 0.9.0: integration and case-study track 0.9.1+: additional curated examples, integrations, and case studies

0.4.0 -> portable exports 0.5.0 -> 3D vocabulary 0.6.0 -> stronger 2D foundation 0.7.0 -> 3D kinematics preview 0.8.0 -> limited 3D dynamics preview 0.9.x -> integrations, case studies, validation stories 1.0.0 -> stable public API and honest capability boundary

mbsd-core branch stack:

v0.4.0-dev 1c0c45d export schema dev v0.5.0-dev dc194b3 spatial vocabulary dev (3D) v0.6.0-dev ebd2008 diagnostics dev v0.7.0-dev 42f559b spatial kinematics dev v0.8.0-dev 14eb993 spatial dynamics dev

mbsd-examples branch stack:

v0.4.0-dev d90a8a7 export handoff example v0.5.0-dev 1be3c09 spatial vocabulary example v0.6.0-dev 801da5a diagnostics panel example v0.7.0-dev 9850fbb spatial kinematics preview example v0.8.0-dev 924442d spatial dynamics preview example

What’s included locally:

  • 0.4: JSON/CSV export surface for PWA/CAD handoff.
  • 0.5: experimental 3D vocabulary: poses, quaternions, bodies, frames, model payloads.
  • 0.6: PWA-friendly 2D configuration diagnostics.
  • 0.7: experimental 3D point kinematics and spherical-joint residuals.
  • 0.8: limited experimental 3D free-body dynamics preview.

Local-only v0.8.2-dev is ready in both repos.

mbsd-core:

  • Branch: v0.8.2-dev
  • Commit: b3d24ff Prepare v0.8.2 spatial dynamics solver dev
  • Version: 0.8.2.dev0
  • Added:
    • SpatialMechanism.simulate(…)
    • SpatialDynamicsResult
    • translational mass dynamics
    • fixed-orientation spatial dynamics
    • force inputs
    • finite-difference translational constraint Jacobians
    • Lagrange multiplier acceleration solve
    • position/velocity projection back onto constraints
    • dynamic-result JSON export via result_to_dict() / result_to_json()

mbsd-examples:

  • Branch: v0.8.2-dev
  • Commit: 254a43e Prepare v0.8.2 spatial dynamics solver examples dev
  • Version: 0.8.2.dev0
  • Added:
    • examples/spatial_dynamics_solver_preview.py
    • generated local artifact:
      • artifacts/spatial/spatial-dynamic-result.json

Verification:

  • Core: 36 passed, examples ran, Ruff clean.
  • Examples: 27 passed, all examples ran, gallery generated, Ruff clean.

I also updated the private PWA roadmap at:

private-pwa-roadmap.md

Important caveat remains: this is a limited translational constrained spatial dynamics solver with fixed orientations. It is useful for a PWA 3D lab/prototype, but still not full rotational constrained 3D rigid-body dynamics.

My Recommendation

For the private PWA: use v0.8.2-dev now.

For public OSS: do not publish this as a headline until later. I’d place it in:

v0.9.0: experimental spatial dynamics preview

Then keep v0.8.0 focused on:

v0.8.0: Mechanism.spatial() and constrained 3D kinematics preview

That gives you a cleaner story:

0.7.0: spatial vocabulary and point kinematics 0.8.0: spatial mechanism API and constrained kinematics 0.9.0: experimental spatial dynamics and case-study integrations

  • multibodysystemsdynamics.com - Landing
  • app.multibodysystemsdynamics.com - PWA
  • multibodysystemsdynamics.com/roadmap
  • multibodysystemsdynamics.com/whitepaper

Compliant Mechanism

Dynamics is trickier when solids are flexible – aka when we stop saying that they are infinitely rigid.


FAQ

As long as you do not push the branch or tag, it stays only on your machine.

Local-only means:

git switch -c v0.4.0-dev

No v0.4.0 tag was created, and neither dev branch has an upstream.

GitHub will not see them unless you explicitly push them.

For the v0.3.0 release, remember to switch back to main before pushing:

cd /home/jalcocert/Desktop/mbsd-framework/mbsd-core
git switch main
git push origin main
git push origin v0.3.0

cd /home/jalcocert/Desktop/mbsd-framework/mbsd-examples
git switch main
git push origin main
git push origin v0.3.0

See /home/jalcocert/Desktop/mbsd-framework/mbsd-examples/docs/release-plan.md

gh release create v0.3.0 \
  --repo JAlcocerT/mbsd-examples \
  --title "MBSD Examples v0.3.0 - Week 3 Examples" \
  --notes-file CHANGELOG.md

For v0.4.0, I’d define this as: MBSD can write mechanism and result data into clean external formats that other tools can consume.

Not “MBSD becomes a CAD tool.”

Good 0.4.0 scope:

  • Export mechanism topology:

  • bodies

  • joints

  • drives

  • springs/forces where simple

  • metadata/units

  • Export solved trajectories:

  • time array

  • body poses: x, y, theta

  • optional point traces

  • constraint residual summaries

  • Add a stable JSON format:

  • mechanism.to_dict()

  • mechanism.to_json(path)

  • maybe result_to_dict(result)

  • maybe export_trajectory_csv(…)

  • Examples repo:

  • one JSON export example

  • one CSV trajectory export example

  • one “CAD handoff” example showing how exported points could become CAD/sketch data

The CAD bridge should probably be data-first:

mbsd-core -> JSON / CSV / simple neutral data examples -> show FreeCAD / Blender / CADQuery-style handoff later

I would avoid adding FreeCAD, CadQuery, Blender, or STEP export as core dependencies in v0.4.0.

3D Track

For v0.5.0, I’d treat this as the first experimental 3D branch of the framework.

Not “full production 3D multibody dynamics.”

Good 0.5.0 scope:

  • Add experimental 3D namespace, maybe:

from mbsd.experimental import spatial

or:

import mbsd.spatial

  • Define basic 3D concepts:

    • body pose
    • rotation representation
    • mass/inertia placeholder
    • simple joints sketch
    • coordinate conventions
  • Provide one or two examples:

    • free rigid body pose representation
    • simple pendulum-like spatial setup
    • maybe visualization/export only, not dynamics yet
  • Keep it clearly labeled experimental:

    • API may change
    • not equivalent to planar solver yet
    • no broad contact/collision/multiphysics claims

The useful split is:

v0.4.0: make 2D results portable v0.5.0: start a careful 3D model vocabulary

That sequence is good because exports will also help the 3D story later.

Cool Builder Channels

Paillard fan

Omarchy

Some more omarchy

  • https://omarchy.org/
  • https://tryomarchy.com/

The name Omarchy is a portmanteau of “Omakase” and “Arch”:

  • Omakase (お任せ): A Japanese dining concept meaning “I leave it up to you”. In an omakase meal, you don’t order individual items; the chef curates and prepares the entire progression of dishes based on what is best.
  • Arch: Refers to Arch Linux, the lightweight, rolling-release distribution that forms the base of the operating system.

This brings docker, lazydocker, herdrd, lazygit installed by default :)

Run this to lower the VM to 4 GB RAM and 2 CPUs: You can get started using 1.2GB of RAM and I could tinker with <4GB

virsh --connect qemu:///session shutdown omarchy-4.0.1 2>/dev/null || true

virsh --connect qemu:///session setmaxmem omarchy-4.0.1 4096M --config
virsh --connect qemu:///session setmem omarchy-4.0.1 4096M --config
virsh --connect qemu:///session setvcpus omarchy-4.0.1 2 --config

virsh --connect qemu:///session start omarchy-4.0.1
gnome-boxes

If Boxes still acts weird, open the same running VM with:

virt-viewer --connect qemu:///session --attach omarchy-4.0.1

I send some goodies via:

  ssh -p 2022 dhh@127.0.0.1 \
    'umask 077; mkdir -p ~/Desktop; cat > ~/Desktop/.env; stat -c "%a %s %n" ~/Desktop/.env' \
    < /home/jalcocert/Desktop/JAlcocerT/.env
#  cat ~/Desktop/.env | grep '^OPENAI_API_KEY='

Now just add whatever programs you use beyond the browser:

omarchy pkg add bitwarden gram proton-vpn-gtk-app #this flows from pacman repos, not AUR :)
yay -S helium-browser-bin #alternative chromium based
omarchy pkg add arduino-cli blender freecad
omarhcy install service tailscale
#omarchy bar position bottom #modifies the omarchy/shell.json

You can also connect your airpids via plugins: https://github.com/thisisgm/omarchy-pods

scp -P 2022 dhh@127.0.0.1:/home/dhh/Downloads/wiki-technitium.md /home/jalcocert/Desktop/

PWA Power

From /home/jalcocert/Desktop/mbsd-framework/mbsd-core-web-later

cd /home/jalcocert/Desktop/mbsd-framework/app-mbsd
make build
make preview
make deploy

Going to https://main.app-mbsd.pages.dev/

• The metadata confirms mbsd-core-web-later is explicitly a static PWA and uses Pyodide to run MBSD in- browser. I’ll also check which of these folders are actual git repos, since you asked “a repo.”

• Explored └ Search /node_modules/ in mbsd-core-web-later Read pyodide-runner.ts, main.ts Search .git in .

───────────────────────────────────────────────────────────────────────────────────────────────────────

• Yes: mbsd-core-web-later (mbsd-core-web-later/README.md:1).

It is explicitly described as a “Static PWA for trying MBSD planar mechanism examples in the browser.” It wraps MBSD via Pyodide, syncs the Python package into static assets, and builds with Vite using base: “./” for relative/static deployment.

Key files:

  • mbsd-core-web-later/README.md:1 - says it is the static PWA
  • mbsd-core-web-later/public/manifest.webmanifest:1 - PWA manifest
  • mbsd-core-web-later/public/sw.js:1 - service worker/cache
  • mbsd-core-web-later/src/pyodide-runner.ts:1 - loads Pyodide and mounts MBSD
  • mbsd-core-web-later/vite.config.ts:1 - relative static build config

One caveat: I did not find a .git directory inside mbsd-core-web-later, so it appears to be a project folder in this workspace, not currently a standalone git repo. The actual git repos I found include mbsd-core, mbsd-examples, local-mbsd, hermesagent-mbsd, mbsd, etc.

So the feature shape is clear for app-mbsd:

  1. Static Pyodide PWA.
  2. Run three initial planar demos.
  3. Show animation, plots, residuals, diagnostics.
  4. Export JSON/CSV.
  5. Cache runtime/assets for offline use.
  6. Keep app private and keep mbsd-core clean.

Solo Design

With Open Deesign, ofc.