Wash helps you deal with all your remote or cloud-native infrastructure using the UNIX-y patterns and tools you already know and love.


Wash aims to:

Exploring, understanding, and inspecting modern infrastructure should be simple and straightforward. Whether it’s containers, VMs, network devices, IoT stuff, or anything in between…they all have different ways of enumerating what you have, getting a stream of output, running commands, etc. Every vendor has its own tools and APIs that expose these features, each one different, each one bespoke. Thus, they are difficult to compose together to solve higher-level problems. And that’s no fun at all!

UNIX’s philosophy and abstractions have worked for decades. They’re pretty good, and more importantly, they’re familiar to millions of people. Wash intends to apply those same philosophies and abstractions to modern, distributed infrastructure.

Getting started

Wash is distributed as a single binary, and the only prerequisite is libfuse. Thus, getting going is pretty simple:

  1. Download the Wash binary for your platform
    • or install with brew install puppetlabs/puppet/wash
  2. Install libfuse, if you haven’t already
    • E.g. on MacOS using homebrew: brew cask install osxfuse
    • E.g. on CentOS: yum install fuse fuse-libs
    • E.g. on Ubuntu: apt-get install fuse
  3. Start Wash
    • ./wash

At this point, if you haven’t already, you should fire up some resources that Wash can actually introspect. Otherwise, as Han Solo would say, “this is going to be a real short trip”. So fire up some Docker containers, create some EC2 instances, toss some files into S3, launch a Kubernetes pod, etc.

For more of a guided tour that includes spinning up some resources Wash can talk to, check out our docker compose example.

Once the server is up, you can use vanilla ls, cd, etc. to explore. You can then start experimenting with Wash commands, like wash ls and wash tail, to navigate that filesystem in a more Wash-optimized way. Wash provides wrappers for some of these; you can usually find the native POSIX variants in /usr/bin or /bin.

When you’re done, exit the shell.

Current features

Wash does a lot already, with more to come:

We’ve implemented a number of handy Wash commands (docs):

Core plugins (and we’re adding more all the time, see our docs for how to help):

External plugins:

For more information about future direction, see our Roadmap!


There are tons of ways to get involved with Wash, whether or not you’re a programmer!

Come check us out on github, and in particular check out the contribution guidelines and the code of conduct.