Deprecation warning

LUSE is now considered deprecated. It has been replaced by a higher level binding for FUSE called Flu which can be found on its own website at

1 - About LUSE

LUSE is a Lua binding for FUSE, which is a library allowing creation filesystem drivers run in userspace. LUSE is a low level binding. FUSE itself it rather slow, so LUSE tries not to impede performance more than necessary. For that reason it is manipulating userdata and pointers directly rather than Lua strings, with the reduced safety implied.

LUSE tries to be complete, but is not supporting obsolete APIs. The binding is closely following the FUSE API, so in most case you can use FUSE documentation if the present page is not clear enough. The missing functions are missing because I've not used them yet. I can add them on request (a use case could be helpful for non-trivial ones).

LUSE module itself is very basic, so I developed several other modules to help the development of a complete filesystem.

errno contains many constants representing POSIX error numbers. It also have an accessor to query the errno variable (which contains the last error number).

userdata can create and manipulate untyped userdata, to be used as buffers for read and write commands of the filesystem.

posixio is not strictly necessary, but it is very useful to implement many types of filesystem, which redirect I/O request to another filesystem. It contains bindings to many file and directory manipulation functions. Here again the read and write functions manipulate untyped userdata to keep overhead minimal.


All support is done through the Lua mailing list.

Feel free to ask for further developments. I can't guarantee that I'll develop everything you ask, but I want my code to be as useful as possible, so I'll do my best to help you. You can also send me request or bug reports (for code and documentation) directly at


This module is written and maintained by Jérôme Vuarand. It is inspired by luafuse module by Gary Ng, but it has been rewritten completely from scratch.

LUSE is available under a MIT-style license.

2 - Download

LUSE sources are available in its Mercurial repository:

hg clone

Tarballs of the latest code can be downloaded directly from there: as gz, bz2 or zip.

3 - Installation

To build LUSE edit config.mak and then run make in the top directory:

$ vi config.mak
$ make
$ make install

LUSE obviously depends on FUSE. It currently supports FUSE API versions 25 (FUSE 2.5.x and later) and 26 (FUSE 2.6.x and later). You can select a FUSE API version in the config.mak file.