# Manual Installation

## Downloading the binaries

### How it works

We have a JSON manifest that you can use to obtain the package.

### Manifest URL

Check the [Chains](/docs/chains.md) page for the particular chain you would like to run. We will use the Humanode Mainnet manifest in the instructions below as an example.

To download and inspect the manifest run the command below:

{% code overflow="wrap" %}

```shell-session
$ curl -sSL "https://chainspec.mainnet.stages.humanode.io/latest/manifest.json" | jq .
{
  "binaries": [
     ...
```

{% endcode %}

<details>

<summary>Sample manifest</summary>

{% code overflow="wrap" %}

```json
{
  "binaries": [
    {
      "platform": "Darwin",
      "arch": "arm64",
      "displayName": "Humanode Mainnet",
      "description": "The Humanode network.",
      "icon": "icon.png",
      "executablePath": "humanode-peer",
      "chainspecPath": "chainspec.json",
      "ngrokPath": "ngrok-wrapper",
      "humanodeWebsocketTunnelClientPath": "humanode-websocket-tunnel",
      "files": [
        {
          "subUrl": "/latest/binaries/Darwin-arm64/humanode-peer",
          "destinationSubPath": "humanode-peer",
          "sha256": "b0260fcc038706f3ebf97ef16c1e49596e262a450adca94fc06c1ceaa9272f9d"
        },
        {
          "subUrl": "/latest/chainspec.json",
          "destinationSubPath": "chainspec.json",
          "sha256": "eefac86f7a9089c3e403c5860dfb0d576af22834bee0b6e38936d597ba69afc5"
        },
        {
          "subUrl": "/latest/binaries/Darwin-arm64/ngrok",
          "destinationSubPath": "ngrok",
          "sha256": "c9e6dfec454f9faec92a13dfd3f3857de982007e3b85987bb875aa0d74ca8101"
        },
        {
          "subUrl": "/latest/binaries/Darwin-arm64/humanode-websocket-tunnel-client",
          "destinationSubPath": "humanode-websocket-tunnel-client",
          "sha256": "76d63b77f219e56065cbb183d920a2a4efbc616a82d0788cc53275cea89a5d32"
        },
        {
          "subUrl": "/latest/scripts/humanode-websocket-tunnel",
          "destinationSubPath": "humanode-websocket-tunnel",
          "sha256": "514b29731d5ae89097ac6f8158fe9529bec0076cc4fdab40d7aa7de60587fa87"
        },
        {
          "subUrl": "/latest/scripts/ngrok-wrapper",
          "destinationSubPath": "ngrok-wrapper",
          "sha256": "f5b7ba7c61cb5f70278fa7b46d1be11f29348650989a795128b5a7a81f9d5ed6"
        }
      ]
    },
    {
      "platform": "Darwin",
      "arch": "x86_64",
      "displayName": "Humanode Mainnet",
      "description": "The Humanode network.",
      "icon": "icon.png",
      "executablePath": "humanode-peer",
      "chainspecPath": "chainspec.json",
      "ngrokPath": "ngrok-wrapper",
      "humanodeWebsocketTunnelClientPath": "humanode-websocket-tunnel",
      "files": [
        {
          "subUrl": "/latest/binaries/Darwin-x86_64/humanode-peer",
          "destinationSubPath": "humanode-peer",
          "sha256": "ad8127d1139a4f1ab8c5cfa37d3f8cf052e2a35e7fcfd317382abecbc53eec58"
        },
        {
          "subUrl": "/latest/chainspec.json",
          "destinationSubPath": "chainspec.json",
          "sha256": "eefac86f7a9089c3e403c5860dfb0d576af22834bee0b6e38936d597ba69afc5"
        },
        {
          "subUrl": "/latest/binaries/Darwin-x86_64/ngrok",
          "destinationSubPath": "ngrok",
          "sha256": "80c8fb121d6c93350d84351d9516674f4e20a3e003cdd7dcb4c3e7c48b9c5b07"
        },
        {
          "subUrl": "/latest/binaries/Darwin-x86_64/humanode-websocket-tunnel-client",
          "destinationSubPath": "humanode-websocket-tunnel-client",
          "sha256": "110ef86c98a2e76a05d16518294ed2c2faeefdd3314576d7db119bcd20de5bd5"
        },
        {
          "subUrl": "/latest/scripts/humanode-websocket-tunnel",
          "destinationSubPath": "humanode-websocket-tunnel",
          "sha256": "514b29731d5ae89097ac6f8158fe9529bec0076cc4fdab40d7aa7de60587fa87"
        },
        {
          "subUrl": "/latest/scripts/ngrok-wrapper",
          "destinationSubPath": "ngrok-wrapper",
          "sha256": "f5b7ba7c61cb5f70278fa7b46d1be11f29348650989a795128b5a7a81f9d5ed6"
        }
      ]
    },
    {
      "platform": "Linux",
      "arch": "x86_64",
      "displayName": "Humanode Mainnet",
      "description": "The Humanode network.",
      "icon": "icon.png",
      "executablePath": "humanode-peer",
      "chainspecPath": "chainspec.json",
      "ngrokPath": "ngrok-wrapper",
      "humanodeWebsocketTunnelClientPath": "humanode-websocket-tunnel",
      "files": [
        {
          "subUrl": "/latest/binaries/Linux-x86_64/humanode-peer",
          "destinationSubPath": "humanode-peer",
          "sha256": "f225e89320ea31846c948e10cec5a7dcffb102ca1fa67b688b198a7aefaee494"
        },
        {
          "subUrl": "/latest/chainspec.json",
          "destinationSubPath": "chainspec.json",
          "sha256": "eefac86f7a9089c3e403c5860dfb0d576af22834bee0b6e38936d597ba69afc5"
        },
        {
          "subUrl": "/latest/binaries/Linux-x86_64/ngrok",
          "destinationSubPath": "ngrok",
          "sha256": "218d267cd1195334718bafac14bfdf1c19dc95dcf8a24aaa6a1383c21dc86e76"
        },
        {
          "subUrl": "/latest/binaries/Linux-x86_64/humanode-websocket-tunnel-client",
          "destinationSubPath": "humanode-websocket-tunnel-client",
          "sha256": "b39c88cf5e7125c852f9727e00a76626c4e817837b62bf9799f397f75b8a6dd1"
        },
        {
          "subUrl": "/latest/scripts/humanode-websocket-tunnel",
          "destinationSubPath": "humanode-websocket-tunnel",
          "sha256": "514b29731d5ae89097ac6f8158fe9529bec0076cc4fdab40d7aa7de60587fa87"
        },
        {
          "subUrl": "/latest/scripts/ngrok-wrapper",
          "destinationSubPath": "ngrok-wrapper",
          "sha256": "f5b7ba7c61cb5f70278fa7b46d1be11f29348650989a795128b5a7a81f9d5ed6"
        }
      ]
    }
  ]
}
```

{% endcode %}

</details>

### Setting up the `humanode-peer` binary

Find the binaries for your platform in the manifest. In case of Linux, it's an entry with the following subUrl:

```
/latest/binaries/Linux-x86_64/humanode-peer
```

Use the path together with the domain from the manifest URL to get the binary download link:

{% code overflow="wrap" %}

```
https://chainspec.mainnet.stages.humanode.io/latest/binaries/Linux-x86_64/humanode-peer
```

{% endcode %}

Download the `humanode-peer` binary using the obtained link:

{% code overflow="wrap" %}

```shell-session
$ curl -sSL "https://chainspec.mainnet.stages.humanode.io/latest/binaries/Linux-x86_64/humanode-peer" -o humanode-peer
```

{% endcode %}

Make the binary executable and install it into the system:

```shell-session
$ chmod +x humanode-peer
$ sudo cp humanode-peer /usr/local/bin/
```

### Downloading the chainspec file

Using the same manifest we have obtained above, find and download the `chainspec.json` file.

In our case, this is the file with the following `subPath`:

```
/latest/chainspec.json
```

Use the hostname from the manifest URL to obtain the chainspec file URL, like in the `humanode-peer` step:

<pre><code><strong>https://chainspec.mainnet.stages.humanode.io/latest/chainspec.json
</strong></code></pre>

Then download the `chainspec.json`

{% code overflow="wrap" %}

```shell-session
$ curl -sSL "https://chainspec.mainnet.stages.humanode.io/latest/chainspec.json" -o ~/chainspec.json
```

{% endcode %}

We are now ready to proceed to the next step.

### Downloading the RPC Tunnel

In the same way, you can download and use `ngrok`, `humanode-websocket-tunnel` and `ngrok-wrapper`.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gitbook.humanode.io/docs/distribution/node-installation/manual.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
