
Jaxonomy — hybrid dynamical systems on JAX
io.github.machinavitalis由 GitHub 帳號 machinavitalis 發布v3.4.1更新於 Oct 27, 2026
Build, simulate and calibrate JAX block-diagram models of hybrid dynamical systems.
概覽
把 Jaxonomy 的 JAX 模擬引擎包裝成工具,讓助理能建立、驗證、模擬、擬合與線性化混合動力系統模型。
- 可以做什麼
- 列出可用於建模的內建函式庫區塊
- 建立並驗證混合動力系統的方塊圖模型
- 執行模擬並回傳結果訊號供助理分析
- 將模型參數擬合到資料,並對系統做線性化
- 把模擬結果交回助理,使其依據實際輸出進行推理
- 適用情境
- 當你透過 Claude Desktop、Claude Code 或 Cursor 等 AI 代理驅動 Jaxonomy,並希望代理自行建立與執行模型時使用。若你手寫 Python 程式碼,直接安裝該套件即可,不需要此伺服器。
- 執行需求
- 以本機 stdio 程序在使用者電腦上執行(僅限桌面端)。需要 Python 3.10 以上,並安裝含 MCP 額外元件的 jaxonomy 套件,透過模組進入點或 jaxonomy-mcp 進入點、使用已安裝該套件的解譯器啟動。未宣告驗證、環境變數或標頭。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Jaxonomy — hybrid dynamical systems on JAX,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Jaxonomy
Differentiable simulation of hybrid dynamical systems — powered by JAX.
[PyPI] [Python 3.10+] [License: MIT] [Docs]
Block diagrams meet automatic differentiation. Model physical systems, close the loop with LQR/MPC/Kalman, and differentiate through everything.
Why JAX? · Install · Quick Start · Gallery · Examples · Docs
Every panel above is produced by jaxonomy.simulate on a model built from the library.
What is Jaxonomy?
Jaxonomy is a Python framework for modeling, simulating, and optimizing hybrid dynamical systems — systems that combine continuous physics, discrete control laws, and event-driven logic in a single model. Every simulation runs on JAX, so it is JIT-compilable, batchable with vmap, and fully differentiable from end to end.
🔥 Why JAX?
Choosing JAX as the compute backbone unlocks capabilities that are impractical with NumPy-based simulators:
¹ Simulink + Simscape + Stateflow + Control System Toolbox · ² Via Simulink Design Optimization, no end-to-end AD
⚡ Key Capabilities
📦 Installation
Requires Python 3.10+.
From source:
CLI runner:
🚀 Quick Start
A first simulation in a few lines — a custom block, built into a diagram, integrated through its ODE:
📚 Documentation
- Online docs & tutorials: py.jaxonomy.com
- Local docs:
- Example notebooks:
docs/examples/ - Scope notes: PINNs & PDE surrogates — classical PDE PINNs are out of scope; physics-informed dynamics learning (UDE / Neural DAE / Neural ODE / SINDy) is core.
🤖 Driving Jaxonomy from an AI agent (MCP)
Jaxonomy ships an MCP server that exposes the
engine as tools an AI agent can call directly — it can enumerate library blocks,
build and validate a model, run a simulation, fit parameters to data, and
linearize a system, then reason over the actual results. This is worth wiring up
if you drive Jaxonomy from an agent (Claude Desktop/Code, Cursor, …); if you're
writing Python by hand, the pip install above is all you need and you can skip
this.
Then register the server with your agent client. For Claude Desktop, add to
claude_desktop_config.json:
Use the interpreter where jaxonomy[mcp] is installed (or the jaxonomy-mcp
entry point). The server is listed in the
MCP Registry as
io.github.machinavitalis/jaxonomy; full tool reference, client configuration
and limitations are at py.jaxonomy.com/mcp.
If you'd rather just point an agent at the documentation, start it on
SKILL.md — when to use Jaxonomy, when to reach for something else,
the core API, and the pitfalls that most often break a first script. The docs
site also publishes llms.txt views:
py.jaxonomy.com/llms.txt for an index of
every page, and
py.jaxonomy.com/llms-full.txt for the
whole documentation set as one Markdown file.
📖 Examples
1 · Hybrid Dynamics: The Bouncing Ball
Jaxonomy is designed for hybrid systems — models where continuous physics interacts with instantaneous discrete resets. The bouncing ball is the canonical example: free-fall ODE interrupted by a collision event that reverses velocity.
Governing equations
The dynamics between bounces follow:
$$ \dot{x} = v, \qquad \dot{v} = -g $$
When the ball hits the ground ($x = 0$, $v < 0$) a zero-crossing event fires and the state resets:
$$ x^+ = 0, \qquad v^+ = -e \cdot v \quad (e \in [0, 1] \text{ — coefficient of restitution}) $$
Zero-crossing events are located with 40-step bisection on the solver's dense output polynomial — giving sub-microsecond temporal accuracy without user-specified tolerances.
2 · Optimal Control: LQR Pendulum
For a linearized pendulum with state $x = [\theta, \dot\theta]^\top$:
$$ \dot{x} = Ax + Bu, \qquad A = \begin{bmatrix} 0 & 1 \ g/L & 0 \end{bmatrix}, \quad B = \begin{bmatrix} 0 \ 1/mL^2 \end{bmatrix} $$
The Linear Quadratic Regulator minimizes infinite-horizon cost:
$$ J = \int_0^\infty \bigl( x^\top Q, x + u^\top R, u \bigr), dt $$
by solving the algebraic Riccati equation $A^\top P + PA - PBR^{-1}B^\top P + Q = 0$ for the optimal gain $K = R^{-1}B^\top P$, so $u^* = -Kx$.
3 · Differentiable Parameter Identification
Jaxonomy can differentiate through complete simulations to fit model parameters to data — no finite-difference approximations, no hand-written adjoint code. Here we recover a spring–damper's stiffness and damping by differentiating the whole rollout and descending with Optax:
jax.grad(loss) flows back through every ODE step automatically, so the same recipe scales to battery ECMs (above), powertrains, or any parametric model — and jaxonomy.optimization wraps it in a higher-level Optimizable API when you want bounds, transforms, and constraints.
4 · Acausal Physical Modeling
Jaxonomy includes a Modelica-inspired acausal modeling layer for multi-domain physical systems. You describe component connections symbolically; the compiler automatically derives the governing DAE, reduces its index, and emits a LeafSystem ready to drop into any diagram.
RC circuit with initial conditions:
$$ C,\dot{V}C = I, \qquad V_C(0) = 0,\text{V}, \qquad V{\text{src}} = 1,\text{V} $$
The same pipeline handles multi-domain systems — an electro-mechanical actuator connecting electrical, rotational, and translational domains compiles to a single optimized system.
Available acausal domains: electrical · rotational · translational · thermal · fluid
5 · Differentiable Sensitivity & Batch Simulation
Because jax.grad, jax.jit, and jax.vmap all compose with simulate, you get powerful workflows with minimal boilerplate:
🧩 Library Overview
Over 150 built-in blocks covering the full signal-processing and control toolkit. A representative slice — not exhaustive:
Custom blocks are first-class beyond the wrappers above: subclass LeafSystem, declare ports and states, and your block integrates with the full framework including JIT, autodiff, and event detection.
🏗️ System Architecture
A Jaxonomy model is a Diagram — a directed graph of interconnected blocks. Blocks (LeafSystem) declare ports, continuous/discrete states, and event guards. The simulator orchestrates ODE integration, discrete updates, and event detection automatically.
The JAX backend sits underneath every simulation, giving you a clean Python API backed by XLA compilation:
The Jaxonomy stack
Jaxonomy is the engine at the base of a three-package stack. Each package is its own repository, MIT-licensed, and depends only on the package(s) above it:
- Jaxonomy — this package. The general-purpose, JAX-native simulation engine for hybrid dynamical systems. Not robotics-specific; depends on nothing else in the stack.
- Jaxterity — the robotics layer built on top of Jaxonomy: URDF/MJCF import, MJX-backed articulated dynamics, calibrated actuators/sensors, system identification, and whole-body control. Imports Jaxonomy; never re-implements its primitives.
- Jaxility — the deployment artifact factory: compiles a calibrated robot to embedded C for Arm SoCs (Cortex-A / Cortex-M) with a signed attestation manifest. Consumes Jaxterity.
The boundary rule: anything useful to controls engineers outside robotics (HVAC, battery, aerospace, energy) belongs in Jaxonomy; anything specific to joints, actuators, contacts, and kinematic chains belongs in Jaxterity; embedded codegen, targets, and attestation belong in Jaxility.
What Jaxonomy does not yet do (or does only partially) is tracked in
KNOWN_GAPS.md — the public inverse of the internal evidence
ledger in CLAIMS.md.
License
Released under the MIT License from version 2.2.0 onward.
Derived from the MIT-licensed open-source package pycollimator by Collimator, Inc.
來源:README.md,提交 f615a73
工具
0版本歷史
1- v3.4.1最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分