{"id":14563586,"url":"https://github.com/refraction-networking/water-rs","last_synced_at":"2025-04-10T13:05:21.379Z","repository":{"id":216412776,"uuid":"690187179","full_name":"refraction-networking/water-rs","owner":"refraction-networking","description":"WebAssembly Transport Executables Runtime -- A more \"Pluggable\" Transport","archived":false,"fork":false,"pushed_at":"2025-03-10T03:24:38.000Z","size":9725,"stargazers_count":17,"open_issues_count":10,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-24T11:45:38.085Z","etag":null,"topics":["censorship-circumvention","network","pluggable","proxy","transport","tunnel","webassembly"],"latest_commit_sha":null,"homepage":"","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/refraction-networking.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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}},"created_at":"2023-09-11T17:46:00.000Z","updated_at":"2025-01-28T02:38:14.000Z","dependencies_parsed_at":"2024-01-10T05:53:58.957Z","dependency_job_id":"f34d436f-b3f7-4020-a44f-74de891074bb","html_url":"https://github.com/refraction-networking/water-rs","commit_stats":null,"previous_names":["erikziyunchi/water-rs","refraction-networking/water-rs"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-networking%2Fwater-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-networking%2Fwater-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-networking%2Fwater-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/refraction-networking%2Fwater-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/refraction-networking","download_url":"https://codeload.github.com/refraction-networking/water-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248223827,"owners_count":21068069,"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":["censorship-circumvention","network","pluggable","proxy","transport","tunnel","webassembly"],"created_at":"2024-09-07T02:03:56.288Z","updated_at":"2025-04-10T13:05:21.351Z","avatar_url":"https://github.com/refraction-networking.png","language":"Rust","funding_links":[],"categories":["webassembly"],"sub_categories":[],"readme":"# W.A.T.E.R.: WebAssembly Transport Executables Runtime\n![GitHub License](https://img.shields.io/github/license/refraction-networking/water-rs)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Frefraction-networking%2Fwater-rs.svg?type=shield\u0026issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Frefraction-networking%2Fwater-rs?ref=badge_shield\u0026issueType=license)\n[![Build \u0026 Test Status](https://github.com/refraction-networking/water-rs/actions/workflows/rust.yml/badge.svg?branch=main)](https://github.com/refraction-networking/water-rs/actions/workflows/rust.yml)\n\n\u003cdiv style=\"width: 100%; height = 160px\"\u003e\n    \u003cdiv style=\"width: 75%; height: 150px; float: left;\"\u003e \n        WATER-rs provides a Rust runtime for WebAssembly Transport Modules(WATM) as a pluggable application-layer transport protocol provider. It is designed to be highly portable and lightweight, allowing for rapidly deployable pluggable transports. While other pluggable transport implementations require a fresh client deployment (and app-store review) to update their protocol WATER allows dynamic delivery of new transports in real time over the network.\u003cbr /\u003e\n        \u003cbr /\u003e\n    \u003c/div\u003e\n    \u003cdiv style=\"margin-left: 80%; height: 150px;\"\u003e \n        \u003cimg src=\".github/assets/logo_v0.svg\" alt=\"WATER wasm transport\" align=\"right\"\u003e\n    \u003c/div\u003e\n\u003c/div\u003e\n\nThe Go implementation of the runtime library can be found in [water-go](https://github.com/refraction-networking/water). We now also support building WATM in Go, please refer to [watm](https://github.com/refraction-networking/watm) for examples and helper libraries interfacing Pluggable Transports-like interfaces. Official Go compiler is currently not supported until further notice.\n\n### Cite our work\n\nIf you quoted or used our work in your own project/paper/research, please cite our paper [Just add WATER: WebAssembly-based Circumvention Transports](https://www.petsymposium.org/foci/2024/foci-2024-0003.pdf), which is published in the proceedings of Free and Open Communications on the Internet (FOCI) in 2024 issue 1, pages 22-28.\n\n\u003cdetails\u003e\n  \u003csummary\u003eBibTeX\u003c/summary\u003e\n    \n  ```bibtex\n  @inproceedings{water-foci24,\n      author = {Erik Chi and Gaukas Wang and J. Alex Halderman and Eric Wustrow and Jack Wampler},\n      title = {Just add {WATER}: {WebAssembly}-based Circumvention Transports},\n      booktitle = {Free and Open Communications on the Internet},\n      publisher = {},\n      year = {2024},\n      url = {https://www.petsymposium.org/foci/2024/foci-2024-0003.pdf},\n  }\n  ```\n\u003c/details\u003e\n\n**Update**: our paper has been accepted by FOCI and presented at [FOCI 2024](https://foci.community/foci24.html)!\n\n## Be Water\n\n\u003e Empty your mind, be formless, shapeless, like water. If you put water into a cup, it becomes the cup. You put water into a bottle and it becomes the bottle. You put it in a teapot, it becomes the teapot. Now, water can flow or it can crash. Be water, my friend.\n\u003e\n\u003e -- Bruce Lee\n\n## Contents\n\nThe repo contains 2 main components:\n1. A Rust crate [`water`](https://github.com/refraction-networking/water-rs/tree/main/crates/water) runtime library used to interact with `.wasm` WebAssembly Transport Modules(WATM).\n2. A Rust crate [`watm_v0`](https://github.com/refraction-networking/water-rs/tree/main/crates/watm_v0) for the v0 WATM-development where developers can easily create their own `.wasm` (the general version of `watm` is still under development).\n\n\nAlso include examples for demonstration of usage:\n1. ⭐ A standalone [`cli`](https://github.com/refraction-networking/water-rs/tree/main/examples/clients/cli) tool which is compatible with both `v0` and `v1_preview`, and can run all different roles with all of our example WATM binaries.\n2. A few examples WATM implementations with `water_wasm` crate, see [water-rs/tree/main/examples/water_bins](https://github.com/refraction-networking/water-rs/tree/main/examples/water_bins).\n3. Examples of using the above WATM examples with our `water` library, see [tests](https://github.com/refraction-networking/water-rs/tree/main/tests/tests) for usage.\n\n## Running tests\n\n```sh\n# runs ALL tests\ncargo test --workspace --verbose\n\n# run tests for a single crate\ncargo test -p \u003ccrate_name\u003e --verbose\n\n# run a single test (or test matching name prefix) in a single crate\ncargo test -p \u003ccrate_name\u003e --verbose -- \u003ctest_name\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefraction-networking%2Fwater-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frefraction-networking%2Fwater-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frefraction-networking%2Fwater-rs/lists"}