{"id":14008170,"url":"https://github.com/puppetlabs-toy-chest/wash","last_synced_at":"2025-07-24T03:32:10.649Z","repository":{"id":53710144,"uuid":"163899543","full_name":"puppetlabs-toy-chest/wash","owner":"puppetlabs-toy-chest","description":"Wide Area SHell: a cloud-native shell for bringing remote infrastructure to your terminal.","archived":true,"fork":false,"pushed_at":"2021-03-18T21:23:53.000Z","size":4839,"stargazers_count":179,"open_issues_count":60,"forks_count":29,"subscribers_count":49,"default_branch":"main","last_synced_at":"2024-04-10T10:21:42.737Z","etag":null,"topics":["cloud-native","go","shell"],"latest_commit_sha":null,"homepage":"https://puppetlabs.github.io/wash","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/puppetlabs-toy-chest.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null}},"created_at":"2019-01-02T23:19:12.000Z","updated_at":"2024-01-04T16:29:25.000Z","dependencies_parsed_at":"2022-09-13T08:41:00.370Z","dependency_job_id":null,"html_url":"https://github.com/puppetlabs-toy-chest/wash","commit_stats":null,"previous_names":["puppetlabs/wash"],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs-toy-chest%2Fwash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs-toy-chest%2Fwash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs-toy-chest%2Fwash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs-toy-chest%2Fwash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/puppetlabs-toy-chest","download_url":"https://codeload.github.com/puppetlabs-toy-chest/wash/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227410491,"owners_count":17774757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-native","go","shell"],"created_at":"2024-08-10T11:01:21.407Z","updated_at":"2024-11-30T19:30:50.031Z","avatar_url":"https://github.com/puppetlabs-toy-chest.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# wash (Wide Area SHell)\n\n[![GitHub release](https://img.shields.io/github/release/puppetlabs/wash.svg)](https://github.com/puppetlabs/wash/releases/) [![Build Status](https://travis-ci.com/puppetlabs/wash.svg)](https://travis-ci.com/puppetlabs/wash) [![GoDoc](https://godoc.org/github.com/puppetlabs/wash?status.svg)](https://godoc.org/github.com/puppetlabs/wash) [![Go Report Card](https://goreportcard.com/badge/github.com/puppetlabs/wash)](https://goreportcard.com/report/github.com/puppetlabs/wash)\n\n`wash` helps you deal with all your remote or cloud-native infrastructure using the UNIX-y patterns and tools you already know and love!\n\nFor an introduction to Wash, see our main site at https://pup.pt/wash.\n\n• [COMMUNITY](#community-feedback) • [DEVELOP](#developing-wash) • [ROADMAP](#roadmap)\n\n## Community Feedback\n\nWe're actively soliciting community feedback and input on our [roadmap](#roadmap)! Don't hesitate to file issues for new features, new plugin types, new primitives, new command-line tools, or anything else that crosses your mind. You can also chat with us directly on [`#wash`](https://puppetcommunity.slack.com/app_redirect?channel=wash) on [Slack](https://slack.puppet.com/). Please abide by our [code of conduct](https://github.com/puppetlabs/wash/blob/main/CODE_OF_CONDUCT.md) when interacting with the community.\n\nSee the [roadmap](#roadmap) below to see what we've got planned!\n\nWe'd also love to get contributions from you! For a quick guide, take a look at our guide to [contributing](./CONTRIBUTING.md).\n\n## Developing Wash\n\nSee https://pup.pt/wash/#getting-started for pre-requisites to run Wash.\n\nWash is a single binary application written in Go. It uses Go modules to identify dependencies.\n\nTo build it, run `go build`. To test, run `go test ./...`.\n\n\u003e Requires golang 1.12+.\n\nAcceptance tests are in the [test](test) directory. First build with `go build`, then run them using [BATS](https://github.com/bats-core/bats-core) with `PATH=.:$PATH bats test`.\n\nSee the [core plugin docs](CORE_PLUGIN_DEVELOPMENT.md) if you're interested in core plugin development.\n\n## Roadmap\n\nProject maintainers are not actively working on all of these things, but any of these are directions we would support others in pursuing.\n\n### Primitives\n\n* [ ] file/directory upload _(prereq for executing commands that aren't just one-liners)_\n* [x] edit a resource _(e.g. edit a file representing a k8s ConfigMap, and upon write save it via the k8s api)_\n* [x] delete a resource _(e.g. `rm`-ing a file in an S3 bucket deletes it)_\n* [x] signal handling to represent basic verbs _(e.g. sending a TERM to an EC2 instance will terminate it)_\n* [ ] copy / move / rename _(how should this work?)_\n* [ ] make `stream` able to \"go back in time\" _(e.g. support `tail -100 -f` style of \"look-back\")_\n\n### Daemon enhancements\n\n* [ ] rad startup ASCII art logo (\u003c- high priority!)\n* [X] expose plugin configuration via main config file\n* [ ] expose what API calls are in-flight (to report status on large, distributed calls)\n\n### CLI tools\n\n* [ ] colorized output for `ls`, similar to `exa -l`\n* [x] make `ls` emit something useful when used against non-`wash` resources\n* [ ] `exec` should work in parallel across multiple target resources\n* [ ] build an interactive shell that works over `exec` _(need to update plugins API to support this, most likely)_\n* [ ] a version of `top` that works using `wash` primitives to get information to display from multiple targets\n\n### Plugins / content\n\n|   | `list` | `read` | `stream` | `exec` | `meta` |\n| - | :-: | :-: | :-: | :-: | :-: |\n| **Docker** |\n| Containers | ✓ | | | ✓ | ✓ |\n| Container logs | | ✓ | ✓ |\n| Volumes | ✓ | ✓ | ○ | | ✓ |\n| Images | ○ | | | | ○ |\n| Networks | ○ | | | | ○ |\n| Services | ○ | ○ | ○ | | ○ |\n| Stacks | ○ | | | | ○ |\n| Swarm nodes | ○ | | | | ○ |\n| Swarm config | ○ | ○ | | | ○ |\n| **Kubernetes** |\n| Pods | ✓ | ✓ | ✓ | ✓ | ✓ |\n| Persistent Volume Claims | ✓ | ✓ | ✓ | | ✓ |\n| Services | ○ | | | | ○ |\n| ConfigMaps | ○ | ○ | | | ○ |\n| _generic k8s resources_ | ○ | | | | ○ |\n| **AWS** |\n| EC2 | ✓ | ✓ | ○ | ✓ | ✓ |\n| S3 buckets | ✓ | | | | ✓ |\n| S3 directories | ✓ |\n| S3 objects | | ✓ | ✓ | | ✓ |\n| Cloudwatch | ○ | ○ | ○ | | ○ |\n| Lambda | ○ | ○ | ○ | ○ | ○ |\n| _pubsub (e.g. SNS)_ | ○ | | ○ | | ○ |\n| _databases (e.g. dynamo, RDS)_ | ○ | ○ | ○ | ○ | ○ |\n| _networking (e.g. ELB, Route53)_ | ○ | ○ | ○ | ○ | ○ |\n| **SSH/WinRM targets** | ○ | | | ○ | |\n| **SSHfs** | ○ | ○ | ○ | | |\n| **GCP** | ○ | ○ | ○ | ○ | ○ |\n| **Azure** | ○ | ○ | ○ | ○ | ○ |\n| **VMware** | ○ | ○ | ○ | ○ | ○ |\n| **Splunk** | | ○ | ○ | ○ | |\n| **Logstash** | | ○ | ○ | ○ | |\n| **_Network Devices (e.g. Cisco)_** | ○ | ○ | ○ | ○ | ○ |\n| **_IoT (e.g. Nest, Hue, Rachio)_** | ○ | ○ | ○ | ○ | ○ |\n| **`wash` itself (expose internals)** | ○ | ○ | ○ | ○ | ○ |\n\n✓ = Implemented\n○ = Possible, but not yet implemented\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs-toy-chest%2Fwash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpuppetlabs-toy-chest%2Fwash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs-toy-chest%2Fwash/lists"}