Convey is a command-line tool with a simple goal, to make it easy to pipe between machines.
$ echo "Hello from Convey" | convey 21f50fba373e11e9990a72000872a940
$ convey 21f50fba373e11e9990a72000872a940 Hello from Convey
Pipes enable a sequence of processes to be chained together by their standard streams (stdin, stdout, stderr) so that the output of each process feeds into the input of the next one. A pipe is a unidirectional data channel; data flows from left to right. All processes of a pipeline are started at the same time and their streams are appropriately connected.
Convey is a command-line tool written in Go that can interact with stdin, stdout and stderr. It has two modes. The first is reading from stdin to write data to a channel. The second is reading from a given channel and writing that data to stdout.
Here is an example. We first pipe to
grep and then pipe to
convey. When can then read the contents of this channel from another machine. If we wanted, we could further pipe that output to other commands, thereby continuing the pipeline.
$ ls -la | grep myfile.txt | convey e123c03deae24e74ab632ff3f51164fb
$ convey e123c03deae24e74ab632ff3f51164fb -rw-r--r--debekoe 31 Feb 3 01:00 myfile.txt
Below is a sample of use-cases to get you started. We expect many more uses for this in the future.
Developers working across multiple hosts
Developers working across multiple hosts can use Convey to share pipelines between these hosts. For example, you can pipe from a VM or container running in the cloud to your local machine with no SSH or tunneling required.
In the video below, we pipe a
package.json file from a VM to a local machine. We then start a pipe that prints a line every second and stream that output from the VM to the local machine while preserving the stream from before the client connected. Finally in the video, we up the stakes by streaming the time every millisecond from VM to local machine. Convey handles it just fine.
Cloud Shell users
Both Azure and Google Cloud provide web-based shells available in the browser. These are great to administer and manage resources in the respective clouds. However, actual application development typically happens on a developers’ machine, not in the Cloud Shell. With Convey, we can reduce some friction here by making it easy to pipe between Cloud Shells and a dev machine. Check out the video below for a couple of examples. When watching the video, notice that we also pipe the colorization to the Cloud Shells.
When you want to share command output with others
Finally, Convey is great for when you quickly want to send terminal output to a team member for example for diagnostics or debugging purposes. Check out the video below of using the standard
top command with
Try it out yourself
Convey is straightforward to get started with. All you need is to download the client for your platform then run it.
Download for Linux
wget -qO convey https://get.convey.sh/linux chmod +x convey
Download for macOS
wget -qO convey https://get.convey.sh/macos chmod +x convey
Download for Windows
.exe from https://get.convey.sh/windows
Then, run it...
$ echo "Hello from Convey" | convey --demo 21f50fba373e11e9990a72000872a940
$ convey --demo 21f50fba373e11e9990a72000872a940 Hello from Convey
--demo flag for experimental purposes only.
When you are convinced in the value of Convey to your developer productivity, create your own instance of the server and connect securely to that. See our README for information on this.
To learn more about Convey, submit feedback or suggest new features, visit our GitHub repository.