Skip to main content
FUSE mode exposes a mount as a real OS directory so any tool (editors, sandbox runtimes, plain cat) can read it, not just MIRAGE commands. OS support depends on the SDK’s FUSE binding: Python uses mfusepy (ctypes over libfuse), Node uses @zkochan/fuse-native (a native addon), and browsers cannot mount filesystems at all.

Matrix

Per-OS install guides: macOS, Linux, Windows. SDK wiring: Python FUSE setup, TypeScript FUSE setup.

What the labels mean

  • Supported, CI-gated (Linux). The FUSE integration battery (both SDKs, real kernel mounts, including size-unknown API files) runs on every change and gates merges.
  • Supported (macOS). Same code paths, verified on real macFUSE kext mounts; hosted CI runners cannot approve kernel extensions, so macOS coverage is local rather than gated. Remember the one-mount-per-process limit.
  • Experimental (Windows, Python only). The full battery passes over WinFsp in an advisory CI job (not merge-gating). Windows conventions (unmount at process exit, mount-level ownership, stat-opens-a-handle) are documented on the Windows page. Write-heavy flows and symlinks are not yet exercised there.
  • Not supported (Windows, TypeScript). @zkochan/fuse-native only targets macOS and Linux; its legacy Windows path builds against the unmaintained Dokany-based fuse-shared-library-win32 rather than WinFsp.

Platform quirks at a glance

The size-unknown semantics themselves (stat 0 until open, full content on read, real size after open) are identical across SDKs; see Python or TypeScript for the per-tool table.