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

# Installation

> Install the Ekso CLI — one self-contained binary, no runtime needed.

The Ekso CLI is a single self-contained binary — **no .NET runtime, no package manager, no setup**. Download one file, run it.

Releases live at [github.com/EksoHQ/CLI/releases](https://github.com/EksoHQ/CLI/releases). One archive per platform, \~30 MB each.

## Install

<Tabs>
  <Tab title="macOS (Apple Silicon)">
    ```bash theme={null}
    VERSION=$(curl -sS https://api.github.com/repos/EksoHQ/CLI/releases/latest | grep tag_name | cut -d'"' -f4 | sed 's/^v//')
    curl -L "https://github.com/EksoHQ/CLI/releases/download/v$VERSION/ekso-$VERSION-osx-arm64.tar.gz" | tar xz
    xattr -d com.apple.quarantine ./ekso   # one-time: clears Gatekeeper
    sudo mv ./ekso /usr/local/bin/
    ekso --version
    ```
  </Tab>

  <Tab title="macOS (Intel)">
    ```bash theme={null}
    VERSION=$(curl -sS https://api.github.com/repos/EksoHQ/CLI/releases/latest | grep tag_name | cut -d'"' -f4 | sed 's/^v//')
    curl -L "https://github.com/EksoHQ/CLI/releases/download/v$VERSION/ekso-$VERSION-osx-x64.tar.gz" | tar xz
    xattr -d com.apple.quarantine ./ekso
    sudo mv ./ekso /usr/local/bin/
    ekso --version
    ```
  </Tab>

  <Tab title="Linux x86_64">
    ```bash theme={null}
    VERSION=$(curl -sS https://api.github.com/repos/EksoHQ/CLI/releases/latest | grep tag_name | cut -d'"' -f4 | sed 's/^v//')
    curl -L "https://github.com/EksoHQ/CLI/releases/download/v$VERSION/ekso-$VERSION-linux-x64.tar.gz" | tar xz
    sudo mv ./ekso /usr/local/bin/
    ekso --version
    ```
  </Tab>

  <Tab title="Linux arm64">
    ```bash theme={null}
    VERSION=$(curl -sS https://api.github.com/repos/EksoHQ/CLI/releases/latest | grep tag_name | cut -d'"' -f4 | sed 's/^v//')
    curl -L "https://github.com/EksoHQ/CLI/releases/download/v$VERSION/ekso-$VERSION-linux-arm64.tar.gz" | tar xz
    sudo mv ./ekso /usr/local/bin/
    ekso --version
    ```
  </Tab>

  <Tab title="Windows x64">
    1. Download `ekso-<version>-win-x64.zip` from the [latest release](https://github.com/EksoHQ/CLI/releases/latest).
    2. Extract `ekso.exe` into a folder on your `PATH`, or into a new folder that you add to your `PATH`.
    3. Run `ekso --version` from a new terminal.

    On first run, Windows SmartScreen may show **"Windows protected your PC"**. Click **More info → Run anyway**.
  </Tab>
</Tabs>

That's it.

### Update

Re-run the install command in your platform's tab — download the latest archive and overwrite the existing binary. If you installed via the .NET global tool (below), use `dotnet tool update -g Ekso.Cli` instead. Either way, you always end up on the latest release.

### macOS Gatekeeper

Binaries aren't yet signed with an Apple Developer ID, so Gatekeeper quarantines them on first download. The `xattr -d com.apple.quarantine ./ekso` line in the macOS install steps clears it. If you see *"ekso cannot be opened because the developer cannot be verified"*, run that command against the downloaded binary, or right-click → **Open** in Finder once. Code signing is on the roadmap.

### Verify the download

Each release ships a `SHA256SUMS` file alongside the archives:

```bash theme={null}
curl -LO "https://github.com/EksoHQ/CLI/releases/download/v$VERSION/SHA256SUMS"
shasum -a 256 -c SHA256SUMS --ignore-missing
```

***

## Alternative: .NET global tool

Already have .NET 10 installed and prefer the dotnet-tool ecosystem? The CLI is also published to NuGet:

```bash theme={null}
dotnet tool install -g Ekso.Cli
ekso --version
```

This is intended for .NET developers who manage CLIs through `dotnet tool` already. Everyone else: use the [standalone binary](#install) above.

Update with `dotnet tool update -g Ekso.Cli`. All versions, including pre-releases: [nuget.org/packages/Ekso.Cli](https://www.nuget.org/packages/Ekso.Cli).

***

## Shell completion

The `ekso` binary self-emits a completion script for your shell. There's no extra file in the tarball — the binary is the install vector.

Pick your shell, run the matching command once, and re-run after each upgrade so newly-added commands autocomplete.

<Tabs>
  <Tab title="zsh (macOS / Linux)">
    ```bash theme={null}
    mkdir -p ~/.zsh/completion
    ekso completion zsh > ~/.zsh/completion/_ekso

    # If your ~/.zshrc doesn't already source ~/.zsh/completion, add:
    #   fpath=(~/.zsh/completion $fpath)
    #   autoload -Uz compinit && compinit

    # If completion doesn't kick in immediately, clear the compinit cache:
    rm -f ~/.zcompdump*
    ```
  </Tab>

  <Tab title="bash (Linux)">
    ```bash theme={null}
    # Requires the bash-completion package on most distros.
    ekso completion bash | sudo tee /etc/bash_completion.d/ekso > /dev/null

    # Or, no-sudo install scoped to your shell:
    ekso completion bash > ~/.local/share/bash-completion/completions/ekso
    ```
  </Tab>

  <Tab title="bash (macOS via Homebrew)">
    ```bash theme={null}
    brew install bash-completion@2
    ekso completion bash > "$(brew --prefix)/etc/bash_completion.d/ekso"
    ```

    macOS ships zsh by default since 10.15 — only do this if you've explicitly switched to bash.
  </Tab>

  <Tab title="fish">
    ```bash theme={null}
    ekso completion fish > ~/.config/fish/completions/ekso.fish
    ```

    fish picks the file up automatically — no `source` step required.
  </Tab>

  <Tab title="PowerShell (Windows)">
    ```powershell theme={null}
    # Persistent — appended to your PowerShell profile so every new shell loads it.
    ekso completion pwsh >> $PROFILE

    # Or for the current session only:
    ekso completion pwsh | Out-String | Invoke-Expression
    ```

    Works in both Windows PowerShell 5.1 and PowerShell 7+.
  </Tab>
</Tabs>

### Ephemeral install (current shell only)

For a quick try without writing to disk:

```bash theme={null}
source <(ekso completion bash)   # bash
source <(ekso completion zsh)    # zsh
```

### What completes

After installing, `<TAB>` completes:

* Top-level branches — `ekso <TAB>` → `auth item board mcp migrate ...`
* Verbs within a branch — `ekso item <TAB>` → `create get list update delete`
* Nested branches — `ekso docs folder <TAB>` → `list get create update delete`, `ekso migrate jira <TAB>` → `list-projects collect apply status`
* Global flags after `-` — `ekso item list --<TAB>` → `--url --api-key --format ...`

Per-flag value completion (item ids, etc.) is on the roadmap. For now, `<TAB>` completes commands and flag *names*; values you type yourself.

### Re-run after upgrade

The completion script is a snapshot of the binary's command surface at the moment you ran `ekso completion <shell>`. New commands added by a later release won't autocomplete until you re-run the same command and overwrite the script.

## Next steps

* **[Authenticate](/cli/authentication)** — sign in to your install via device flow, or supply an API key.
* **[Configure](/cli/configuration)** — set defaults via environment variables so you don't repeat `--url` on every call.
