hanwen/go-fuse
hanwen/go-fuse has 2,394 GitHub stars and 438 forks. GitHot measured 0 stars in 24 hours and +4 in 7 days. Last checked 2026-11-11 10:28 UTC. Last push 2026-10-31.
FUSE bindings for Go
Measured star growth
- in 24h
- 0
- in 7 days
- +4
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalGo-FUSE
Go native bindings for the FUSE kernel module.
Use github.com/hanwen/go-fuse/v2/fs library. It follows the wire protocol closely, but provides convenient abstractions for building both node and path based file systems
Release notes
v2.12
- fuse: DirEntryList supports roundtrip testing
- virtiofs: support reads beyond 4k.
- virtiofs: I/O vector write support
- fuse, fs: support tmp file creation (O_TMPFILE flag, TMPFILE opcode)
- fuse: support I/O vectors in ReadResult
- fuse: support SPLICE_F_MOVE in ReadResult
- fs: NFS export support through Options.ExternalNodeID
- LoopbackFile uses birthtime as generation
- NodeLookupNoder: support lookup for NFS server reconnect
- NodeLookupParenter: support parent dir lookup for NFS server reconnect
v2.11:
- fuse: added MountOptions.PanicHandler; panics no longer crash the server.
- fuse: expose CongestionThreshold as a separate MountOption
- fuse: MountOption.MaxInflightRequestBytes
- fs: NewLoopbackFileFromOS
v2.10:
- fs: LoopbackFile is now public.
- fuse: ReadResultPipe allows more flexibility for zero-copy read results, eg. concatenate data from multiple files at the same time.
- fuse: Options.ExtraCapabilities/DisabledCapabilities allows generically en/disabling kernel features
- fuse, fs: PruneNotify support. This lets the file system force the kernel to forget nodes.
- fuse: type ProtocolServer. This enables running the FUSE protocol over transports that are not the standard kernel connection
- virtiofs: serve FUSE file system to VMs directly as virtiofs servers.
- general: require go 1.21
v2.9:
- fs: NodeWrapChilder interface
- fs: FileLookuper interface
v2.8
- fuse, fs: support IOCTL
- fuse: add RawFileSystem.OnUnmount
- fs: symlink safety for fs.LoopbackRoot
- fuse: ID mapped mounts
- fs: NewLoopbackDirStreamFd
v2.7
- fuse, fs: support STATX
v2.6
- general:
- drop support for go1.16
- fuse:
- FreeBSD support
- passthrough support for increased performance
- DirEntryList.Offset and DirEntry.Off are visible now; add DirEntry.Parse
- fs:
- new directory API, supporting caching and file handles for Readdir and FsyncDir
- passthrough support for increased performance
- allow LoopbackNode to be used as non-root
- OnForget method
v2.5
- Support for RenameExchange on Darwin
Comparison with other FUSE libraries
Further highlights of this library is
Comprehensive and up to date protocol support (up to 7.12.28).
Performance that is competitive with libfuse.
Examples
example/hello/ contains a 60-line "hello world" filesystem
zipfs/zipfs contains a small and simple read-only filesystem for zip and tar files. The corresponding command is in example/zipfs/ For example,
mkdir /tmp/mountpoint example/zipfs/zipfs /tmp/mountpoint file.zip & ls /tmp/mountpoint fusermount -u /tmp/mountpointzipfs/multizipfs shows how to use combine simple Go-FUSE filesystems into a larger filesystem.
example/loopback mounts another piece of the filesystem. Functionally, it is similar to a symlink. A binary to run is in example/loopback/ . For example
mkdir /tmp/mountpoint example/loopback/loopback -debug /tmp/mountpoint /some/other/directory & ls /tmp/mountpoint fusermount -u /tmp/mountpoint
macOS Support
The main developer (hanwen@) does not own a Mac to test, but accepts patches to make Go-FUSE work on Mac.
All of the limitations of OSXFUSE, including lack of support for NOTIFY.
OSX issues STATFS calls continuously (leading to performance concerns).
OSX has trouble with concurrent reads from the FUSE device, leading to performance concerns.
Tests are expected to pass; report any failure as a bug!
Credits
Inspired by Taru Karttunen's package, https://bitbucket.org/taruti/go-extra.
Originally based on Ivan Krasin's https://github.com/krasin/go-fuse-zip
Bugs
Report them through https://github.com/hanwen/go-fuse/issues. Please
include a debug trace (set fuse.MountOptions.Debug to true).
License
Like Go, this library is distributed under the new BSD license. See accompanying LICENSE file.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,867 starspublic-apis/public-apis
A collective list of free APIs
498,223 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
452,577 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,365 stars