{"id":13655935,"url":"https://github.com/wasmCloud/wash","last_synced_at":"2025-04-23T17:30:50.706Z","repository":{"id":38094465,"uuid":"301496018","full_name":"wasmCloud/wash","owner":"wasmCloud","description":"WAsmcloud SHell - the comprehensive command-line tool for wasmCloud development","archived":true,"fork":false,"pushed_at":"2023-10-31T14:46:05.000Z","size":2766,"stargazers_count":148,"open_issues_count":0,"forks_count":57,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-11-10T08:37:08.861Z","etag":null,"topics":["actors","cli","cloud-native","hacktoberfest","rust","webassembly"],"latest_commit_sha":null,"homepage":"https://wasmcloud.com","language":"Rust","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/wasmCloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-05T18:00:46.000Z","updated_at":"2024-11-07T06:54:06.000Z","dependencies_parsed_at":"2022-07-12T00:31:34.059Z","dependency_job_id":"ac9b44e3-80f0-4151-b451-ea8af9f19b68","html_url":"https://github.com/wasmCloud/wash","commit_stats":{"total_commits":375,"total_committers":48,"mean_commits":7.8125,"dds":0.8186666666666667,"last_synced_commit":"a9e92ea831e8f25e5741a9388106b20ce17753ba"},"previous_names":[],"tags_count":108,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wasmCloud%2Fwash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wasmCloud%2Fwash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wasmCloud%2Fwash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wasmCloud%2Fwash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wasmCloud","download_url":"https://codeload.github.com/wasmCloud/wash/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250480320,"owners_count":21437522,"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":["actors","cli","cloud-native","hacktoberfest","rust","webassembly"],"created_at":"2024-08-02T04:00:41.607Z","updated_at":"2025-04-23T17:30:45.948Z","avatar_url":"https://github.com/wasmCloud.png","language":"Rust","funding_links":[],"categories":["Tools","Rust","cli"],"sub_categories":[],"readme":"\u003e [!WARNING]\n\u003e\n\u003e `wash`, the wasmCloud Shell has moved, as discussed in our [2023/10/25 Community meeting][meeting-2023/10/25]!\n\u003e The code that powers wash is now found in the [`wasmCloud/wasmCloud` monorepo][gh-wasmcloud/wasmcloud],\n\u003e in the [`wasmCloud/crates/wash-cli`][gh-wash-folder] folder.\n\u003e\n\u003e We look forward to receiving your contributions, feedback, and user reports at the new home for `wash` code!\n\n[gh-wasmCloud/wasmCloud]: https://github.com/wasmCloud/wasmCloud\n[gh-wash-folder]: https://github.com/wasmCloud/wasmCloud/tree/main/crates/wash-cli\n[meeting-2023/10/25]: https://wasmcloud.com/community/2023/10/25/community-meeting\n\n[![Latest Release](https://img.shields.io/github/v/release/wasmcloud/wash?color=success\u0026include_prereleases)](https://github.com/wasmCloud/wash/releases)\n[![Rust Version](https://img.shields.io/badge/rustc-1.66.0-orange.svg)](https://blog.rust-lang.org/2022/12/15/Rust-1.66.0.html)\n[![Contributors](https://img.shields.io/github/contributors/wasmcloud/wash)](https://github.com/wasmCloud/wash/graphs/contributors)\n[![wash-cli](https://img.shields.io/crates/v/wash-cli)](https://crates.io/crates/wash-cli)\n\n```\n                                     _                 _    _____ _          _ _\n                                ____| |               | |  / ____| |        | | |\n __      ____ _ ___ _ __ ___  / ____| | ___  _   _  __| | | (___ | |__   ___| | |\n \\ \\ /\\ / / _` / __| '_ ` _ \\| |    | |/ _ \\| | | |/ _` |  \\___ \\| '_ \\ / _ \\ | |\n  \\ V  V / (_| \\__ \\ | | | | | |____| | (_) | |_| | (_| |  ____) | | | |  __/ | |\n   \\_/\\_/ \\__,_|___/_| |_| |_|\\_____|_|\\___/ \\__,_|\\__,_| |_____/|_| |_|\\___|_|_|\n```\n\n- [Why wash](#why-wash)\n- [Installing wash](#installing-wash)\n  - [Cargo](#cargo)\n  - [Linux (deb/rpm + apt)](#linux-debrpm--apt)\n  - [Linux (snap)](#linux-snap)\n  - [MacOS (brew)](#macos-brew)\n  - [Windows (choco)](#windows-choco)\n  - [Nix](#nix)\n- [Using wash](#using-wash)\n  - [build](#build)\n  - [call](#call)\n  - [claims](#claims)\n  - [ctl](#ctl)\n  - [ctx](#ctx)\n  - [drain](#drain)\n  - [gen](#gen)\n  - [keys](#keys)\n  - [lint](#lint)\n  - [new](#new)\n  - [par](#par)\n  - [reg](#reg)\n  - [up](#up)\n  - [validate](#validate)\n- [Contributing to wash](#contributing-to-wash)\n  - [Developer guide](#developer-guide)\n\n## Why wash\n\n`wash` is a bundle of command line tools that, together, form a comprehensive CLI for [wasmCloud](https://wasmcloud.dev) development. Everything from generating new wasmCloud projects, managing cryptographic signing keys, and interacting with OCI compliant registries is contained within the subcommands of `wash`. Our goal with `wash` is to encapsulate our tools into a single binary to make developing WebAssembly with wasmCloud painless and simple.\n\n## Installing wash\n\n### Cargo\n\n```\ncargo install wash-cli\n```\n\n### Linux (deb/rpm + apt)\n\n```\n# Debian / Ubuntu (deb)\ncurl -s https://packagecloud.io/install/repositories/wasmcloud/core/script.deb.sh | sudo bash\n# Fedora (rpm)\ncurl -s https://packagecloud.io/install/repositories/wasmcloud/core/script.rpm.sh | sudo bash\n\nsudo apt install wash\n```\n\n### Linux (snap)\n\n```\nsudo snap install wash --edge --devmode\n```\n\n### MacOS (brew)\n\n```\nbrew tap wasmcloud/wasmcloud\nbrew install wash\n```\n\n### Windows (choco)\n\n```powershell\nchoco install wash\n```\n\n### Nix\n\n```\nnix run github:wasmCloud/wash\n```\n\n## Using wash\n\n`wash` has multiple subcommands, each specializing in one specific area of the wasmCloud development process.\n\n### build\n\nBuilds and signs the actor, provider, or interface as defined in a `wasmcloud.toml` file. Will look for configuration file in directory where command is being run.  \nThere are three main sections of a `wasmcloud.toml` file: common config, language config, and type config.\n\n#### Common Config\n\n| Setting       | Type   | Default                       | Description                                                                            |\n| ------------- | ------ | ----------------------------- | -------------------------------------------------------------------------------------- |\n| name          | string |                               | Name of the project                                                                    |\n| version       | string |                               | Semantic version of the project                                                        |\n| path          | string | `{pwd}`                       | Path to the project directory to determine where built and signed artifacts are output |\n| wasm_bin_name | string | \"name\" setting                | Expected name of the wasm module binary that will be generated                         |\n| language      | enum   | [rust, tinygo]                | Language that actor or provider is written in                                          |\n| type          | enum   | [actor, provider, interface ] | Type of wasmcloud artifact that is being generated                                     |\n\n#### Language Config - [tinygo]\n\n| Setting     | Type   | Default        | Description                   |\n| ----------- | ------ | -------------- | ----------------------------- |\n| tinygo_path | string | `which tinygo` | The path to the tinygo binary |\n\n#### Language Config - [rust]\n\n| Setting     | Type   | Default       | Description                             |\n| ----------- | ------ | ------------- | --------------------------------------- |\n| cargo_path  | string | `which cargo` | The path to the cargo binary            |\n| target_path | string | ./target      | Path to cargo/rust's `target` directory |\n\n#### Type Config - [actor]\n\n| Setting       | Type    | Default                | Description                                                                                               |\n| ------------- | ------- | ---------------------- | --------------------------------------------------------------------------------------------------------- |\n| claims        | list    | []                     | The list of provider claims that this actor requires. eg. [\"wasmcloud:httpserver\", \"wasmcloud:blobstore\"] |\n| registry      | string  | localhost:8080         | The registry to push to. eg. \"localhost:8080\"                                                             |\n| push_insecure | boolean | false                  | Whether to push to the registry insecurely                                                                |\n| key_directory | string  | `~/.wash/keys`         | The directory to store the private signing keys in                                                        |\n| filename      | string  | \u003cbuild_output\u003e\\_s.wasm | The filename of the signed wasm actor                                                                     |\n| wasm_target   | string  | wasm32-unknown-unknown | Compile target                                                                                            |\n| call_alias    | string  |                        | The call alias of the actor                                                                               |\n\n#### Type Config - [provider]\n\n| Setting       | Type   | Default | Description                       |\n| ------------- | ------ | ------- | --------------------------------- |\n| capability_id | string |         | The capability ID of the provider |\n| vendor        | string |         | The vendor name of the provider   |\n\n#### Type Config - [interface]\n\n| Setting        | Type   | Default | Description               |\n| -------------- | ------ | ------- | ------------------------- |\n| html_target    | string | ./html  | Directory to output HTML  |\n| codegen_config | string | .       | Path to codegen.toml file |\n\n#### Example\n\n```toml\nname = \"echo\"\nlanguage = \"rust\"\ntype = \"actor\"\nversion = \"0.1.0\"\n\n[actor]\nclaims = [\"wasmcloud:httpserver\"]\n\n[rust]\ncargo_path = \"/tmp/cargo\"\n```\n\n### call\n\nInvoke a wasmCloud actor directly with a specified payload. This allows you to test actor handlers without the need to manage capabilities and link definitions for a rapid development feedback loop.\n\n### claims\n\nGenerate JWTs for actors, capability providers, accounts and operators. Sign actor modules with claims including capability IDs, expiration, and keys to verify identity. Inspect actor modules to view their claims.\n\n### completions\n\nGenerate shell completion files for Zsh, Bash, Fish, or PowerShell.\n\n### ctl\n\nInteract directly with a wasmCloud [control-interface](https://github.com/wasmCloud/control-interface), allowing you to imperatively schedule actors, providers and modify configurations of a wasmCloud host. Can be used to interact with local and remote control-interfaces.\n\n### ctx\n\nAutomatically connect to your previously launched wasmCloud lattice with a managed context or use contexts to administer remote wasmCloud lattices.\n\n### drain\n\nManage contents of the local wasmCloud cache. wasmCloud manages a local cache that will avoid redundant fetching of content when possible. `drain` allows you to manually clear that cache to ensure you're always pulling the latest versions of actors and providers that are hosted in remote OCI registries.\n\n### gen\n\nGenerate code from [smithy](https://awslabs.github.io/smithy/index.html) files using [weld codegen](https://github.com/wasmCloud/weld/tree/main/codegen). This is the primary method of generating actor and capability provider code from .smithy interfaces. Currently has first class support for Rust actors and providers, along with autogenerated HTML documentation.\n\n### keys\n\nGenerate ed25519 keys for securely signing and identifying wasmCloud entities (actors, providers, hosts). Read more about our decision to use ed25519 keys in our [ADR](https://wasmcloud.github.io/adr/0005-security-nkeys.html).\n\n### lint\n\nPerform lint checks on .smithy models, outputting warnings for best practices with interfaces.\n\n### new\n\nCreate new wasmCloud projects from predefined [templates](https://github.com/wasmCloud/project-templates). This command is a one-stop-shop for creating new actors, providers, and interfaces for all aspects of your application.\n\n### par\n\nCreate, modify and inspect [provider archives](https://github.com/wasmCloud/wasmCloud/tree/main/crates/provider-archive), a TAR format that contains a signed JWT and OS/Architecture specific binaries for native capability providers.\n\n### reg\n\nPush and Pull actors and capability providers to/from OCI compliant registries. Used extensively in our own CI/CD and in local development, where a local registry is used to store your development artifacts.\n\n### up\n\nBootstrap a wasmCloud environment in one easy command, supporting both launching NATS and wasmCloud in the background as well as an \"interactive\" mode for shorter lived hosts.\n\n### validate\n\nPerform validation checks on .smithy models, ensuring that your interfaces are valid and usable for codegen and development.\n\n## Shell auto-complete\n\n`wash` has support for autocomplete for Zsh, Bash, Fish, and PowerShell.\nSee [Completions](./Completions.md) for instructions for installing\nautocomplete for your shell.\n\n## Contributing to wash\n\nVisit [CONTRIBUTING.md](./CONTRIBUTING.md) for more information on how to contribute to `wash` project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FwasmCloud%2Fwash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FwasmCloud%2Fwash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FwasmCloud%2Fwash/lists"}