> For the complete documentation index, see [llms.txt](https://gitbook.humanode.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook.humanode.io/docs/distribution/node-installation/manual.md).

# 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
