{"id":35043677,"url":"https://github.com/hack-ink/polkadot-runtime-releaser","last_synced_at":"2026-05-14T16:01:59.052Z","repository":{"id":269307454,"uuid":"887926112","full_name":"hack-ink/polkadot-runtime-releaser","owner":"hack-ink","description":"Streamline the process of releasing a new runtime for the Polkadot-SDK-based chain.","archived":false,"fork":false,"pushed_at":"2025-10-20T00:21:19.000Z","size":432,"stargazers_count":2,"open_issues_count":5,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-28T22:40:48.895Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hack-ink.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-11-13T14:18:44.000Z","updated_at":"2025-10-23T12:55:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"8f089d57-167f-450a-a376-e5916f0b52de","html_url":"https://github.com/hack-ink/polkadot-runtime-releaser","commit_stats":null,"previous_names":["hack-ink/polkadot-runtime-releaser"],"tags_count":11,"template":false,"template_full_name":"hack-ink/rust-initializer","purl":"pkg:github/hack-ink/polkadot-runtime-releaser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hack-ink%2Fpolkadot-runtime-releaser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hack-ink%2Fpolkadot-runtime-releaser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hack-ink%2Fpolkadot-runtime-releaser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hack-ink%2Fpolkadot-runtime-releaser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hack-ink","download_url":"https://codeload.github.com/hack-ink/polkadot-runtime-releaser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hack-ink%2Fpolkadot-runtime-releaser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33032638,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2025-12-27T08:39:25.772Z","updated_at":"2026-05-14T16:01:59.046Z","avatar_url":"https://github.com/hack-ink.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Polkadot Runtime Releaser\n### Streamline the process of releasing a new runtime for polkadot-sdk-based runtime.\n\n\u003cimg width=\"400\" src=\"https://raw.githubusercontent.com/w3f/Grants-Program/master/static/img/badge_black.svg\"/\u003e\n\n[![License](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Checks](https://github.com/hack-ink/polkadot-runtime-releaser/actions/workflows/checks.yml/badge.svg?branch=main)](https://github.com/hack-ink/polkadot-runtime-releaser/actions/workflows/checks.yml)\n[![Release](https://github.com/hack-ink/polkadot-runtime-releaser/actions/workflows/release.yml/badge.svg)](https://github.com/hack-ink/polkadot-runtime-releaser/actions/workflows/release.yml)\n[![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/hack-ink/polkadot-runtime-releaser)](https://github.com/hack-ink/polkadot-runtime-releaser/tags)\n[![GitHub last commit](https://img.shields.io/github/last-commit/hack-ink/polkadot-runtime-releaser?color=red\u0026style=plastic)](https://github.com/hack-ink/polkadot-runtime-releaser)\n[![GitHub code lines](https://tokei.rs/b1/github/hack-ink/polkadot-runtime-releaser)](https://github.com/hack-ink/polkadot-runtime-releaser)\n![Alt](https://repobeats.axiom.co/api/embed/93cbac9061be640cd54747602ef250e91a34fd52.svg \"Repobeats analytics image\")\n\u003c/div\u003e\n\n\n## Setup Guide\n### Polkadot Runtime Releaser CLI\n#### Install from Source Code\n```sh\ngit clone https://github.com/hack-ink/polkadot-runtime-releaser\ncd polkadot-runtime-releaser\ncargo install --path cli\n```\n\n#### Install from [crates.io](https://crates.io)\n```sh\ncargo install polkadot-runtime-releaser-cli\n```\n\n#### Install from GitHub\n```sh\n# macOS\ncurl -L https://github.com/hack-ink/polkadot-runtime-releaser/releases/latest/download/prr-aarch64-apple-darwin.zip \\\n\t-o prr.zip \u0026\u0026\n\tunzip prr.zip \u0026\u0026\n\tchmod u+x prr \u0026\u0026\n\trm prr.zip\n\n# Linux\ncurl -L https://github.com/hack-ink/polkadot-runtime-releaser/releases/latest/download/prr-x86_64-unknown-linux-gnu.tar.gz |\n\ttar xz \u0026\u0026\n\tchmod u+x prr\n\n# If you want to move the binary to `~/.local/bin` (OPTIONAL).\nmkdir -p ~/.local/bin \u0026\u0026 mv prr ~/.local/bin\n```\n\n### Rust Toolchain\nHaving a fixed Rust toolchain version is crucial for building a deterministic runtime.\n\nCreate a `rust-toolchain.toml` file in the root of your project and add the following content:\n\n```toml\n[toolchain]\n# Using Rust `stable` as an example. You can replace it with the desired version.\nchannel    = \"stable\"\n# `clippy`, `rust-src`, and `rustfmt` are optional. Remove them if not needed.\ncomponents = [\"cargo\", \"clippy\", \"rust-src\", \"rustc\", \"rustfmt\"]\n# `minimal` is enough to build the runtime. Choose the profile you need:\n# https://rust-lang.github.io/rustup/concepts/profiles.html\nprofile    = \"minimal\"\ntargets    = [\"wasm32-unknown-unknown\"]\n```\n\nWith this file in place, PRR automatically uses the specified Rust toolchain version. This is the best way to manage the Rust toolchain version for your project.\n\nIf you don't have a `rust-toolchain.toml` file, PRR will generate one with the `stable` version for you by default.\n\nPRR also supports configuring the Rust toolchain version when no `rust-toolchain.toml` file is present in the project's root. Use `prr build --help` for more information.\n\n### Docker\nAnother crucial part of building a deterministic runtime is using the same environment to build the runtime. We use Docker to create a consistent environment.\n\nThe default image is [polkadot-runtime-releaser](https://ghcr.io/hack-ink/polkadot-runtime-releaser), maintained by the hack-ink community. It provides a well-configured environment for building the runtime. Each release is pinned to a specific version of this image to ensure a deterministic environment. However, you can use the `-v` or `--image-version` flag to specify a particular version.\n\nPRR also supports using a custom Docker image. Run `prr build --help` for more information.\n\n### Runtime\n#### REQUIREMENT\n- PRR makes certain assumptions when handling the runtime:\n  - The runtime crate name must follow the `{}-runtime` format. For example, see [`polkadot-runtime`](https://github.com/polkadot-fellows/runtimes/blob/46dcafcee64fe4d8c722d071a4a0ca983fcc2f08/relay/polkadot/Cargo.toml#L2).\n  - The generated WASM file name must be in `{}_runtime.compact.compressed.wasm` format. For example, see [`polkadot_runtime.compact.compressed.wasm`](https://github.com/polkadot-fellows/runtimes/releases/tag/v1.3.4).\n\n### GitHub\n\u003e Why do we need to override the runtime?\n\u003e\n\u003e Always keep the on-chain runtime as minimal as possible which can help reduce the runtime size and improve the performance.\n\u003e Override with the `force-debug` runtime, you can get more debug information in the runtime log.\n\u003e Override with the `evm-tracing` runtime, you can enable the EVM tracing feature in the runtime.\n\nTo fully leverage PRR, set up two repositories for your project—one for the runtime overrides and the other for the runtime itself. This is a commonly recommended practice. Some notable projects that follow this approach include:\n\n- Astar\n  - [Runtime](https://github.com/AstarNetwork/Astar)\n  - [Runtime Overrides](https://github.com/sentioxyz/astar-runtime-overrides)\n- Darwinia\n  - [Runtime](https://github.com/darwinia-network/darwinia)\n  - [Runtime Overrides](https://github.com/darwinia-network/darwinia-release)\n- Moonbeam\n  - [Runtime](https://github.com/moonbeam-foundation/moonbeam)\n  - [Runtime Overrides](https://github.com/moonbeam-foundation/moonbeam-runtime-overrides)\n\n#### Polkadot Runtime Releaser Action\nNow, with PRR, all the steps mentioned in the above project setups can be streamlined!\n\nCheck the [PRR workshop](https://github.com/hack-ink/polkadot-runtime-releaser-workshop) for a production-ready example.\n\nAll actions are available in the [action](action) directory. Don't forget to check their README for more details.\n\n\n## Usage\n### Build Command\n#### CLI Help\n```\nBuild the polkadot-sdk-based runtime\n\nUsage: prr build [OPTIONS] \u003cRUNTIME\u003e\n\nArguments:\n  \u003cRUNTIME\u003e\n          The target runtime to build.\n\n          This should be the name of the runtime crate in the \u003cCargo.toml\u003e file.\n\nOptions:\n  -f, --features \u003cFEATURES\u003e\n          The features to enable for the runtime.\n\n      --no-compressed-only\n          Whether to store the compressed runtime only.\n\n      --no-digest\n          Whether to generate the digest file for the runtime.\n\n  -t, --toolchain-version \u003cVER\u003e\n          The toolchain version to use for the build; by default, it is set to \u003cstable\u003e.\n\n          This won't take effect if there is a \u003crust-toolchain.toml\u003e file in the project directory,\n          and that's the recommended way to specify the toolchain version.\n\n  -v, --image-version \u003cVER\u003e\n          Image version of the \u003cghcr.io/hack-ink/polkadot-runtime-releaser\u003e.\n\n          [default: 0.2.0]\n\n  -i, --override-docker-image \u003cREPOSITORY\u003e\n          Overwrite the default docker image with the specified one.\n\n          Use `docker images` to list the available images on your system.\n\n  -d, --workdir \u003cPATH\u003e\n          The polkadot-sdk-based project directory; by default, it is set to the current directory.\n\n  -o, --output-dir \u003cPATH\u003e\n          The target directory of the cargo build.\n\n          [default: ./polkadot-runtime-releaser-output]\n\n      --cache-output\n          Whether to cache and use the output of the build.\n          This is useful in local development.\n\n      --cache-registry\n          Whether to cache and use the \u003c$HOME/.cargo/registry\u003e registry.\n          This is useful in local development.\n\n  -h, --help\n          Print help (see a summary with '-h')\n```\n\n#### Quick Example\n```sh\ngit clone https://github.com/polkadot-fellows/runtimes.git\ncd runtimes\nprr build polkadot-runtime -f on-chain-release-build\n```\n\n### Inspect Command\n#### CLI Help\n```\nInspect the WASM runtime\n\nUsage: prr inspect [OPTIONS] \u003cPATH\u003e\n\nArguments:\n  \u003cPATH\u003e  Path to the WASM runtime.\n\nOptions:\n      --no-check-version  Whether to check the runtime version in the `ParachainSystem::authorized_upgrade` call.\n  -b, --beautify          Whether to beautify the JSON output.\n  -v, --verbose           Whether to print verbose output.\n  -h, --help              Print help\n```\n\n#### Quick Example\n```sh\nprr inspect \u003cRUNTIME_WASM_FILE\u003e -b\n```\n\n\n\u003cdiv align=\"right\"\u003e\n\n### License\n\u003csup\u003eLicensed under [GPL-3.0](LICENSE).\u003c/sup\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhack-ink%2Fpolkadot-runtime-releaser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhack-ink%2Fpolkadot-runtime-releaser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhack-ink%2Fpolkadot-runtime-releaser/lists"}