> For the complete documentation index, see [llms.txt](https://docs.propellerheads.xyz/integrations/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.propellerheads.xyz/integrations/indexing/general-integration-steps/1.-setup.md).

# 1. Setup

Setting up your machine to develop indexing integrations.

### Install Rust

* Install [Rust](https://www.rust-lang.org/tools/install), you can do so with the following command:

  ```bash
  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  ```

### Install Substreams

* Install [Substreams CLI](https://substreams.streamingfast.io/getting-started/installing-the-cli), you can either use brew:

  ```bash
  brew install streamingfast/tap/substreams
  ```

  use precompiled binaries

  ```bash
  # Use correct binary for your platform
  LINK=$(curl -s https://api.github.com/repos/streamingfast/substreams/releases/latest | awk '/download.url.*linux/ {print $2}' | sed 's/"//g')
  curl -L  $LINK  | tar zxf -
  ```

  or compile from source:

  ```bash
  git clone https://github.com/streamingfast/substreams
  cd substreams
  go install -v ./cmd/substreams
  ```

### Create a new package

1. Start by making a local copy of the Propeller Protocol Lib repository:<br>

   ```bash
   git clone https://github.com/propeller-heads/propeller-protocol-lib
   ```
2. Create a new directory for your integration by copying the template, rename all the references to `ethereum-template` to `[CHAIN]-[PROTOCOL_SYSTEM]`:

   ```bash
   cp -r ./substreams/ethereum-template ./substreams/[CHAIN]-[PROTOCOL_SYSTEM]
   ```
3. Now, generate the required protobuf code by running:

   ```bash
   substreams protogen substreams.yaml --exclude-paths="sf/substreams,google"
   ```
4. Next, register the new package within the workspace by adding it to the members list in `substreams/Cargo.toml`.
