FSKit-based filesystem driver for Box archives on macOS 15.4+.
This crate provides a pure Rust implementation of Apple's FSKit FSUnaryFileSystem protocol to mount Box archives as read-only filesystems. It serves as a native macOS alternative to the FUSE-based fusebox.
- macOS 15.4 (Sequoia) or later
- Xcode 16.1 or later
- XcodeGen (
brew install xcodegen) - Valid Apple Developer signing identity
- Build the Rust static library:
cargo build --release -p fskitbox- Generate the Xcode project:
cd crates/fskitbox
xcodegen generate- Build and sign the app bundle:
xcodebuild -scheme fskitbox -configuration Releasefskitbox/
├── src/
│ ├── lib.rs # Library root
│ ├── bindings/ # FSKit Objective-C bindings via objc2
│ │ ├── mod.rs
│ │ ├── framework.rs # FSKit framework linking
│ │ ├── types.rs # FSFileName, FSItemAttributes, etc.
│ │ ├── resource.rs # FSResource, FSBlockDeviceResource
│ │ ├── volume.rs # FSVolume bindings
│ │ └── filesystem.rs # FSUnaryFileSystem bindings
│ ├── filesystem.rs # BoxFS implementation
│ ├── volume.rs # BoxVolume implementation
│ ├── item.rs # BoxItem record wrapper
│ └── extension.rs # App extension entry point
├── host/ # Minimal host app (Swift)
├── extension/ # Extension entry point (ObjC)
├── Info.plist # Extension metadata
├── fskitbox.entitlements
└── project.yml # XcodeGen specification
FSUnaryFileSystemOperations:probeResource,loadResource,unloadResourceFSVolumePathConfOperations: Path configuration propertiesFSVolumeOperations: Core volume operations (TODO)FSVolumeOpenCloseOperations: File open/close (TODO)FSVolumeReadWriteOperations: File read (TODO)
This is an early implementation. The FSKit bindings and basic structure are in place, but full volume operations need to be implemented to match the functionality of fusebox.
Apache-2.0 OR MIT