Hi folks,
I’ve been working on porting Monty to run natively on linux-aarch64 (ARM64 Linux). No emulation, no Rosetta. This required upgrading from habitat-sim 0.2.2 / Python 3.8 to habitat-sim 0.3.3 / Python 3.12, plus updating the full dependency stack. I wanted to share what I have and see if there’s interest before opening a formal PR.
What exists today: two branches, across two repos:
1. habitat-sim: GitHub - cherron/habitat-sim at monty-compat-fixes · GitHub , based on v0.3.3. Adds linux-aarch64 build support and two bug fixes Monty needs:
- EGL context creation fix for non-CUDA systems (Mesa/llvmpipe)
- sim.reset() fix where API-added rigid objects became invisible after reset
2. tbp.monty — GitHub - cherron/tbp.monty at linux-aarch64 · GitHub , based on v0.27.0. Two commits covering:
- Dependency upgrades: Python ≥3.12, PyTorch ≥2.0, NumPy 2.x, scipy ≥1.14, scikit-learn ≥1.4, PyG 2.7
- habitat-sim 0.2.2 → 0.3.3 API changes (subtree_sensors, contact_test removal, headless rendering)
- NumPy 2.x compat (0-d array truth values, complex eigenvalue handling in curvature computation, repr changes)
- PyTorch 2.x compat (torch.load weights_only)
- PyG 2.7 compat (Data.keys became a method)
- Multiprocessing fix (fork → spawn for OpenGL context safety)
- Float tolerance fixes for aarch64 (Bullet physics scalar vs SSE precision)
Test results with these changes (linux-aarch64, llvmpipe software rendering):
All 583 tests pass (391 unit, 60 config, 132 integration, 0 failures). The randrot_noise_10distinctobj_surf_agent benchmark completes with 100/100 episodes correct (90 exact match, 10 correct most-likely-hypothesis).
Scope of changes:
22 files changed, ~150 lines of insertions against ~80 lines of deletions (plus 5,700 lines from removing the stale uv.lock). The changes are mechanical — no architectural changes, no new features, no behavior changes introduced on x86_64.
Dependencies / Blockers:
The Monty port depends on the habitat-sim fixes. I have a PR: Add linux-aarch64 build support by cherron · Pull Request #2626 · facebookresearch/habitat-sim · GitHub submitted for the build support, and the two Monty-specific bug fixes are on my fork branch. Until those land upstream, the Monty port would need to pin habitat-sim to my fork (cherron/habitat-sim@monty-compat-fixes).
Disclosure: This work was done with heavy assistance from Claude Code.
Questions for the community
-
Is there interest in linux-aarch64 support?
-
Any concerns about the dependency version jumps (especially Python 3.8 → 3.12, habitat-sim 0.2.2 → 0.3.3)?
-
Preferred approach for the habitat-sim dependency — wait for upstream, or accept a fork pin for now? Its unclear if the PR will be accepted - there is no movement on the receiving end.
-
Is there any policy or preference on AI-assisted contributions that I should be aware of?
I’m happy to answer questions, adjust the approach, or walk through any of the changes in detail.
Thanks,
Chris