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

# Install the CLI

> Get the nora command on your machine and sign in.

The `nora` CLI is a single binary that talks to the Nora platform over HTTPS. Every action you can take in the app has a CLI equivalent — see the [Command reference](/cli/reference) for the full surface.

## Install

<Tabs>
  <Tab title="macOS / Linux">
    ```bash theme={null}
    curl -fsSL https://install.nora.my | sh
    ```

    Installs the `nora` binary to `~/.nora/bin` and prints instructions to add it to your `PATH`.

    To pin a specific version:

    ```bash theme={null}
    curl -fsSL https://install.nora.my | NORA_VERSION=1.4.2 sh
    ```
  </Tab>

  <Tab title="Homebrew">
    ```bash theme={null}
    brew install nora-ai/tap/nora
    ```

    Auto-upgrades with `brew upgrade nora`.
  </Tab>

  <Tab title="From source (Rust)">
    ```bash theme={null}
    cargo install nora-cli
    ```

    Requires a recent stable Rust toolchain. Produces a locally-built binary in `~/.cargo/bin`.
  </Tab>

  <Tab title="Docker">
    ```bash theme={null}
    docker run --rm -it -v ~/.nora:/root/.nora nora-ai/cli:latest nora --help
    ```

    Alias for convenience:

    ```bash theme={null}
    alias nora='docker run --rm -it -v ~/.nora:/root/.nora nora-ai/cli:latest nora'
    ```

    Good when you can't install a binary directly (locked-down laptops, ephemeral CI).
  </Tab>
</Tabs>

Verify:

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

## Upgrade

<Tabs>
  <Tab title="Install script">
    Re-run the install script — it fetches the latest.

    ```bash theme={null}
    curl -fsSL https://install.nora.my | sh
    ```
  </Tab>

  <Tab title="Homebrew">
    ```bash theme={null}
    brew upgrade nora
    ```
  </Tab>

  <Tab title="Cargo">
    ```bash theme={null}
    cargo install nora-cli --force
    ```
  </Tab>
</Tabs>

CLI check on start-up: if a newer version is available and your version is > 30 days old, you'll see a one-line reminder. Turn off with `NORA_NO_UPDATE_CHECK=1`.

## Sign in

```bash theme={null}
nora auth login
```

A browser window opens for OAuth. Sign in with the same account you use at [platform.nora.my](https://platform.nora.my).

For CI or headless environments, skip the browser flow with a token — see [`nora auth`](/cli/auth).

Credentials are stored at:

* macOS: `~/Library/Application Support/nora/credentials.json`
* Linux: `~/.config/nora/credentials.json`
* Windows: `%APPDATA%\nora\credentials.json`

File permissions are `0600` (read-only for you). Never commit it.

## Check status

```bash theme={null}
nora auth status
```

Shows your active workspace, your saved workspaces, and a redacted token summary. Always safe to run — no side effects.

## Pick a workspace

If you belong to multiple workspaces, switch between them:

```bash theme={null}
nora auth workspaces list
nora auth workspaces switch <workspace-id>
```

The switch is persistent — subsequent commands act on the newly active workspace until you switch again.

Override for one command without switching:

```bash theme={null}
nora --workspace <other-id> flows list
```

## Pin a Flow

Most commands operate on one Flow. Pin your working Flow so you don't type the slug every time:

```bash theme={null}
nora flows use <flow-slug>
nora flows current   # prints the pinned slug
```

Now `nora flows publish`, `nora agents create`, etc. all default to that Flow.

## Environment overrides

For scripts and CI, override without touching stored config:

| Variable          | What it does                                             |
| ----------------- | -------------------------------------------------------- |
| `NORA_BASE_URL`   | Server origin (default `https://platform.nora.my`)       |
| `NORA_TENANT`     | Workspace override                                       |
| `NORA_FLOW`       | Flow override                                            |
| `NORA_TOKEN`      | Non-interactive auth (skip `nora auth login`)            |
| `NORA_CONFIG_DIR` | Alternative config directory (for multi-account)         |
| `NORA_LOG`        | Log level: `error` / `warn` / `info` / `debug` / `trace` |

Full list and precedence rules: [Global flags](/cli/global-flags).

## Shell completion

Generate completion scripts for your shell:

```bash theme={null}
# bash
nora completion bash > /etc/bash_completion.d/nora

# zsh
nora completion zsh > "${fpath[1]}/_nora"

# fish
nora completion fish > ~/.config/fish/completions/nora.fish
```

Restart your shell (or `source` the file).

Tab-completes subcommands and flags. Doesn't fetch remote data (Flow slugs, IDs) — those require an extra round-trip; use `--json | jq` when you need them.

## What to explore next

<CardGroup cols={2}>
  <Card title="Auth commands" icon="key" href="/cli/auth">
    Sign in, switch workspaces, use tokens in CI.
  </Card>

  <Card title="Working with Flows" icon="diagram-project" href="/cli/flows">
    List, apply, publish, and roll back.
  </Card>

  <Card title="Full command reference" icon="list" href="/cli/reference">
    Every command group at a glance.
  </Card>

  <Card title="Piping & secrets" icon="lock" href="/cli/piping-and-secrets">
    Feed secret values and files safely.
  </Card>
</CardGroup>
