> For the complete documentation index, see [llms.txt](https://docs.ltonetwork.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ltonetwork.com/ownables/ownables-sdk/prerequisites.md).

# Prerequisites

#### Summary

The following dependencies will be required to develop OWNABLES:

* `git`
* `rustc` and `cargo` versions 1.61.0 or later
* `clang`
* `npm` version 8.11.0 or later
* `node` version 16.15.0 or later
* `wasm-pack` version 0.10.2 or later

If you do not have the above dependencies on your machine, see the sections below for instructions.

### Git

[Download and install git](https://git-scm.com/downloads). Git is a version control system. It's used to fetch the Ownables SDK from GitHub.

Alternatively, you can use [GitHub desktop](https://desktop.github.com/), which is more user-friendly.

### Rust and Cargo

Ownable packages are built with Rust.

To install Rust and its package manager Cargo, follow the official [documentation guide from the Rust Book](https://doc.rust-lang.org/cargo/getting-started/installation.html). On Linux and macOS systems, this is done as follows:

```shell-session
$ curl https://sh.rustup.rs -sSf | sh
```

Verify the installation by checking the version:

```shell-session
$ cargo version
```

The version should be 1.61.0 or later.

### clang

Rust may depend on [clang](https://clang.llvm.org/) for building an ownable. Install clang, if you come across the following error

```
Failed to find tool. Is `clang` installed?
```

On Mac, clang should come pre-installed. On Linux you should be able to install it from the distro's repository. E.g. on Ubuntu Linux run

<pre class="language-shell-session"><code class="lang-shell-session"><strong>$ apt install clang
</strong></code></pre>

### Node and npm

`npm` will be needed for running the local wallet instance and building the OWNABLES packages.

Install it as described on the official [Node.js website](https://nodejs.org/en/download/).

Verify the installation with:

<pre class="language-shell-session"><code class="lang-shell-session"><strong>$ npm -v
</strong>$ node -v
</code></pre>

The node version should be 16.15.0 or later. The npm version should be 8.11.0 or later.

### wasm-pack

The smart contracts written in Rust need to be compiled to WebAssembly. This way we can easily interact with them in our wallet.

`wasm-pack` makes building and working with rust-generated WASM easy.&#x20;

Follow the latest steps described in [their official documentation](https://rustwasm.github.io/wasm-pack/installer/#) to install it. On Linux and macOS systems, this is done as follows:

```shell-session
$ curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
```

Once that is done, verify the installation:

```shell-session
$ wasm-pack -V
```

The version should be 0.10.2 or later.

### Code editor (optional)

Any editor you prefer will do the job, but there are a few recommendations worth looking into here.

First is the VSCode editor which you can download from the [official source](https://code.visualstudio.com/). Along with it, you may consider installing [this](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust) Rust plugin to help with syntax highlighting and other amenities.

Another great pick is the [WebStorm by Jetbrains](https://www.jetbrains.com/webstorm/). JetBrains provides a Rust [plugin](https://intellij-rust.github.io/) which is very useful to help with the development flow.


---

# 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://docs.ltonetwork.com/ownables/ownables-sdk/prerequisites.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.
