Skip to content
phlegyas: an implementation of 9P2000 in Clojure.
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.

Plan 9 Filesystem Protocol, as implemented in Clojure.

Build Status

[phlegyas "master-SNAPSHOT"]

The vast majority of the protocol-level documentation was sourced from the wonderful Plan 9 from User Space project.

I have copied the test resources from droyo's styx package, credit due for making it available.

Run lein test to verify things work as they should. Currently, 100% of the provided framedumps are successfully handled, hopefully indicating that this is fully up to spec.

Note the field names in types.clj. The assemble-packet function will take a map of these and create a byte-array for you. disassemble-packet will do the reverse.


An example server is available (see the phlegyas.server namespace).

Client routines are also available (see the phlegyas.client namespace).

For testing, build plan9port (will require compilers & development headers):

git clone && cd plan9port && ./INSTALL

Or, alternatively, if you have Docker installed, there is a project that will do this for you inside a container, so you don't have to touch your base system.

Then, run the built 9P FUSE client, e.g.:

9pfuse -D 'tcp!localhost!10001' mountpoint

The example VFS layer will create a single filesystem for attaching, and some example files within, with both dynamic and static content (see the phlegyas.vfs namespace).


Authentication is not yet supported. The example VFS is rudimentary and leaves room for improvement.

You can’t perform that action at this time.