{"id":36890855,"url":"https://github.com/egdaemon/wasinet","last_synced_at":"2026-01-12T15:36:56.578Z","repository":{"id":269572033,"uuid":"906983455","full_name":"egdaemon/wasinet","owner":"egdaemon","description":"golang wasi sockets library","archived":false,"fork":false,"pushed_at":"2025-07-31T12:13:20.000Z","size":8293,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-31T16:07:26.142Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/egdaemon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-12-22T13:45:08.000Z","updated_at":"2025-07-31T12:13:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"1e3b13a2-02ea-4ba7-86d7-2aaedc2136ae","html_url":"https://github.com/egdaemon/wasinet","commit_stats":null,"previous_names":["egdaemon/wasinet"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/egdaemon/wasinet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egdaemon%2Fwasinet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egdaemon%2Fwasinet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egdaemon%2Fwasinet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egdaemon%2Fwasinet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/egdaemon","download_url":"https://codeload.github.com/egdaemon/wasinet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egdaemon%2Fwasinet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28341067,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-01-12T15:36:56.499Z","updated_at":"2026-01-12T15:36:56.572Z","avatar_url":"https://github.com/egdaemon.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"### alpha quality.\n\nwhile the base test harness excercises the code. this software hasnt been battled tested to the extent we'd be happy saying its production ready.\nwe're working on it. help in this area is always appreciated.\n\n### wasi networking functionality for golang.\n\nThis is a quick and simple socket implementation for golang in wasi that doesnt try to interopt with the wider ecosystem\nthat currently exists. the existing ecosystem requires munging the wasip1 namespace, which causes issues with incompatibilities.\n\nwasinet provides its own namespaced functions and _leverages_ the wasip1 namespace where necessary. primarily clock and poll functionality.\n\n### known missing functionality.\n\n- system TLS certificates dont work.\n- many socopts are untested.\n\nthese issues will be resolved if people provide written tests to the repository exposing the issues encountered or if we run into them in our own systems.\n\n### what kinds of PRs we'll accept.\n\n- test cases.\n- implementation of missing functionality (soc options, weird non-standard _network_ behaviors)\n- we'd take PRs that fix the interopt with the wider ecosystem as well, its just the authors opinion that currently its not worth the\n  effort based on the internal api's they expose.\n\n### commercial licensing available\n\nwe understand many companies avoid GPLv3 licenses, feel free to reach out to [us](mailto:engineering@egdaemon.com) for alternative licensing for your company.\n\n### usage\n\n```golang\ngo get -u github.com/egdaemon/wasinet/wasinet@latest github.com/egdaemon/wasinet/wazeronet@latest\n```\n\n```golang\npackage main\n\nimport (\n    \"github.com/egdaemon/wasinet/wasinet\"\n    \"github.com/egdaemon/wasinet/wasinet/autohijack\"\n)\n\nfunc main() {\n\t// required because of the tls certificate resolution doesnt work in wasi environments by default.\n\thttp.DefaultTransport = wasinet.InsecureHTTP()\n\thttp.Get(\"https://www.google.com\")\n}\n```\n\n```golang\npackage example\n\nimport (\n\t\"context\"\n\n\t\"github.com/egdaemon/wasinet/wasinet/wnetruntime\"\n\t\"github.com/egdaemon/wasinet/wazeronet\"\n)\n\nfunc Wazero(runtime wazero.Runtime) wazero.HostModuleBuilder {\n\treturn wazeronet.Module(runtime, wnetruntime.Unrestricted())\n}\n```\n\n### Rationale\n\nDue to the slow nature of committee and ecosystem politics between systems its taking too much time to have an interropt solution.\n\nThe wider ecosystem in the wild is based of wasmer edge implementation which is unnecessarily complicated to implement and runtimes like wazero\ndon't have the api to properly intergrate networking piecemeal in the wasi_snapshot_preview1 namespace.\n\nGolang maintainers have little to no interest in a stopgap solution in the stdlib due to overly pedantic adherence to the go compatibility promises despite precendent for experimental features in stdlib existing in the past.\n\nThis has resulted in fragmented wasi_snapshot_preview1 implementations where you can't extend the wasi_snapshot_preview1 namespace with networking infrastructure and inconsistent behavior between the implementations even in the same langauge ecosystem.\n\nNow, do not misunderstand us, we understand everyones position which is why we wrote this library. its meant to be a stop gap that\nis as transparent as possible until the ecosystem at large gets its act together. In the meantime this library is meant to be simple to inject,\nand be runtime agnostic while enabling network functionality within a guest wasi binary written in golang and using this library.\n\nI'd like to thank the authors of [wazero](https://github.com/tetratelabs/wazero), and [dispatchrun/net](https://github.com/dispatchrun/net). both wonderful pieces of software and I shameless plumbed their depths when implementing this library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegdaemon%2Fwasinet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fegdaemon%2Fwasinet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegdaemon%2Fwasinet/lists"}