9P The Simple Distributed File System from Bell Labs

9P Implementations

This is a list of existing client and server implementations of the various variants of the 9P protocol.

Name Version Client Server Lang Operating System(s) License Comments
Plan 9 from Bell Labs 9p2000 Client/Server C Plan 9, Plan B LPL The original and 'reference' implementation as part of the Plan 9 operating system.
plan9port 9p2000, 9p2000.u Client/Server C Most Unix variants LPL/MIT Plan 9 from User Space(aka plan9port) is a port of many user space utilities and libraries from Plan 9 to Unix systems.
Inferno 9p2000 Client/Server Limbo All Inferno host systems GPL/BSD Part of the Inferno operating system, can run hosted on top of other systems.
v9fs 9p2000, 9p2000.u Client C Linux GPL File system driver for the Linux kernel.
py9p 9p2000 Client/Server Python - Public Domain 9P implementation in pure python.
libixp 9p2000 Client/Server C All Unix variants MIT Originally as part of the wmii project.
Ruby-IXP 9p2000 Client/Server(?) Ruby - GPL A simple and fast client implementation in pure Ruby.
Rstyx 9p2000 Client/Server(?) Ruby - LGPL/Ruby License Another pure Ruby implementation.
Jstyx 9p2000 Client/Server Java - BSD License A 9P implementation in pure Java, also includes special libraries for grid services.
ninep 9p2000 Client Lisp - MIT A multi-threaded client implementation in Lisp.
9pvfs.tcl 9p2000 Client/Server TCL - Public Domain? Transparent access to 9P server from TCL.
9pc 9p2000 Client/Server C# - Public Domain? 9P for .NET environments.
rii 9p2000 Client C/Ruby - MIT? Ruby bindings to the libixp library.
ocaml-9p 9p2000 Client Ocaml - BSD OCaml-9P is a pure OCaml implementation.
styx-n-9p 9p2000 Client Java - MIT Client only multi-threaded Java implementation including Inferno authentication support.
r9p 9p2000 Client Ruby - MIT A simple client implementation for Ruby. It supports the operations of the IO class by providing a true file descriptor through a proxy thread.
9puffs 9p2000 Client C NetBSD BSD Userspace file system driver implemented on top of puffs.
9p.scm 9p2000 Client Scheme - MIT? A simple client implementation in Scheme using gauche's networking, by Neale Pickett.
PHP9P 9p2000 Client/Server PHP/C - MIT PHP bindings for libixp.
JS9P 9p2000 Client/Server JavaScript - MIT A javascript 9p library.
Net_9P 9p2000 Client/Server PHP - LGPL v2 A pure PHP implementation of 9P, to be included in PEAR.
JavaScript Styx 9p2000 Client/Server JavaScript - LGPL v2 JavaScript 9p implementation for FireFox (to be ported to other browsers in the future).
Chicken Scheme 9p 9p2000 Client/Server Chicken Scheme - BSD A pure Scheme implementation of the 9p networked filesystem protocol.
Duat 9p2000, 9p2000.u Client/Server C - BSD An I/O library for C applications. It may be used to implement FS-ish servers; primarily via the 9p2000(.u) protocol.
NPFS/SPFS 9p2000, 9p2000.u Server C - BSD-like A multi-threaded replacement of u9fs -- npfs also functions as a framework which can be easily reused to build synthetic file systems.
Lib-IXP 9p2000 Client C/Perl - MIT? Perl bindings to the [libixp library](http://repo.cat-v.org/libixp/).
J9P/StyxLib 9p2000 Client/Server Java - LGPL A pure Java implementation designed to ease the integration of legacy and non-9P services into 9P networks. Includes p9sk1, p9sk2 and Inferno message digest and encryption.
Go9p 9p2000 Client/Server Go - BSD License A 9P library in the Go programming language, by Andrey Mirtchovski and Latchesar Ionkov.
Go9p 9p2000 Client/Server Go - BSD License Ron Minnich's version of Go9p.
9ph (Hackage: NineP) 9p2000 Client/Server Haskell - BSD License Implementation in pure Haskell, by Tim Newsham and Dave Leimbach(aka leimy2k).
diod 9p2000.L Server C - GPL v2 User space server that only supports 9p2000.L (as implemented by v9fs in Linux kernels >2.6.38).
NinePea 9p2000 Client/Server C, C++ - MIT/X Consortium License 9P library and example for arduino mega 1280.
Arm-js 9p2000 Client/Server Javascript - - ARM emulator written in Javascript. It contains a 9P implementation used to communicate with the browser and store files.
jor1k 9p2000 Client/Server Javascript - Simplified BSD OpenRISC 1000 emulator written in Javascript. It also contains a 9P implementation used to communicate with the browser and store files.
v86 9p2000 Client/Server Javascript - BSD X86 emulator written in Javascript. As you may have guessed, it contains a 9P implementation used to communicate with the browser and store files.
9pfs 9p2000 Client C - BSD Mounts a 9P service using the FUSE file system driver. It is a replacement for 9pfuse from plan9port. Unlike 9pfuse, it works equally well on Linux, OpenBSD, FreeBSD, and any other OS with a FUSE implementation.
lua9p 9p2000 Client Lua - BSD Barebones 9p client library. written in Lua.
c9 9p2000 Client/Server C - - 9p client/server library for highly constrained environments.
ninep 9p2000 Client/Server Go BSD - Package for implementing clients and servers of the 9P and 9P2000 distributed resource protocols in Go.
libninep 9p2000 Server C - - GSoC project by yiyus.
go-p9p 9p2000 Client/Server Go - - A modern, performant 9P library for Go.
libstyxe 9p2000.e Client/Server C++ - Apache 2 Message parser and builder, no networking.

Implementations in progress for: lua and others. But don’t let that deter you from writing your own! Contact me if you know of any others.