---
title: FSKit
framework: FSKit
role: collection
role_heading: Framework
platforms: [macOS 15.4+]
path: fskit
---

# FSKit

Implement a file system that runs in user space.

## Overview

Overview With FSKit, you can extend macOS by enabling access to new types of file systems. You do this by developing an FSKit module (FSModule), which you deliver as an app extension that runs in user space, and is compatible with Mac App Store distribution. FSKit connects your module to the system’s existing frameworks and tools, like Disk Arbitration, NetFS, and the mount(8) command. FSKit modules An FSKit module consists of two main parts: A set of module attributes that you define in the module’s Info.plist file. These attributes provide metadata like Boolean keys that indicate feature support and dictionaries that describe command-line interface access. The code that implements the file system functionality. Your app extension conforms to one of two protocols, depending on its design flow, as described below. The FSKit framework defines three key file storage concepts that FSModule supports: Design flows FSKit provides two design flows, with different trade-offs of functionality and complexity: FSFileSystem is a conventional, full-featured file system that can employ multiple resources and deliver multiple volumes. FSUnaryFileSystem is a simpler file system where containers use only one resource and provide only one volume. Most file systems shipping in macOS fit this pattern, including HFS, msdosfs, ExFAT, ntfs, and others. note: The current version of FSKit supports only FSUnaryFileSystem. When you choose a design flow, write an app extension that conforms to either FileSystemExtension or UnaryFileSystemExtension, based on your chosen flow. These protocols declare a fileSystem delegate object that your extension creates and returns. This delegate object subclasses either FSFileSystem or FSUnaryFileSystem as appropriate, and conforms to either the FSFileSystemOperations or FSUnaryFileSystemOperations protocol. These protocols define a loadResource method, which FSKit uses to make a resource available to the module.

## Topics

### Essentials

- [Building a passthrough file system](fskit/building-a-passthrough-file-system.md)

### App extensions

- [UnaryFileSystemExtension](fskit/unaryfilesystemextension.md)

### File systems

- [FSUnaryFileSystem](fskit/fsunaryfilesystem.md)
- [FSFileSystemBase](fskit/fsfilesystembase.md)
- [FSFileName](fskit/fsfilename.md)

### Containers

- [FSContainerIdentifier](fskit/fscontaineridentifier.md)
- [FSContainerStatus](fskit/fscontainerstatus.md)

### Resources

- [FSResource](fskit/fsresource.md)
- [FSBlockDeviceResource](fskit/fsblockdeviceresource.md)
- [FSPathURLResource](fskit/fspathurlresource.md)
- [FSGenericURLResource](fskit/fsgenericurlresource.md)

### Volumes

- [FSVolume](fskit/fsvolume.md)

### Items

- [FSItem](fskit/fsitem.md)

### Maintenance and management

- [FSManageableResourceMaintenanceOperations](fskit/fsmanageableresourcemaintenanceoperations.md)

### Operations

- [FSOperationID](fskit/fsoperationid.md)

### Tasks

- [FSTask](fskit/fstask.md)
- [FSTaskOptions](fskit/fstaskoptions.md)

### Errors and logging

- [fs_errorForCocoaError(_:)](fskit/fs_errorforcocoaerror(_:).md)
- [fs_errorForMachError(_:)](fskit/fs_errorformacherror(_:).md)
- [fs_errorForPOSIXError(_:)](fskit/fs_errorforposixerror(_:).md)
- [FSError](fskit/fserror.md)
- [FSError.Code](fskit/fserror/code.md)
- [FSKitErrorDomain](fskit/fskiterrordomain.md)
- [FSDataCacheError](fskit/fsdatacacheerror.md)

### FSKit interactions

- [FSClient](fskit/fsclient.md)

### Supporting types

- [FSBlockmapFlags](fskit/fsblockmapflags.md)
- [FSCompleteIOFlags](fskit/fscompleteioflags.md)
- [FSEntityIdentifier](fskit/fsentityidentifier.md)
- [FSExtentPacker](fskit/fsextentpacker.md)
- [FSExtentType](fskit/fsextenttype.md)
- [FSMatchResult](fskit/fsmatchresult.md)
- [FSMetadataRange](fskit/fsmetadatarange.md)
- [FSProbeResult](fskit/fsproberesult.md)

### Entitlements

- [com.apple.developer.fskit.fsmodule](bundleresources/entitlements/com.apple.developer.fskit.fsmodule.md)
