Installation
Requirements
- Python
>=3.12 - A working C++ toolchain
- At least one planner for encoder use:
pymimir>=0.13.60orpytyr==0.0.34 - Conan 2 (for source builds via
configure.py) - Optional for PyG conversion:
torchandtorch-geometric
Install From PyPI
Choose one planner or install both for same-process interoperability:
python -m pip install "mifrost[pymimir]"
python -m pip install "mifrost[pytyr]"
python -m pip install "mifrost[backends]"
The base package contains the planner-neutral API. Planner extras are optional; installing one does not install the other.
Install From Source
Minimal
git clone https://github.com/maichmueller/mifrost.git
cd mifrost
MIFROST_BUILD_BACKENDS=pytyr python -m pip install ".[pytyr]"
MIFROST_BUILD_BACKENDS accepts core, pymimir, pytyr, or both.
Reduced builds omit the unused native adapter entirely. Package builds default
to both; runtime extras still determine which planners are installed.
Recommended (explicit configure/build)
git clone https://github.com/maichmueller/mifrost.git
cd mifrost
python configure.py --mode local-release
python cbuild.py --mode local-release
Alternative: CMake Presets
cmake --preset local-release
cmake --build build/local-release
In CLion, use local-release / local-debug. If CMake does not auto-detect
the intended Python environment, set
Python_EXECUTABLE=/path/to/env/bin/python in the profile's CMake cache
variables.
With Benchmarks Enabled
git clone https://github.com/maichmueller/mifrost.git
cd mifrost
python configure.py --mode bench
python cbuild.py --mode bench
If conan is not on PATH, pass it explicitly:
python configure.py --config Release --conan_cmd /path/to/conan
If a selected planner cannot be found, use its package-provided CMake prefix:
export CMAKE_PREFIX_PATH="$(python -c 'import pymimir; print(pymimir.get_cmake_dir())'):${CMAKE_PREFIX_PATH:-}"
export CMAKE_PREFIX_PATH="$(python -c 'import pytyr; print(pytyr.cmake_prefix())'):${CMAKE_PREFIX_PATH:-}"
If you switch benchmark mode (--with_benchmarks on/off), use a fresh build directory or re-run configure.py with a clean build tree to avoid stale CMake cache settings.
Linux cibuildwheel (podman) with external Conan cache
export CIBW_CONTAINER_ENGINE=podman
export CIBW_CONTAINER_ENGINE_OPTIONS="--volume ${CONAN_HOME_HOST:?set CONAN_HOME_HOST}:/conan_home"
export CIBW_ENVIRONMENT="CONAN_HOME=/conan_home CONAN_NON_INTERACTIVE=1"
export CIBW_BEFORE_BUILD_LINUX="rm -rf /project/build && python -m pip install conan"
Editable Development Install
export MIFROST_BUILD_BACKENDS=both
python -m pip install --no-build-isolation \
--config-settings=editable.rebuild=true \
-Cbuild-dir=build_editable \
-e .
Reusable C++ SDK from an installed package
Installed wheels expose the native SDK alongside the Python package:
python -c 'import mifrost; print(mifrost.get_include_dir())'
python -c 'import mifrost; print(mifrost.get_cmake_dir())'
python -c 'import mifrost; print(mifrost.get_library_dir())'
For downstream CMake projects, either prepend mifrost.get_cmake_dir() to
CMAKE_PREFIX_PATH or pass -Dmifrost_DIR="$(python -c 'import mifrost; print(mifrost.get_cmake_dir())')".
For a C++-only SDK, disable Python independently of the selected adapters:
cmake -S . -B build/native -DMIFROST_BUILD_PYTHON=OFF \
-DMIFROST_BUILD_PYMIMIR_ADAPTER=OFF \
-DMIFROST_BUILD_PYTYR_ADAPTER=ON
cmake --build build/native
cmake --install build/native --prefix /path/to/mifrost-sdk
An installed PyTyr adapter first looks for planner libraries in the wheel-style
sibling layout. Standalone SDK consumers can instead set
MIFROST_PYTYR_NATIVE_PREFIX, MIFROST_PYYGGDRASIL_NATIVE_PREFIX, and
MIFROST_PYPDDL_NATIVE_PREFIX in their CMake cache (or the corresponding
environment variables without the MIFROST_ prefix).