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

# Install the CLI

> Get the jstm command-line client on your machine and sign in.

The JoyStream CLI ships as a single self-contained binary. Everything in these docs uses `jstm`.

<Note>
  `jstm` and `joystream` are the same program under two names. The prebuilt binary is called `joystream`; `jstm` is the short alias. Use whichever you prefer — the docs use `jstm`.
</Note>

## Download the binary

Releases publish a macOS arm64 binary. Download it from the matching `cli-v*` release tag:

```bash theme={null}
curl -L -o joystream \
  https://github.com/joystream-ai/joystream/releases/download/cli-v0.22.0/joystream-macos-arm64

chmod +x joystream
./joystream --version
```

<Warning>
  On first run, macOS may quarantine the binary. Clear the quarantine attribute with `xattr -cr ./joystream`, then run it again.
</Warning>

Move it onto your `PATH` to use it from anywhere:

```bash theme={null}
mv joystream /usr/local/bin/
```

CI currently builds `macos-arm64` only. On other platforms, build from source.

## Build from source

Requires [uv](https://docs.astral.sh/uv/).

<CodeGroup>
  ```bash Binary theme={null}
  cd cli
  make build      # → ../dist/cli/joystream-<os>-<arch>
  make install    # build, then copy to ~/.local/bin/jstm
  ```

  ```bash Editable install theme={null}
  uv pip install -e cli    # exposes jstm and joystream on your PATH
  ```

  ```bash Run without installing theme={null}
  cd cli && uv run jstm --help
  ```
</CodeGroup>

`make build` names the binary for your platform automatically. A prebuilt binary won't pick up source edits until you rebuild, so during development run from source or re-run `make install`.

## Set up and sign in

```bash theme={null}
jstm init      # scaffold ~/.joystream/config.toml with a fresh encryption key
jstm login     # sign in
jstm whoami    # confirm your user and workspace context
```

`jstm login` with no flags opens your browser and shows a verification code, the same way `gh` and similar tools work. If you're on a machine without a browser, add `--no-browser` and it prints the URL and code instead.

To sign in entirely in the terminal with an emailed one-time code:

```bash theme={null}
jstm login --email you@example.com
```

See [Authentication](/cli/auth) for every sign-in mode.

## Shell completion

```bash theme={null}
jstm --install-completion
```

## Verify

```bash theme={null}
jstm whoami
jstm commands    # print the entire command tree
```

## Next

<Columns cols={2}>
  <Card title="Quickstart" href="/quickstart" icon="rocket">
    Draft, build, and dry-run your first agent.
  </Card>

  <Card title="Configuration" href="/cli/configuration" icon="settings">
    Config paths, environment variables, and precedence.
  </Card>
</Columns>
