Total Pageviews

Saturday, 25 June 2016


File transfers encrypted and inverse multiplexed over TCP, implemented in Go.
imux is an inverse multiplexer for file transfers. Data is sent over an arbitrary number of TLS sockets routed over an arbitrary number of networks. Using multiple sockets on a single network can improve TCP performance and evade some implementations of traffic shaping / throttling while using multiple networks allows one to combine the bandwidth each network provides. The client authenticates server certificates using trust of first use (TOFU), similar to SSH.


go get


Start a server
Usage of imux:
  -bind string
    address to bind an imux server on (default "")
  -cert string
    pem file with certificate to present when in server mode, auto generated (default "cert.pem")
  -chunk int
    size of each file chunk in bytes, specified by the client (default 5242880)
    run the server in the background
  -host string
    imux server to connect to
  -key string
    pem file with key for certificate presented in server mode, auto generated (default "key.pem")
  -networks string
    socket configuration string for clients: <bind ip>:<count>; (default "")
  -recycle int
    bytes transferred before client closes and replaces socket, default unlimited
  -session string
    unix socket used for IPC, set by server for user context processes
  -user string
    username (default "example")