> ## Documentation Index
> Fetch the complete documentation index at: https://docs.genlabs.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Install the CLI

> Download the gen binary, put it on your PATH, and verify the install.

`gen` is a single static binary. Download the release for your platform from the [latest GitHub release](https://github.com/gen-bc/gen-framework-preview/releases), put it on your `PATH`, and confirm it runs. There is no installer, no service to register, and no daemon to start.

The release bundle also contains the Rust SDK and TypeScript SDK. You only need the `gen` binary for the CLI; the SDKs ship as a separate convenience.

For the current release version and the matching RPC endpoint, see [Network status](/user-guide/network-status).

## Supported platforms

* macOS (x86\_64 and arm64)
* Linux (x86\_64 and arm64)

Windows is not supported. Run the Linux build under WSL2 if you are on Windows.

## Install

Download the archive for your platform from the release page, unpack it, and move the binary onto your `PATH`. The exact archive name encodes the OS and architecture (for example `gen-aarch64-apple-darwin.tar.gz`).

```bash theme={null}
tar -xzf gen-<platform>.tar.gz
mv ./gen /usr/local/bin/gen
chmod +x /usr/local/bin/gen
```

`/usr/local/bin` works on most setups; any directory already on your `PATH` is fine. If you prefer a per-user install, drop the binary in `~/.local/bin` and make sure that directory is on your `PATH`.

## Verify the install

Print the version to confirm the binary is on your `PATH` and executable:

```bash theme={null}
gen --version
```

Then run the top-level help to see the command groups:

```bash theme={null}
gen --help
```

You should see `wallet`, `client`, `config`, `service`, and `genie` listed as commands. If `gen` is not found, your shell has not picked up the install directory; add it to `PATH` and reopen the terminal.

## Set up the build toolchain

If you only plan to interact with already-deployed contracts (via `gen wallet`, `gen client`, or the SDKs), the binary download above is enough. Skip this section.

If you plan to **write or build contracts**, you need Rust plus the `riscv32im-unknown-none-elf` target that contracts compile to. Two options:

**Option A: bundled installer (recommended).** The release bundle ships an `install.sh` that installs Rust, adds the RISC-V target, and (when Docker is reachable) builds the `gen-cli:latest` image used by the `test-container` validator mode:

```bash theme={null}
curl -fsSL https://github.com/gen-bc/gen-framework-preview/releases/latest/download/install.sh | bash
```

**Option B: manual.** Install Rust via [rustup.rs](https://rustup.rs/), then add the target:

```bash theme={null}
rustup target add riscv32im-unknown-none-elf
```

Either path leaves you with a working contract toolchain.

## Shell completions

`gen` can generate completion scripts for `bash`, `zsh`, `fish`, `elvish`, and `powershell`. Pipe the output into the right place for your shell. For `zsh`:

```bash theme={null}
gen --generate-shell-completions zsh > ~/.zsh/completions/_gen
```

For `bash`, source the output from your `~/.bashrc`:

```bash theme={null}
gen --generate-shell-completions bash > ~/.bash_completion.d/gen
```

## Update

Updating is the same as installing: download a newer release archive, unpack, and overwrite the binary in place. No state lives inside the binary; your wallets (`~/.gen/wallets/`) and CLI config (`~/.gen/client_config.yml`) survive the swap.

To downgrade, install an older release the same way. Wallet store format is forward compatible within a release line; if a release changes the format, the changelog calls it out.

## What's next

* [CLI configuration](/reference/cli/configuration): point the CLI at an RPC endpoint and persist auth headers.
* [Quickstart](/quickstart/index): install, create a wallet, fund it, send a transfer in five minutes.
* [gen wallet](/reference/cli/wallet): create or import your first wallet.
