# Installing Client Tools

> [!NOTE]
>
> Running different release versions will likely present incompatibilities. Ensure you're running
> matching release versions of client and server binaries. If you have any issues, check that you
> are running the latest version of Kanidm.

## From packages

Kanidm currently is packaged for the following systems:

- OpenSUSE Tumbleweed
- OpenSUSE Leap 15.4/15.5/15.6
- macOS
- Arch Linux
- CentOS Stream 9
- Debian
- Fedora 38
- NixOS
- Ubuntu
- Alpine Linux

The `kanidm` client has been built and tested from Windows, but is not (yet) packaged routinely.

### OpenSUSE Tumbleweed / Leap 15.6

Kanidm is available in Tumbleweed and Leap 15.6. You can install the clients with:

```bash
zypper ref
zypper in kanidm-clients
```

### OpenSUSE Leap 15.4/15.5

Using zypper you can add the Kanidm leap repository with:

```bash
zypper ar -f obs://network:idm network_idm
```

Then you need to refresh your metadata and install the clients.

```bash
zypper ref
zypper in kanidm-clients
```

### macOS - Homebrew

[Kanidm provides a Homebrew cask](https://github.com/kanidm/homebrew-kanidm),
which lets [Homebrew](https://brew.sh/) build and install the CLI client tools
from source:

```bash
brew tap kanidm/kanidm
brew install kanidm
```

> [!TIP]
>
> **Rust developers:** this formula will install a Rust toolchain with Homebrew,
> and add it to your `PATH`. *This may interfere with any Rust toolchain
> you've installed with [`rustup`](https://rustup.rs/).*
>
> You can unlink Homebrew's Rust toolchain (removing it from your `PATH`) with:
>
> ```sh
> brew unlink rust
> ```
>
> Homebrew will always use its version of Rust when building Rust packages, even
> when it is unlinked.
>
> Alternatively, you may wish to [install the Kanidm CLI with `cargo`](#cargo)
> instead – this will use whatever Rust toochain you've already installed.

### Arch Linux

[Kanidm on AUR](https://aur.archlinux.org/packages?O=0&K=kanidm)

### Fedora / Centos Stream

> [!NOTE]
>
> Kanidm frequently uses new Rust versions and features, however Fedora and CentOS frequently are
> behind in Rust releases. As a result, they may not always have the latest Kanidm versions
> available.

Fedora has limited support through the development repository. You need to add the repository
metadata into the correct directory:

```bash
# Fedora
wget https://download.opensuse.org/repositories/network:/idm/Fedora_38/network:idm.repo
# Centos Stream 9
wget https://download.opensuse.org/repositories/network:/idm/CentOS_9_Stream/network:idm.repo
```

You can then install with:

```bash
dnf install kanidm-clients
```

### NixOS

[Kanidm in NixOS](https://search.nixos.org/packages?sort=relevance&type=packages&query=kanidm)

### Ubuntu and Debian

See <https://kanidm.github.io/kanidm_ppa/> for nightly-built packages of the current development
builds, and how to install them.

## Alpine Linux

Kanidm is available in the
[Alpine Linux testing repository](https://pkgs.alpinelinux.org/packages?name=kanidm%2A).

To install the Kanidm client use:

```bash
apk add kanidm-clients
```

## Tools Container

In some cases if your distribution does not have native kanidm-client support, and you can't access
cargo for the install for some reason, you can use the cli tools from a docker container instead.

This is a "last resort" and we don't really recommend this for day to day usage.

```bash
echo '{}' > ~/.cache/kanidm_tokens
chmod 666 ~/.cache/kanidm_tokens
docker pull kanidm/tools:latest
docker run --rm -i -t \
    --network host \
    --mount "type=bind,src=/etc/kanidm/config,target=/etc/kanidm/config" \
    --mount "type=bind,src=$HOME/.config/kanidm,target=/home/kanidm/.config/kanidm" \
    --mount "type=bind,src=$HOME/.cache/kanidm_tokens,target=/home/kanidm/.cache/kanidm_tokens" \
    kanidm/tools:latest \
    /sbin/kanidm --help
```

If you have a ca.pem you may need to bind mount this in as required as well.

> [!TIP]
>
> You can alias the docker run command to make the tools easier to access such as:

```bash
alias kanidm="docker run ..."
```

## Cargo

The tools are available as a cargo download if you have a rust tool chain available. To install rust
you should follow the documentation for [rustup](https://rustup.rs/). These will be installed into
your home directory. To update these, re-run the install command. You will likely need to install
additional development libraries, specified in the [Developer Guide](developers/).

```bash
cargo install kanidm_tools
```
