{"id":17208622,"url":"https://github.com/chevdor/subrpc","last_synced_at":"2025-08-02T00:04:47.514Z","repository":{"id":64659073,"uuid":"572578869","full_name":"chevdor/subrpc","owner":"chevdor","description":"As dev or end user, if you keep looking for the right endpoint for your Polkadot/Substrate blockchain, `subrpc` will make your life much easier. It is like the apt/brew of substrate chain endpoints: Add registries, update, and you are set.","archived":false,"fork":false,"pushed_at":"2025-02-11T14:57:45.000Z","size":276,"stargazers_count":12,"open_issues_count":5,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-26T09:41:09.581Z","etag":null,"topics":["blockchain","chevdor","cli","endpoint","jsonrpc","kusama","polkadot","rust","substrate"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chevdor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-11-30T15:19:43.000Z","updated_at":"2025-02-11T14:57:49.000Z","dependencies_parsed_at":"2023-02-15T08:20:33.220Z","dependency_job_id":"4e0c06e9-f804-4b14-b15e-d4ae7376b9e1","html_url":"https://github.com/chevdor/subrpc","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/chevdor/subrpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chevdor%2Fsubrpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chevdor%2Fsubrpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chevdor%2Fsubrpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chevdor%2Fsubrpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chevdor","download_url":"https://codeload.github.com/chevdor/subrpc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chevdor%2Fsubrpc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268315829,"owners_count":24231058,"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","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"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":["blockchain","chevdor","cli","endpoint","jsonrpc","kusama","polkadot","rust","substrate"],"created_at":"2024-10-15T02:49:22.320Z","updated_at":"2025-08-02T00:04:47.472Z","avatar_url":"https://github.com/chevdor.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SubRPC\n\n## Intro\n\nSubRPC helps maintaining and managing a local list of RPC Endpoints. Using the `subrpc`, the user can aggregate data from several public or private registries of RPC endpoints and maintain their local database fresh.\n\nWhile the `subrpc` cli allows using the data in a terminal, the `subrpc-core` crate helps any third party app fetching and maintainging a list of RPC endpoints.\n\nThis helps your apps no longer having to provide a flag such as `your-cli --url wss://rpc.polkadot.io` but instead use `your-cli --chain polkadot` and be sure to connect to a quality RPC endpoint.\n\n## Quick start\n\n    cargo install subrpc\n\n    # `reg` is an alias for `registry`\n    subrpc reg add https://raw.githubusercontent.com/chevdor/subrpc/master/registry/subrpc.json\n    subrpc reg add https://raw.githubusercontent.com/chevdor/subrpc/master/registry/parity.json\n    subrpc reg add https://raw.githubusercontent.com/chevdor/subrpc/master/registry/dwellir.json\n    subrpc reg add https://raw.githubusercontent.com/chevdor/subrpc/master/registry/onfinality.json\n    subrpc reg add https://raw.githubusercontent.com/chevdor/subrpc/master/registry/moonbeam.json\n    subrpc reg add https://polkadot-ui.github.io/polkadot_network_directory/registry.json\n    subrpc reg up\n    subrpc system info\n\n    # `ep` is an alias for `endpoints`\n    subrpc ep ls\n    subrpc ep get polkadot\n\n## Tips\n\nIf you work with many chains, the following function can be added to your `.bashrc` or `.zshrc`.\n\nYou need to have [fzf](https://github.com/junegunn/fzf) installed and `subrpc` v0.0.4+ installed.\n\n    # A function to interactively open a chain in your Browser\n    # Simply call `sub` or `sub \u003cpattern\u003e`\n    function sub() {\n        chains=$(subrpc reg chains)\n\n        if [ ! -z \"$1\" ]; then\n            query=\"$1\"\n            echo \"Searching for chains matching: $query\"\n            chain=$(echo \"$chains\" | sort -r | fzf -1 -q \"$query\" --prompt=\"Select the chain to open in your browser \u003e \")\n        else\n            chain=$(echo \"$chains\" | sort -r | fzf -1 --prompt=\"Select the chain to open in your browser \u003e \")\n        fi\n        subrpc endpoints open \"$chain\"\n    }\n\nCall the function invoking simply `subopen`. Type the name of a chain, it can be approximate, for instance `river`, then press enter.\n\nClick the image below or click [here](https://asciinema.org/a/7R4qTXsZmnF5kuH6sC2jveY8W) to see this tip in action:\n\n\u003cfigure\u003e\n\u003cimg src=\"https://asciinema.org/a/7R4qTXsZmnF5kuH6sC2jveY8W.png\" alt=\"7R4qTXsZmnF5kuH6sC2jveY8W\" /\u003e\n\u003c/figure\u003e\n\n## Registries\n\nRegistries are mainly a list of RPC endpoints, stored into a json file and available via a web server (public or not).\n\nYou can find below a list of public registries:\n\n-   [Polkadot Network Directory Registry](https://polkadot-ui.github.io/polkadot_network_directory/registry.json): The [Polkadot Network Directory](https://polkadot-ui.github.io/polkadot_network_directory) project is aware of many chains and projects and provides a registry that is automatically updated and based on the data available to the directory\n\n-   [SubRPC Registry](https://raw.githubusercontent.com/chevdor/subrpc/master/registry/subrpc.json): A small basic registry to get started and show an example\n\n-   Add your registry with [Pull Request](https://github.com/chevdor/subrpc/pulls)\n\n## Usage\n\n## Help\n\n    `subrpc` allows managing a set of registry providing rpc nodes\n\n    Usage: subrpc \u003cCOMMAND\u003e\n\n    Commands:\n      registry   Manage your registries\n      system     System\n      endpoints  Endpoints\n      config     Config\n      help       Print this message or the help of the given subcommand(s)\n\n    Options:\n      -h, --help     Print help information\n      -V, --version  Print version information\n\n## Config\n\n    Config\n\n    Usage: subrpc config \u003cCOMMAND\u003e\n\n    Commands:\n      list  Config list\n      edit  Config edit\n      help  Print this message or the help of the given subcommand(s)\n\n    Options:\n      -h, --help     Print help information\n      -V, --version  Print version information\n\n## Registry\n\n    Manage your registries\n\n    Usage: subrpc registry \u003cCOMMAND\u003e\n\n    Commands:\n      list    List currently known registries\n      show    Show the list of registries and some of the content\n      add     Add a new registry. It will be enabled by default\n      update  Fetch the latest data from the registries and update the list of endpoints\n      help    Print this message or the help of the given subcommand(s)\n\n    Options:\n      -h, --help     Print help information\n      -V, --version  Print version information\n\n## Endpoints\n\n    Endpoints\n\n    Usage: subrpc endpoints \u003cCOMMAND\u003e\n\n    Commands:\n      list  Show the list of all endpoints\n      get   Get one or some endpoints\n      ping  Ping endpoints\n      help  Print this message or the help of the given subcommand(s)\n\n    Options:\n      -h, --help     Print help information\n      -V, --version  Print version information\n\n## System\n\n    System\n\n    Usage: subrpc system \u003cCOMMAND\u003e\n\n    Commands:\n      info  Show general system information such as the location of relevant files\n      init  Reset your local database\n      help  Print this message or the help of the given subcommand(s)\n\n    Options:\n      -h, --help     Print help information\n      -V, --version  Print version information\n\n## FAQ\n\n\u003e Is SubRPC a registry ?\n\nNo. While SubRPC provides a very basic default list of RPC endpoints, this list will remain small and rather unmaintained. It will contain only a few of the core RPC Enpoints of the network and will surely miss many important ones.\n\n\u003e Can I use a private registry ?\n\nSure! And this is the idea behind SubRPC. You can tap into both public and private registry to build up your very own database of RPC Endpoints.\n\n\u003e How can I be sure that my list is up to date ?\n\nThe `subrpc` can help you refresh/update your endpoints in 2 ways: first it will check the registries for new endpoints and add them to your list, but it will also test the endpoints in order to ensure that your local endpoints list remains of quality.\n\nUsing the `subrpc-core` crate also gather (locally) some information about the RPC Endpoints you are connecting to. This is done to allow you skipping poor quality Endpoints over time, while keeping a list of quality RPC Endpoints up to date. This is all local and 100% opinionated: an endpoint you may see as bad may work great for someone else, moreover, the config (will) allow customizing the list of endpoints.\n\n\u003e Can I host my own registry ?\n\nAbsolutely and that would be great. If you make a public one, please open a PR in this repo so we can document the list of public registries.\n\n\u003e How does SubRPC decides whether an RPC Endpoint is good or bad ?\n\nEveytime you connect (or ask for a refresh), SubRPC checks whether an endpoint is reachable and if it is, gathers a few metrics about it. This allows maintaining a list of the best endpoints **for you**. This list is personal and remains on your machine.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchevdor%2Fsubrpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchevdor%2Fsubrpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchevdor%2Fsubrpc/lists"}