Used for connecting to endpoints, streaming data in real time, and packaging custom modules.
Homebrew installation (macOS)
brew install streamingfast/tap/substreams
Docker Alias (macOS or Linux)
You can use our published Substreams CLI Docker image and assign an alias to Docker. We mount the API token as SF_API_TOKEN in the alias so that credentials are known to the CLI running inside Docker.
aliassubstreams='docker run --rm -it -e="SF_API_TOKEN=$SF_API_TOKEN" ghcr.io/streamingfast/substreams'
Note: Expansion of $SF_API_TOKEN above happens at command runtime, so you must ensure that it is set correctly in your own host environment.
Pre-compiled binary installation (macOS or Linux)
There are several CLI binaries available for different operating systems. Choose the correct platform in the CLI releases page.
If you are on MacOS, you can use the following command:
If you are on Linux, you can use the following command:
# Use correct binary for your platformLINK=$(curl-shttps://api.github.com/repos/streamingfast/substreams/releases/latest|awk"/download.url.*linux_$(uname-m)/ {print \$2}"|sed's/"//g')curl-L$LINK|tarzxf-
Installation from source (Linux)
Important: Add $HOME/go/bin to the system path if it's not already present.
Validation of installation
Run the substreams CLI passing the --version flag to check the success of the installation.
A successful installation will print the version that you have installed.
Install Other Developer Dependencies (Only for Substreams Developers)
If you plan to build your own Substreams (i.e. write Rust code to extract data from the blockchain), you will need several dependencies to set up your developer environment:
Tip: Instructions are also provided for cloud-based Gitpod setups.
Rust installation
Developing Substreams modules requires a working Rust compilation environment.
Ensure you have the wasm32-unknown-unknown target installed on your Rust installation, if unsure, you can install it with:
Buf installation
Buf simplifies the generation of typed structures in any language. Buf uses a remote builder executed on the Buf server, so an internet connection is required to generate Rust bindings from Protobuf definitions.