{"id":21659585,"url":"https://github.com/bytecodealliance/registry","last_synced_at":"2025-07-12T01:13:16.255Z","repository":{"id":64402082,"uuid":"511180205","full_name":"bytecodealliance/registry","owner":"bytecodealliance","description":"WebAssembly Registry (Warg)","archived":false,"fork":false,"pushed_at":"2025-07-03T21:03:19.000Z","size":5539,"stargazers_count":213,"open_issues_count":34,"forks_count":33,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-07-12T00:44:55.682Z","etag":null,"topics":[],"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/bytecodealliance.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-07-06T14:53:48.000Z","updated_at":"2025-07-11T07:49:40.000Z","dependencies_parsed_at":"2023-11-20T21:28:32.979Z","dependency_job_id":"8c362856-557f-485f-8d61-9f6f2860b903","html_url":"https://github.com/bytecodealliance/registry","commit_stats":{"total_commits":115,"total_committers":7,"mean_commits":"16.428571428571427","dds":0.6173913043478261,"last_synced_commit":"bfe599ad459289d3fd46c8ef69ae183a50325ea8"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/bytecodealliance/registry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytecodealliance%2Fregistry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytecodealliance%2Fregistry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytecodealliance%2Fregistry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytecodealliance%2Fregistry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bytecodealliance","download_url":"https://codeload.github.com/bytecodealliance/registry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bytecodealliance%2Fregistry/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264922785,"owners_count":23683689,"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":[],"created_at":"2024-11-25T09:31:16.655Z","updated_at":"2025-07-12T01:13:16.246Z","avatar_url":"https://github.com/bytecodealliance.png","language":"Rust","readme":"\u003e [!WARNING]  \n\u003e This repository is no longer being actively developed by Bytecode Alliance members.\n\u003e Work on an OCI-based registry system continues in the\n\u003e [bytecodealliance/wasm-pkg-tools repository](https://github.com/bytecodealliance/wasm-pkg-tools).\n\u003e Any questions about this repository can be discussed in that repository or the\n\u003e [Bytecode Alliance Zulip #SIG-Packaging channel](https://bytecodealliance.zulipchat.com/#narrow/channel/441851-SIG-Packaging).\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e\u003ccode\u003eWebAssembly Registry (Warg)\u003c/code\u003e\u003c/h1\u003e\n\n\u003cstrong\u003eA \u003ca href=\"https://bytecodealliance.org/\"\u003eBytecode Alliance\u003c/a\u003e project\u003c/strong\u003e\n\n  \u003cp\u003e\n    \u003cstrong\u003eThe reference implementation of the Warg protocol, client, and server for distributing \u003ca href=\"https://github.com/WebAssembly/component-model/\"\u003eWebAssembly components and interfaces\u003c/a\u003e as well as core modules.\u003c/strong\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/bytecodealliance/registry/actions/workflows/main.yml\"\u003e\u003cimg src=\"https://github.com/bytecodealliance/registry/actions/workflows/main.yml/badge.svg\" alt=\"build status\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://crates.io/crates/warg-cli\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/warg-cli.svg?style=flat-square\" alt=\"Crates.io version\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://crates.io/crates/warg-cli\"\u003e\u003cimg src=\"https://img.shields.io/crates/d/warg-cli.svg?style=flat-square\" alt=\"Download\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://docs.rs/warg-client/latest/warg_client/\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-latest-blue.svg?style=flat-square\" alt=\"docs.rs docs\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## Overview\n\nThis repository contains the reference implementation of the Warg protocol, a client library,\nserver, and CLI.\n\nA Warg client and server can be used to distribute WebAssembly components to\nvarious component tooling.\n\nSee the [introduction](docs/README.md) for the design decisions and scope.\n\n## Prerequisites\n\n- Install the latest [stable Rust](https://www.rust-lang.org/tools/install).\n\n## Installation\n\nTo install or upgrade the `warg` CLI:\n```\ncargo install warg-cli\n```\n\nTo install or upgrade the reference implementation server:\n```\ncargo install warg-server\n```\n\n\n## Getting Started\n\n### Running the server\n\nBefore running the server, set the `WARG_OPERATOR_KEY` environment\nvariable:\n\n```\nexport WARG_OPERATOR_KEY=\"ecdsa-p256:I+UlDo0HxyBBFeelhPPWmD+LnklOpqZDkrFP5VduASk=\"\n```\n\n`WARG_OPERATOR_KEY` is the private key of the server operator.\n\nCurrently this is sourced through an environment variable, but soon this will \nbe sourced via command line arguments or integration with system key rings.\n\nUse `cargo` to run the server:\n\n```\nmkdir content\ncargo run -p warg-server -- --content-dir content\n```\n\nThe `content` directory created here is where the server will store package \ncontents.\n\n**Note: currently the server stores its state only in memory, so it will be \nlost when the server is restarted. A persistence layer will be added in the \nnear future.**\n\n### Setting up the client\n\nStart by configuring the client to use the local server's URL:\n\n```\nwarg config --registry http://127.0.0.1:8090\n```\n\nThis creates a [`$CONFIG_DIR/warg/config.json`][config_dir] configuration file; \nthe configuration file will specify the home registry URL to use so that the\n`--registry` option does not need to be specified for every command.\n\nData downloaded by the client is stored in [`$CACHE_DIR/warg`][cache_dir] by \ndefault.\n\nNext, create a new signing key to publish packages with:\n\n```\nwarg key new --registry 127.0.0.1:8090\n```\n\nThe new signing key will be stored in your operating system's key store and\nused to sign package log entries when publishing to the registry.\n\n[config_dir]: https://docs.rs/dirs/5.0.0/dirs/fn.config_dir.html\n[cache_dir]: https://docs.rs/dirs/5.0.0/dirs/fn.cache_dir.html\n\n### Publishing a package\n\nA new package can be initialized by running:\n\n```\nwarg publish init example:hello\n```\n\nThis creates a new package in the `example` namespace with the name `hello`.\n\nA version of the package can be published by running:\n\n```\nwarg publish release --name example:hello --version 0.1.0 hello.wasm\n```\n\nThis publishes a package named `example:hello` with version `0.1.0` and content from \n`hello.wasm`.\n\nAlternatively, the above can be batched into a single publish operation:\n\n```\nwarg publish start example:hello\nwarg publish init example:hello\nwarg publish release --name example:hello --version 0.1.0 hello.wasm\nwarg publish submit\n```\n\nHere the records created from initializing the package and releasing version\n0.1.0 are made as part of the same transaction.\n\nUse `warg publish abort` to abort a pending publish operation.\n\n### Managing package permissions\n\n\u003e Note: The package permissions system is a work in progress.\n\nYou can grant permissions to another public key with the `warg publish grant` subcommand:\n\n```\nwarg publish grant --name example:hello ecdsa-p256:ABC...\n```\n\n\u003e You can get your own public key with the `warg key info` subcommand.\n\nBy default, both `publish` and `yank` permissions are granted. This can be modified with the `--permission` flag.\n\nSimilarly, permissions may be revoked via `warg publish revoke`. Note that\nkeys are identified by ID (fingerprint) for revocation:\n\n```\nwarg publish revoke --name example:hello sha256:abc...\n```\n\n### Resetting and clearing local data\n\nTo reset local package log data for registries:\n```\nwarg reset\n```\n\nTo clear downloaded package content for all registries:\n```\nwarg clear\n```\n\n\n## Contributing\n\nThis is a [Bytecode Alliance](https://bytecodealliance.org/) project, and\nfollows the Bytecode Alliance's [Code of Conduct](CODE_OF_CONDUCT.md) and\n[Organizational Code of Conduct](ORG_CODE_OF_CONDUCT.md).\n\n### Getting the Code\n\nYou'll clone the code via `git`:\n\n```\ngit clone https://github.com/bytecodealliance/registry\n```\n\n### Testing Changes\n\nIdeally, there should be tests written for all changes.\n\nRun the tests of the in-memory implementation of the `warg-server`:\n\n```\ncargo test --workspace\n```\n\nRun the tests of the Postgres implementation of the `warg-server`:\n\n```\ndocker run -d --name postgres-test -e POSTGRES_PASSWORD=password -p 5433:5432 postgres\ndiesel database setup --database-url postgres://postgres:password@localhost:5433/test-registry --migration-dir crates/server/src/datastore/postgres/migrations\nWARG_DATABASE_URL=postgres://postgres:password@localhost:5433/test-registry cargo test --features postgres -- --nocapture\n```\n\nYou may need to install [Docker](https://www.docker.com/get-started/) and the\n[Diesel CLI](https://diesel.rs/guides/getting-started) first with the Postgres feature.\n\n```\ncargo install diesel_cli --no-default-features --features postgres\n```\n\n\n### Submitting Changes\n\nChanges to this repository are managed through pull requests (PRs). Everyone\nis welcome to submit a pull request! We'll try to get to reviewing it or\nresponding to it in at most a few days.\n\n### Code Formatting\n\nCode is required to be formatted with the current Rust stable's `cargo fmt`\ncommand. This is checked on CI.\n\n### Continuous Integration\n\nThe CI for the repository is relatively significant. It tests changes on\nWindows, macOS, and Linux.\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbytecodealliance%2Fregistry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbytecodealliance%2Fregistry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbytecodealliance%2Fregistry/lists"}