libfuse is a library and kernel module combination that enables the development of custom Linux filesystems that run in userspace rather than in kernel space. It provides a bridge between the kernel's virtual filesystem layer and a userspace daemon, allowing filesystem operations to be forwarded and handled by a regular user process. The project offers two distinct APIs: a high-level callback-driven API where filesystem operations are implemented as simple functions that return results synchronously, and a low-level API that exposes raw kernel request structures directly for fine-grained control over request processing.
The library manages the full lifecycle of a userspace filesystem, including kernel mount registration, unmount cleanup, and automatic resource release when the daemon exits. It supports asynchronous request handling, allowing userspace to defer kernel request completion by queuing responses through a dedicated channel, and employs a multi-threaded dispatch model to process incoming kernel requests concurrently. The project includes the FUSE kernel module interface, headers, utilities, and build tools necessary for creating custom userspace filesystems on Linux.
The documentation and install surface covers both the high-level and low-level API approaches, along with mounting and unmounting procedures for integrating custom filesystems into the Linux VFS layer.