# FSKit Module Installation - Key Findings Summary
## Quick Reference
---
## 1. Apple Official Documentation
### Documentation Status
- ✅ **fskitd man page**: Available (`man fskitd`)
- ✅ **FSKit Framework**: macOS 15+ (Sequoia) introduction
- ⚠️ **Apple Developer Documentation**: Available but requires JavaScript
- ❌ **Third-party documentation**: None found (MarkBaseFS is one of the first)
---
## 2. Third-Party Implementations
### Current State
- ❌ **rclone**: No FSKit Module (uses FUSE-T/macFUSE)
- ❌ **Google Drive**: No FSKit Module (uses deprecated kernel extensions)
- ❌ **Other third-party**: None found on GitHub/Stack Overflow
**Conclusion**: MarkBaseFS is one of the **first third-party FSKit Modules** publicly documented.
---
## 3. Installation Mechanism
### How macOS Discover FSKit Modules?
**Discovery Process**:
```
fskitd daemon → ExtensionKit framework → .appex bundles → Info.plist → EXExtensionPointIdentifier
```
### Two Discovery Paths:
1. **Apple Modules**: `/System/Library/ExtensionKit/Extensions/`
- Discovered by ExtensionKit framework
- Reserved for Apple-signed modules
2. **Third-Party Modules**: `/Library/Filesystems/`
- Discovered by fskitd daemon
- Standard location for third-party FSKit Modules
- **MarkBaseFS current location**: ✅ Correct
### Does FSKit Daemon Automatically Discover?
**Answer**: ✅ YES
**Evidence**:
- fskitd man page: "invoked by launchd when volume creation is requested"
- No manual registration required
- No restart required
- fskitd running: PID 99535
---
## 4. System Extension API
### Is System Extension API Required?
**Answer**: ❌ NO
**Critical Finding**: FSKit Modules are **App Extensions**, NOT System Extensions!
| Feature | App Extension (FSKit) | System Extension |
|---------|----------------------|-------------------|
| **Package Type** | `.appex` (XPC!) | `.appex` (XPC!) |
| **Extension Point** | `com.apple.fskit.fsmodule` | `com.apple.system-extension` |
| **API** | ExtensionKit API | System Extension API |
| **User Approval** | ❌ Not required | ✅ Required (System Preferences) |
| **Location** | `/Library/Filesystems/` | `/Library/SystemExtensions/` |
---
## 5. Correct Installation Location
### Primary Location for Third-Party FSKit Modules
✅ **Recommended**: `/Library/Filesystems/`
**Evidence**:
- MarkBaseFS Module currently at `/Library/Filesystems/MarkBaseFS FSKit Module.appex` ✅
- Historical precedent: NetFSPlugins at `/Library/Filesystems/NetFSPlugins/`
- fskitd scans this location
- Apple modules use `/System/Library/ExtensionKit/Extensions/` (reserved for Apple)
### Alternative Locations (NOT Recommended)
- ❌ `/System/Library/ExtensionKit/Extensions/` → Reserved for Apple
- ❌ `/Library/Application Support/com.apple.fskit/` → Does not exist
- ❌ `/Library/SystemExtensions/` → Reserved for System Extensions
---
## 6. Entitlements Required
### Critical Entitlements
**Required**:
```xml
com.apple.developer.fskit.fsmodule
com.apple.security.app-sandbox
com.apple.application-identifier
your.bundle.id
```
### Comparison
| Entitlement | Apple FSKit | MarkBaseFS | Match |
|-------------|-------------|------------|-------|
| `com.apple.developer.fskit.fsmodule` | ✅ true | ✅ true | ✅ |
| `com.apple.security.app-sandbox` | ✅ true | ✅ true | ✅ |
| `com.apple.application-identifier` | ✅ yes | ✅ yes | ✅ |
**Conclusion**: MarkBaseFS entitlements **match Apple FSKit Modules perfectly**.
---
## 7. Installation Steps (MarkBaseFS)
### Current Status
✅ MarkBaseFS Module is **correctly installed**:
1. ✅ Location: `/Library/Filesystems/MarkBaseFS FSKit Module.appex`
2. ✅ Extension Point: `com.apple.fskit.fsmodule`
3. ✅ Entitlements: Match Apple modules
4. ✅ Code Signing: Developer ID Application (K3TDMD9Y6B)
5. ✅ Notarization: Ticket stapled
6. ✅ Ownership: root:wheel
7. ✅ Discovery: Automatic by fskitd
### Installation Command
```bash
# Install MarkBaseFS FSKit Module
sudo cp -R "MarkBaseFS FSKit Module.appex" /Library/Filesystems/
sudo chown -R root:wheel "/Library/Filesystems/MarkBaseFS FSKit Module.appex"
# Verify installation
ls -la /Library/Filesystems/
codesign -dvvv "/Library/Filesystems/MarkBaseFS FSKit Module.appex"
```
### No Additional Steps Required
- ❌ No System Extension API
- ❌ No user approval
- ❌ No restart
- ❌ No manual registration
---
## 8. FSKit Architecture
### Running Services
```
fskitd (PID: 99535)
↓
fskit_agent (Mach service: com.apple.fskit.fskit_agent)
↓
ExtensionKit framework (discovery)
↓
FSKit Modules (.appex)
```
### Launch Agent Configuration
```xml
/System/Library/LaunchAgents/com.apple.fskit.fskit_agent.plist
- Program: /usr/libexec/fskit_agent
- MachServices: com.apple.fskit.fskit_agent
- LimitLoadToSessionType: Background, Aqua
```
---
## 9. Key Actionable Findings
### What You Need to Know
1. ✅ **Location is correct**: `/Library/Filesystems/` is the standard location
2. ✅ **No System Extension API**: FSKit Modules are App Extensions
3. ✅ **No user approval required**: Unlike System Extensions
4. ✅ **Automatic discovery**: fskitd discovers modules automatically
5. ✅ **No restart required**: Dynamic discovery
6. ✅ **Entitlements match Apple**: MarkBaseFS has correct entitlements
7. ✅ **Code signed**: Developer ID Application + notarization
### What You DON't Need to Do
- ❌ Move to `/System/Library/ExtensionKit/Extensions/`
- ❌ Request System Extension approval
- ❌ Use System Extension API
- ❌ Restart macOS
- ❌ Register manually with fskitd
---
## 10. Next Steps for MarkBaseFS
### Recommended Actions
1. ✅ **Current installation is correct** - No changes needed
2. **Test mounting**:
- Try mounting via Finder
- Try mounting via `diskutil`
- Test performance (target: 600 MB/s)
3. **Document user procedures**:
- How to mount MarkBaseFS volumes
- How to configure mount options
4. **Performance validation**:
- Compare with NFS backend
- Validate FSKit backend performance
---
## Conclusion
**MarkBaseFS FSKit Module is correctly installed and configured**.
**No changes to installation process are required**.
**FSKit Modules are App Extensions (not System Extensions)** → Simple installation, no approval needed.
---
## Sources
- **fskitd man page**: `man fskitd`
- **Apple FSKit Modules**: `/System/Library/ExtensionKit/Extensions/`
- **MarkBaseFS Module**: `/Library/Filesystems/MarkBaseFS FSKit Module.appex`
- **Launch Agent**: `/System/Library/LaunchAgents/com.apple.fskit.fskit_agent.plist`
- **Code signing**: `codesign -dvvv` output
- **Full report**: `/Users/accusys/markbase/docs/FSKit_INSTALLATION_RESEARCH.md`
---
**Summary Version**: 1.0
**Date**: 2026-05-28
**Status**: Ready for Action ✅