Skip to content
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
137 lines (104 sloc) 4.09 KB


Version Build Status

A command-line tool that makes it easy to pipe between machines.

Learn more at Convey: Pipe between machines

echo "Hello world" | convey
convey 21f50fba373e11e9990a72000872a940
Hello world


  • Pipe between hosts with an idomatic interface using the standard | symbol.
  • Easily pipe files between hosts.
  • Does not require any open ports between your clients.
  • Configure it to use short channel names instead of UUIDs for easy typing such as vibrant_allen.
  • Supports colors through ANSI escape codes.
  • Supports Linux, macOS and Windows.
  • No dependencies to install.
  • Powered by NATS, a CNCF project.

Getting Started



wget -qO ~/bin/convey
chmod +x ~/bin/convey
~/bin/convey -h


curl -sLo ~/bin/convey
chmod +x ~/bin/convey
~/bin/convey -h


Invoke-WebRequest -OutFile convey.exe
.\convey.exe -h

Demo Mode

A demo mode is available using the --demo flag.

echo "Hello world" | convey --demo
convey --demo <ID>
Hello world

Demo mode uses the server over a TLS connection with channels expiring after 30 minutes of creation or 10 minutes of inactivity.

Use this mode for experimental and getting started purposes only.


Set configuration with the convey configure command.

convey configure --nats-url nats://localhost:4222 --nats-cluster test-cluster

By default, configuration is loaded from $HOME/.convey.yaml.

This is an example of .convey.yaml:

NatsURL: nats://localhost:4223
NatsClusterID: test-cluster

Use the --config flag on the command line to change the config file used if needed.

NATS Streaming Server

You can host your own NATS Streaming Server and configure convey to use that server.

Deploy to a local Docker container

docker run -p 4222:4222 nats-streaming:linux
convey configure --nats-url nats://localhost:4222 --nats-cluster test-cluster

You will need to use the --unsecure flag as TLS will not be enabled through this local container.


Set up

go get -u
cd $GOPATH/src/
go run main.go

Multi-platform Builds

go get
gox -ldflags "-X$(git rev-list -1 HEAD) -X" -os="linux darwin" -arch="amd64" -output="bin/{{.Dir}}_{{.OS}}_{{.Arch}}"



Click to expand each gif.

Convey with Top Convey for file piping Convey with millisecond date Convey with Cloud Shell


Convey source code is available under the MIT License.

You can’t perform that action at this time.