Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A Rust NFS Server implementation
| Date | Stars |
|---|---|
| 2026-07-31 | 752 |
| 2026-08-01 | 753 |
| 2026-08-02 | 753 |
| 2026-08-03 | 753 |
| 2026-08-04 | 754 |
| 2026-08-05 | 755 |
| 2026-08-06 | 756 |
Today
+1 stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
Rust NFSv3 Server ================= This is an incomplete but very functional implementation of an NFSv3 server in Rust. Why? You may ask. I wanted to implement a user-mode file-system mount that is truly cross-platform. What is a protocol that pretty much every OS supports? NFS. Why not FUSE you may ask: 1. FUSE is annoying to users on Mac and Windows (drivers necessary). 2. It takes a lot of care to build a FUSE driver for remote filesystems. NFS clients however have a lot of historical robustification for slow-responding, or perhaps, never-responding servers. 3. The OS is pretty good at caching NFS. There are established principles for cache eviction, for metadata, or for data. With a FUSE driver I have to do a lot of the work myself. So, this is a FUSE-like user-mode filesystem API that basically works by creating a localhost NFSv3 server you can mount. This is used in [hf-mount](https://github.com/huggingface/hf-mount) to provide the `hf-mount` functionality. Run the Demo ============ To run the demofs, this will host an NFS server on localhost:11111 ``` cargo build --example demo --features demo ./target/debug/examples/demo ``` To mount. On Linux (sudo may be required): ``` mkdir demo mount.nfs -o user,noacl,nolock,vers=3,tcp,wsize=1048576,rsize=131072,actimeo=120,port=11111,mountport=11111 localhost:/ demo ``` On Mac: ``` mkdir demo mount_nfs -o nolocks,vers=3,tcp,rsize=131072,actimeo=120,port=11111,mountport=11111 localhost:/ demo ``` On Windows (Pro required as Home does not have NFS client): ``` mount.exe -o anon,nolock,mtype=soft,fileaccess=6,casesensitive,lang=ansi,rsize=128,wsize=128,timeout=60,retry=2 \\127.0.0.1\\ X: ``` Note that the demo filesystem is *writable*. Usage ===== You simply need to implement the vfs::NFSFileSystem trait. See demofs.rs for an example and bin/main.rs for how to actually start a service. The interface generally not difficult to implement; demanding mainly the ability to associate every file system object (directory/file) with a 64-bit ID. Directory listing can be a bit complicated due to the pagination requirements. TODO and Seeking Contributors ============================= - Improve documentation - More things in Mount Protocol and NFS Protocol has to be implemented. There are a bunch of messages that reply as "Unavailable". For instance, we implement `READDIR_PLUS` but not `READDIR` which is usually fine, except that Windows insists on always trying READDIR first. Link creation is also not supported. - The RPC message handling in `nfs_handlers.rs` leaves a lot to be desired. The response serialization is very manual. Some cleanup will be good. - Windows mount "kinda" works (only on Windows 11 Pro with the NFS server), but prints a lot of garbage due to various unimplemented APIs. Windows 11 somehow tries to poll with very old NFS protocols constantly. - Many many perf optimizations. - Maybe pull in the mount command from [xet-core](https://github.com/huggingface/xet-core/blob/main/rust/gitxetcore/src/xetmnt/mod.rs) so the user does not need to remember the `-o` incantations above. - Maybe make an SMB3 implementation so we can work on Windows Home edition - NFSv4 has some write performance optimizations that would be quite nice. The protocol is a bit more involving to implement though as it is somewhat stateful. Relevant RFCs ============= - XDR is the message format: RFC 1014. https://datatracker.ietf.org/doc/html/rfc1014 - SUN RPC is the RPC wire format: RFC 1057 https://datatracker.ietf.org/doc/html/rfc1057 - NFS is at RFC 1813 https://datatracker.ietf.org/doc/html/rfc1813 - NFS Mount Protocol is at RFC 1813 Appendix I. https://datatracker.ietf.org/doc/html/rfc1813#appendix-I - PortMapper is at RFC 1057 Appendix A https://datatracker.ietf.org/doc/html/rfc1057#appendix-A Basic Source Layout =================== - context.rs: A connection context object that is passed around containing connection information, VFS information, etc. -
Excerpt of 9,002 characters
Read on GitHub21
3
2
Assaf Vayner · Hugging Face · United States
2
1
1
Sai Asish Y · United States
1
1
1
1
1
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
Not classified yet. Classification runs as part of npm run ingest.