Cross-platform support¶
llamaclaw aims to work on every mainstream OS. Current state + roadmap.
Support matrix (target vs actual)¶
OS |
Target |
esml |
turboquant |
perseus |
tide |
kronos |
luci |
autoresearch |
|---|---|---|---|---|---|---|---|---|
macOS (Apple Silicon) |
tier-1 |
✅ |
✅ |
✅ |
✅ |
✅ |
N/A |
✅ (MPS) |
macOS (Intel) |
tier-2 |
✅ |
✅ |
✅ |
✅ |
⚠️ arm-only currently |
N/A |
⚠️ |
Linux x86_64 |
tier-1 |
✅ |
✅ |
✅ |
✅ |
✅ |
N/A |
✅ (CUDA branch) |
Linux aarch64 (Pi 5) |
tier-1 |
✅ |
✅ |
✅ |
✅ |
✅ native |
✅ |
⚠️ no GPU path |
Linux aarch64 (cloud ARM) |
tier-2 |
✅ |
✅ |
✅ |
✅ |
✅ |
⚠️ |
⚠️ |
Windows 11 x86_64 (native) |
tier-2 |
❌ untested |
❌ untested |
❌ untested |
❌ untested |
❌ untested |
N/A |
❌ |
Windows 11 (WSL2) |
tier-1 |
✅ |
✅ |
✅ |
✅ |
✅ |
N/A |
✅ |
FreeBSD |
tier-3 |
⚠️ |
⚠️ |
✅ |
⚠️ |
⚠️ |
N/A |
❌ |
Legend: ✅ tested in CI / ⚠️ should work but not verified / ❌ broken or unsupported / N/A not applicable (e.g. Pi-only).
Tier definitions¶
Tier 1 — First-class support. CI runs on every push, bugs block releases. Tier 2 — Best-effort support. CI runs weekly, bugs get fixed, community contributions welcome. Tier 3 — Community-maintained. Patches accepted, no guarantee of release-day testing.
Windows support plan¶
Windows native support is the biggest gap. Three paths, in order of effort:
Path A — Windows CI (lowest effort, biggest coverage win)¶
Add windows-latest to the CI matrix in:
llamaclaw/esml: pytest on Windows + R on Windows (Rtools)llamaclaw/tide: Go cross-compile towindows/amd64llamaclaw/kronos: Rustx86_64-pc-windows-msvctargetllamaclaw/turboquant: pytest + C bridge via MSVCllamaclaw/perseus: pytest (pure Python, should Just Work)
Estimated effort: ~4 hours spread across repos.
Path B — Native Windows installer (medium effort)¶
llamaclaw/installer already ships install.ps1. Harden it:
Chocolatey package
Scoop bucket
Winget manifest
MSI installer for
esml
Estimated effort: ~2 days.
Path C — Path handling audit (low effort, high impact)¶
Windows uses \ separators and different file semantics. Audit:
Any
os.path.join("foo/bar/baz")→Path("foo", "bar", "baz")Any hardcoded
/tmp/→tempfile.gettempdir()LF vs CRLF in git via
.gitattributes(we have this)Case sensitivity: Windows is case-insensitive; our
fn/haspolya.pyandpolyA.pyas separate files — conflict on WindowsShell scripts (
install.sh) need PowerShell equivalents (install.ps1exists; keep parity)
Estimated effort: ~1 day per repo.
FreeBSD / other Unix¶
For BSDs, most of the stack works because Python + R + Go + Rust all support it. The pain points:
luciuses systemd-specific bits (not BSD-portable) — would need rc.d equivalentsdeployhas Linux-specific udev rules for NVMe BFQperseus-relaysystemd unit needs a BSD rc.d equivalent
Strategy: accept community patches, don’t actively support.
Platform-specific notes¶
macOS¶
Apple Silicon (M1/M2/M3/M4): primary dev environment. Homebrew-first install path.
Rosetta / Intel: works but slower; not actively tested anymore.
System Python: never use it. Use
brew install python@3.12orpyenv.R:
brew install ror CRAN’s macOS binary.
Linux¶
Ubuntu 22.04 / 24.04: primary CI target. Build deps:
gfortran libopenblas-dev pkg-config.Debian 12+: same as Ubuntu.
Fedora / RHEL: works via
dnf install openblas-devel gcc-gfortran; not in CI.NixOS: Nix flake welcome as a community contribution.
Alpine (musl): our Docker images use Alpine for
tideandkronos. Not recommended foresml(scipy wheels don’t work on musl).
Windows 11¶
WSL2 is the recommended path today. Install Ubuntu under WSL, then follow the Linux install instructions. Full parity with Linux CI.
Native Windows: work in progress. See the matrix above.
PowerShell 7+:
install.ps1targets PowerShell 7. PowerShell 5 may work but isn’t tested.
Raspberry Pi 5¶
Full native support with Pi-specific optimizations.
See Pi deployment guide.
Pi 4 / Pi Zero 2 W¶
Community territory. Pi 4 works with reduced expectations (slower BLAS,
limited RAM). Pi Zero 2 W is too slow for anything except the Go tide
TUI.
Chromebooks / Android¶
Not targeted. If you’re running Linux in a container on Chrome OS, treat it as Linux aarch64 or x86_64 depending on your chip.
Release checklist for new OS support¶
Before adding a new OS to tier-1:
CI runs on every push and passes.
Install guide in
getting-started/install.mdhas a section for it.At least one contributor with that OS as their daily driver.
Dependabot tracks OS-specific deps where applicable.
Perseus + Luci exec-approvals tested on the new OS.
The current shortlist (this quarter)¶
Add
windows-latesttollamaclaw/tideCI — pure Go, should be a 1-line change.Add
windows-latesttollamaclaw/perseusCI — pure Python, same.Path-handling audit on
esml— find any non-pathlib.Pathfile IO, convert.Resolve the
polya.py/polyA.pycase-sensitivity issue — impacts Windows + macOS with case-insensitive filesystems.Winget manifest for
esml— enableswinget install esml.
Progress tracked in github.com/llamaclaw/installer/issues.