Install & Compatibility
Where this runs
tested against v1.1.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
py 3.10
✕ build_error
✓ 10.43s
py 3.11
✕ build_error
✓ 10.08s
py 3.12
✕ build_error
✓ 10.15s
py 3.13
✕ build_error
✓ 10.08s
py 3.9
✕ build_error
✕ build_error
290MB installed
● package 290MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
Configuration
✓ from mink import Configuration
KinematicTask
✓ from mink import KinematicTask
JointLimitTask
✓ from mink import JointLimitTask
solve_ik
✓ from mink import solve_ik
build_ik
✓ from mink import build_ik
This quickstart demonstrates how to set up a minimal MuJoCo model, define a `Configuration` object, create a `KinematicTask` to reach a target position for a specified body, and use `solve_ik` to find the joint angles. It then updates the MuJoCo data and prints the resulting end-effector position.
import mujoco
from mink import Configuration, KinematicTask, solve_ik
import numpy as np
# Create a very simple MuJoCo model for demonstration
model_xml = """
<mujoco>
<worldbody>
<body name="link0" pos="0 0 0.1">
<joint name="joint0" type="hinge" axis="0 0 1" pos="0 0 0" />
<geom type="capsule" size="0.05 0.1" fromto="0 0 0 0 0 0.1" />
<body name="link1" pos="0 0 0.1">
<joint name="joint1" type="hinge" axis="0 1 0" pos="0 0 0" />
<geom type="capsule" size="0.05 0.1" fromto="0 0 0 0 0 0.1" />
<body name="tip" pos="0 0 0.1">
<geom type="sphere" size="0.02" rgba="1 0 0 1"/>
</body>
</body>
</body>
</worldbody>
</mujoco>
"""
model = mujoco.MjModel.from_xml_string(model_xml)
data = mujoco.MjData(model)
# Instantiate the configuration wrapper
config = Configuration(model, data)
# Define a kinematic task to reach a target position for the 'tip' body
target_position = np.array([0.0, 0.1, 0.3]) # Target in world coordinates
tasks = [
KinematicTask(
config=config,
body="tip", # Target the 'tip' body defined in the XML
target_pos=target_position,
weight=1.0,
)
]
# Solve Inverse Kinematics
q_sol, sol = solve_ik(tasks, config)
print(f"IK Solution (joint angles): {q_sol}")
# Update MuJoCo data with the solution to get the final tip position
config.set_joint_positions(q_sol)
mujoco.mj_fwdKin(model, data)
print(f"Final end-effector position: {config.get_body_position('tip')}")
Debug
Known issues
breakingmink v1.0.0 dropped support for Python 3.8.fixEnsure your Python environment is version 3.9 or higher when using mink v1.0.0 or newer.
affects: >=1.0.0
gotchamink relies on MuJoCo, which requires both the Python `mujoco` package and the native MuJoCo library to be installed and properly configured.fixInstall the `mujoco` Python package (`pip install mujoco`) and follow the official MuJoCo documentation for setting up the native libraries and environment variables (e.g., `LD_LIBRARY_PATH` on Linux).
affects: All versions
gotchaThe license of mink changed from GPL to MIT due to a dependency switch from `quadprog` to `DAQP`.fixFor projects requiring a permissive license, ensure you are using mink version 0.0.8 or newer. Be aware that versions prior to 0.0.8 inherited the GPL license from `quadprog`.
affects: <0.0.8 (GPL), >=0.0.8 (MIT)
gotchaThe `solve_ik` function can now raise a `mink.exceptions.NoSolutionFound` error if the QP solver fails to find a solution.fixCatch `mink.exceptions.NoSolutionFound` and handle scenarios where the target might be unreachable, joint limits are too restrictive, or other constraints prevent a solution. Review your task weights and robot's workspace.
affects: >=0.0.12
gotchaIssues with `Configuration.get_inertia_matrix()` were fixed for MuJoCo versions 3.3.4 and above.fixIf you are using MuJoCo 3.3.4 or newer and encounter issues with inertia matrix calculations, upgrade `mink` to version 0.0.12 or later.
affects: <0.0.12 (with MuJoCo >= 3.3.4)
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'mujoco'
The `mujoco` Python package or its native libraries are not installed or configured correctly.
fixRun `pip install mujoco` and ensure your system's MuJoCo native libraries are set up according to the official MuJoCo documentation (e.g., environment variables like `LD_LIBRARY_PATH` on Linux).
RuntimeError: Python 3.8 is no longer supported by mink.
You are attempting to use `mink` version 1.0.0 or newer with an unsupported Python 3.8 environment.
fixUpgrade your Python environment to version 3.9 or higher. For example, use `conda create -n myenv python=3.9` or similar.
mink.exceptions.NoSolutionFound: No solution found for the given tasks.
The inverse kinematics solver could not find a valid set of joint angles to satisfy all target tasks, often due to an unreachable target, conflicting constraints, or joint limits.
fixReview your target position/orientation, task weights, and robot's joint limits. Ensure the target is within the robot's reachable workspace. Consider adjusting weights or adding other tasks like `JointLimitTask` or `CollisionAvoidanceTask`.
AttributeError: module 'mink' has no attribute 'KinematicTask'
You are trying to import a class or function from `mink` using an incorrect path or the symbol might have been renamed/moved in an older version.
fixEnsure you are using the correct import statement as shown in the quickstart: `from mink import Configuration, KinematicTask, solve_ik`. Most commonly used classes are exposed directly in the top-level `mink` package.
Upgrade
Version history
1.1.1latest on PyPI · released May 15, 2026
Audit
Dependencies
mujocorequiredCore physics and robotics simulator used by mink. Requires native MuJoCo libraries.
numpyrequiredFundamental package for numerical operations.
scipyrequiredScientific computing library, potentially used for optimization or spatial transformations.
daqprequiredQuadratic Programming (QP) solver used internally for IK optimization.
tqdmoptionalOptional progress bar for iterations.