smoldot-light
Python bindings for the smoldot_light Rust crate.
What it is and what it does
smoldot-light is a Python wrapper around the smoldot_light Rust crate, enabling you to run a lightweight Polkadot or Substrate blockchain client directly in Python. It provides a SmoldotClient class that loads chain specifications, manages blockchain state, and handles JSON-RPC requests and responses. The package is built using PyO3 and maturin, exposing Rust's efficient light-client logic to Python code without requiring a separate node process.
The typical workflow is to instantiate a SmoldotClient, load a chain spec (either from a file or fetched from a running node), add chains to the client, send JSON-RPC requests to query blockchain state, and drain responses asynchronously. It is designed to integrate with py-polkadot-sdk for higher-level Substrate interaction, though the package itself handles only the low-level client plumbing and does not depend on external Python runtime libraries.
Use it for:
- Run a lightweight Polkadot or Kusama client in a Python application without spawning a separate node process.
- Query blockchain state via JSON-RPC from Python by loading a chain spec and sending structured requests.
- Embed a Substrate light client in a bot, monitoring tool, or data-collection pipeline that needs direct blockchain access.
- Prototype or test Substrate chain interactions in Python without setting up a full node infrastructure.
- Connect parachain clients to relay chains by passing relay chain IDs when adding chains to the client.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Python bindings for the smoldot_light Rust crate that run a lightweight Polkadot client and expose JSON-RPC request/response plumbing for blockchain interaction.
Yes, if you need a lightweight Polkadot/Substrate client in Python and are comfortable with early-stage, minimally maintained code. The package has no known vulnerabilities and prebuilt wheels reduce friction. However, verify the license terms first, confirm Python version compatibility (wheels only for 3.10–3.11), and assess whether the 212-day gap since release signals active support or abandonment for your use case.
Install
smoldot-light on PyPI
pip
pip install smoldot-lightuv
uv add smoldot-lightpoetry
poetry add smoldot-lightInstalling smoldot-light
Before you install
Medium install friction due to compiled Rust bindings; prebuilt wheels available for Python 3.10–3.11 across Linux, macOS, and Windows architectures. Package is aging (212 days since release) with minimal maintenance signal and only 2 repository stars.
License in practice
License treatment is unclear—no SPDX identifier or raw license text is declared. Verify the actual license terms in the repository before adopting this package in a commercial or copyleft-sensitive context.
Quickstart
from smoldot_light import SmoldotClient
client = SmoldotClient()
with open("polkadot.json", "r", encoding="utf-8") as f:
chain_spec = f.read()
relay_chain_id = client.add_chain(chain_spec)
client.json_rpc_request(relay_chain_id, '{"id":1,"jsonrpc":"2.0","method":"system_name","params":[]}')
responses = client.drain_responses(relay_chain_id, max=10)
Requires Python >=3.8; prebuilt wheels are available only for Python 3.10 and 3.11, so other versions may require building from source.
Verify before relying
- Whether the package is actively maintained or if the 212-day gap since last release indicates abandonment.
- What the actual license is, given that license_treatment is marked unclear.
- Whether this package is intended for production use or remains experimental/proof-of-concept.
- Compatibility with py-polkadot-sdk versions and whether that integration is documented.
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (>=3.8) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | aging — 212 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 143,494/month — #11,174 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: smoldot_light-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl; smoldot_light-0.1.0-cp310-cp310-macosx_11_0_arm64.whl; smoldot_light-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; smoldot_light-0.1.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; smoldot_light-0.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl; smoldot_light-0.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl; smoldot_light-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; smoldot_light-0.1.0-cp310-cp310-musllinux_1_2_aarch64.whl; smoldot_light-0.1.0-cp310-cp310-musllinux_1_2_armv7l.whl; smoldot_light-0.1.0-cp310-cp310-musllinux_1_2_i686.whl; smoldot_light-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl; smoldot_light-0.1.0-cp310-cp310-win_amd64.whl; smoldot_light-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl; smoldot_light-0.1.0-cp311-cp311-macosx_11_0_arm64.whl; smoldot_light-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; smoldot_light-0.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl; smoldot_light-0.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl; smoldot_light-0.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl; smoldot_light-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; smoldot_light-0.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
Tags
More Internet packages
Botocore provides low-level, data-driven access…
permissive · top 100 on PyPI
aiobotocoreProvides an async client for AWS services using…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
filelockProvides a platform-independent file locking…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
googleapis-common-protosProvides common Protocol Buffer message…
permissive · top 100 on PyPI
substrate-interfaceInterfaces with Substrate blockchain nodes to…
permissive · top 15,000 on PyPI
async-substrate-interfaceProvides asynchronous and synchronous…
permissive · top 15,000 on PyPI
py-sr25519-bindingsProvides Python bindings to the sr25519 Rust…
permissive · top 15,000 on PyPI
py-ed25519-zebra-bindingsProvides Python bindings to the ed25519-zebra…
permissive · top 15,000 on PyPI
py-bip39-bindingsProvides Python bindings to the tiny-bip39 Rust…
permissive · top 15,000 on PyPI
chia-rsProvides Python bindings to Rust crates for…
unclear · top 15,000 on PyPI
bittensor-walletManages cryptographic keys and wallets for the…
permissive · top 15,000 on PyPI
rpds-pyProvides Python bindings to Rust's persistent…
permissive · top 100 on PyPI
bittensor-drandProvides timelock encryption for Bittensor…
permissive · top 15,000 on PyPI
breez-sdk-sparkPython bindings for the Breez Spark SDK,…
permissive · top 15,000 on PyPI