-[Raw leaves for unixfs files](#raw-leaves-for-unixfs-files)
-[ipfs filestore](#ipfs-filestore)
-[Private Networks](#private-networks)
-[ipfs p2p](#ipfs-p2p)
---
## ipfs pubsub
### State
experimental, default-disabled.
### In Version
0.4.5
### How to enable
run your daemon with the `--enable-pubsub-experiment` flag. Then use the `ipfs pubsub` commands.
### Road to being a real feature
-[] Needs more people to use and report on how well it works
-[] Needs authenticated modes to be implemented
-[] needs performance analyses to be done
---
## Client mode DHT routing
Allows the dht to be run in a mode that doesnt serve requests to the network, saving bandwidth.
### State
experimental.
### In Version
0.4.5
### How to enable
run your daemon with the `--routing=dhtclient` flag.
### Road to being a real feature
-[] Needs more people to use and report on how well it works.
-[] Needs analysis of effect it has on the network as a whole.
---
## go-multiplex stream muxer
Adds support for using the go-multiplex stream muxer alongside (or instead of) yamux and spdy. This multiplexer is far simpler, and uses less memory and bandwidth than the others, but is lacking on congestion control and backpressure logic. It is available to try out and experiment with.
### State
Experimental
### In Version
0.4.5
### How to enable
run your daemon with `--enable-mplex-experiment`
To make it the default stream muxer, set the environment variable `LIBP2P_MUX_PREFS` as follows:
To check which stream muxer is being used between any two given peers, check the json output of the `ipfs swarm peers` command, you'll see something like this:
And then pass the `--nocopy` flag when running `ipfs add`
### Road to being a real feature
-[] Needs more people to use and report on how well it works.
-[] Need to address error states and failure conditions
-[] Need to write docs on usage, advantages, disadvantages
-[] Need to merge utility commands to aid in maintenance and repair of filestore
---
## Private Networks
Allows ipfs to only connect to other peers who have a shared secret key.
### State
Experimental
### In Version
master, 0.4.7
### How to enable
Generate a pre-shared-key using [ipfs-swarm-key-gen](https://github.com/Kubuxu/go-ipfs-swarm-key-gen)):
```
go get github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
ipfs-swarm-key-gen > ~/.ipfs/swarm.key
```
To join a given private network, get the key file from someone in the network and save it to `~/.ipfs/swarm.key` (If you are using a custom `$IPFS_PATH`, put it in there instead).
When using this feature, you will not be able to connect to the default bootstrap nodes (Since we arent part of your private network) so you will need to set up your own bootstrap nodes.
To prevent your node from even trying to connect to the default bootstrap nodes, run:
```bash
ipfs bootstrap rm --all
```
To be extra cautious, You can also set the `LIBP2P_FORCE_PNET` environment variable to `1` to force the usage of private networks. If no private network is configured, the daemon will fail to start.
### Road to being a real feature
-[] Needs more people to use and report on how well it works
-[] More documentation
---
## ipfs p2p
Allows to tunnel TCP connections through Libp2p sterams