{"id":21659295,"url":"https://github.com/WebAssembly/wasi-http","last_synced_at":"2025-07-17T22:31:45.905Z","repository":{"id":65947639,"uuid":"390872717","full_name":"WebAssembly/wasi-http","owner":"WebAssembly","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-10T19:44:07.000Z","size":388,"stargazers_count":189,"open_issues_count":37,"forks_count":30,"subscribers_count":35,"default_branch":"main","last_synced_at":"2025-06-10T20:41:00.005Z","etag":null,"topics":["proposal","wasi"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WebAssembly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-07-29T23:17:17.000Z","updated_at":"2025-06-10T19:44:11.000Z","dependencies_parsed_at":"2023-11-13T23:27:53.029Z","dependency_job_id":"d5e1d655-8dcd-42ce-8b46-c58eb47e1208","html_url":"https://github.com/WebAssembly/wasi-http","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/WebAssembly/wasi-http","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebAssembly%2Fwasi-http","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebAssembly%2Fwasi-http/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebAssembly%2Fwasi-http/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebAssembly%2Fwasi-http/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WebAssembly","download_url":"https://codeload.github.com/WebAssembly/wasi-http/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebAssembly%2Fwasi-http/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265672334,"owners_count":23808842,"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":["proposal","wasi"],"created_at":"2024-11-25T09:30:47.841Z","updated_at":"2025-07-17T22:31:45.524Z","avatar_url":"https://github.com/WebAssembly.png","language":null,"readme":"# WASI HTTP\n\nA proposed [WebAssembly System Interface](https://github.com/WebAssembly/WASI) API.\n\n### Current Phase\n\nwasi-http is currently in [Phase 3](https://github.com/WebAssembly/WASI/blob/main/Proposals.md#phase-3---implementation-phase-cg--wg)\n\n### Champions\n\n* Piotr Sikora\n* Jiaxiao Zhou\n* Dan Chiarlone\n* David Justice\n* Luke Wagner\n\n### Portability Criteria\n\nWASI-http must have at least two complete independent implementations\ndemonstrating embeddability in a production HTTP server context.\n\n### Introduction\n\nThe WASI-http proposal defines a collection of [interfaces] for sending and\nreceiving HTTP requests and responses. WASI-http additionally defines a\n[world], `wasi:http/proxy`, that circumscribes a minimal execution environment\nfor wasm HTTP [proxies].\n\n[Interfaces]: https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md#wit-interfaces\n[World]: https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md#wit-worlds\n[Proxies]: https://httpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html#intermediaries\n\n### Goals\n\nThe proposal intends to abstract over HTTP version and transport protocol\nchoices (such as HTTP/1.1, HTTP/2 or HTTP/3) by mapping directly to the\nabstract [HTTP Semantics], allowing hosts to (mostly) transparently use any of\nthese.\n\nThe `wasi:http/proxy` world is meant to be implementable by a wide variety of\nhosts including Web [service workers], forward- and reverse-[proxies] and\n[origin servers] by requiring a minimal set of additional runtime support.\n\nThe `wasi:http/proxy` world is meant to support flexible auto-scaling\n(\"serverless\") execution by moving the core `accept()` loop into the host and\nallowing the host to dynamically spin up wasm instances in response to arriving\nrequests.\n\nThe `wasi:http/proxy` world is meant to allow the chaining of HTTP\nintermediaries to be implemented directly in terms of [Component Model] linking.\n(Fully realizing this goal will require additional features only available in\nthe [Preview 3] timeframe.)\n\n[HTTP Semantics]: https://httpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html\n[Service Workers]: https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API\n[Origin Servers]: https://httpwg.org/http-core/draft-ietf-httpbis-semantics-latest.html#origin.server\n[Component Model]: https://github.com/WebAssembly/component-model/\n[Preview 3]: https://github.com/WebAssembly/WASI/blob/main/docs/WitInWasi.md#streams\n\n### Non-goals\n\nWASI-http does not intend to define a more fully-featured cloud execution\nenvironment (for this, see the [wasi-cloud-core] proposal).\n\n[wasi-cloud-core]: https://github.com/WebAssembly/wasi-cloud-core\n\n### API walk-through\n\nThe proposal can be understood by first reading the comments of [`proxy.wit`],\nthen [`handler.wit`] and finally [`types.wit`].\n\n[`proxy.wit`]: ./wit/proxy.wit\n[`handler.wit`]: ./wit/handler.wit\n[`types.wit`]: ./wit/types.wit\n\n### Working with the WIT\n\nBindings can be generated from the `wit` directory via:\n```\nwit-bindgen c wit/ --world proxy\n```\nand can be validated and otherwise manipulated via:\n```\nwasm-tools component wit wit/ ...\n```\n\nThe `wit/deps` directory contains a live snapshot of the contents of several\nother WASI proposals upon which this proposal depends. It is automatically\nupdated by running [`wit-deps update`](https://crates.io/crates/wit-deps-cli)\nin the root directory, which fetches the live contents of the `main` branch of\neach proposal. As things stabilize, `wit/deps.toml` will be updated to refer to\nversioned releases.\n\n### References \u0026 acknowledgements\n\n* This proposal was seeded by and developed in consultation with\n  [proxy-wasm](https://github.com/proxy-wasm/spec).\n\n","funding_links":[],"categories":["Others"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWebAssembly%2Fwasi-http","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FWebAssembly%2Fwasi-http","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FWebAssembly%2Fwasi-http/lists"}