> For the complete documentation index, see [llms.txt](https://docs.eyepop.ai/developer-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eyepop.ai/developer-documentation/cli/getting-started.md).

# Install And Sign In

Install, authenticate, and configure the CLI

{% hint style="warning" %}
**The CLI is in beta.** Commands, flags, and output shape can change between releases. Pin a version in anything automated, and check the [Command Reference](/developer-documentation/cli/reference.md) after upgrading.
{% endhint %}

### Install

`eyepop` is a single binary. Pick your platform.

**macOS** — Apple Silicon and Intel

```bash
brew tap eyepop-ai/eyepop
brew trust eyepop-ai/eyepop
brew install eyepop
```

`brew trust` lets Homebrew load formulae from the EyePop tap before installing.

**Linux** — ARM64 and AMD64

```bash
curl -fsSL https://raw.githubusercontent.com/eyepop-ai/homebrew-eyepop/main/install.sh | sh
```

The script downloads the release binary, verifies its SHA-256, and installs it to `~/.local/bin` — or over an existing non-Homebrew `eyepop` already on your `PATH`, so re-running it updates in place. It lives in the public tap, so you can [read it first](https://github.com/eyepop-ai/homebrew-eyepop/blob/main/install.sh). Set `EYEPOP_INSTALL_DIR` to install elsewhere, or `EYEPOP_VERSION` to pin a release tag.

If it warns that the install directory is not on your `PATH`, add it:

```bash
export PATH="$HOME/.local/bin:$PATH"
```

Homebrew works on Linux too, with the same three commands as macOS. The install script also runs on macOS.

**Windows** — AMD64

Download `eyepop-v<version>-x86_64-pc-windows-msvc.zip` from the [latest release](https://github.com/eyepop-ai/homebrew-eyepop/releases/latest), unzip it, and put `eyepop.exe` on your `PATH`.

**Any platform, by hand**

Every release publishes one archive per platform. Pick your target and let the tag resolve to the newest release:

```bash
TARGET=x86_64-unknown-linux-gnu
VERSION=$(curl -fsSL https://api.github.com/repos/eyepop-ai/homebrew-eyepop/releases/latest \
  | sed -n 's/.*"tag_name": *"\([^"]*\)".*/\1/p')

curl -fsSL -o eyepop.tar.gz \
  "https://github.com/eyepop-ai/homebrew-eyepop/releases/download/$VERSION/eyepop-$VERSION-$TARGET.tar.gz"
tar -xzf eyepop.tar.gz
mkdir -p ~/.local/bin
install -m 0755 eyepop ~/.local/bin/eyepop
```

Targets: `x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu`, `x86_64-apple-darwin`, `aarch64-apple-darwin`.

Verify the install:

```bash
eyepop --version
```

Update later with `brew upgrade eyepop` for Homebrew installs, or by re-running the install script otherwise.

```bash
eyepop update
```

`eyepop update` upgrades a Homebrew install in place. On any other install method it reports the latest version, and when a newer one has shipped it prints the download link for your platform.

### Authenticate

Choose the path that fits how you use the CLI.

{% tabs %}
{% tab title="Interactive (browser)" %}
Sign in through the browser OAuth flow — best for local, day-to-day use:

```bash
eyepop auth login
```

Check or clear your session:

```bash
eyepop auth status
eyepop auth logout
```

{% endtab %}

{% tab title="Scripts & CI (API key)" %}
Set an API key in the environment — best for automation. This is the same key the SDKs use; create one in the [dashboard](https://dashboard.eyepop.ai) (see [API Keys](/developer-documentation/api-keys.md)) or, once logged in, with `eyepop create key`:

```bash
export EYEPOP_API_KEY=eyp_...
```

The CLI picks it up automatically, no `auth login` needed. `eyepop get key` then checks that key: whether it is still valid, when it expires, and what it may reach.
{% endtab %}
{% endtabs %}

{% hint style="info" %}
API keys are secrets — keep them out of source control and shared shell history.
{% endhint %}

### Choose an account

After `eyepop auth login`, `eyepop auth status` shows the account new resources are created in, and `eyepop get accounts` lists every account you can reach. Both read the stored login session, so under `EYEPOP_API_KEY` alone `auth status` reports that you are not logged in and `get accounts` refuses:

```bash
eyepop auth status
eyepop get accounts
```

Reads are not limited to one account, so data shared with you stays visible. To create somewhere else — or to select an account under an API key — name the account on the call with `--account <uuid>`, or set `EYEPOP_ACCOUNT_UUID` for the whole shell.

### Machine-readable output

Add `--json` to any command when scripting, to get raw JSON instead of styled tables. A few commands have no table to replace and ignore it: `eyepop tui` refuses it outright, `eyepop update` and `eyepop instance logs` print plain text, and `eyepop create deployment` and `eyepop patch deployment` print a bare session UUID either way.

```bash
eyepop get datasets --json
eyepop run --model eyepop.person:latest --media-path image.jpg --json
```

### Next steps

* [Run Inference & Evaluations](/developer-documentation/cli/run.md) — run models on media and datasets
* [Resources](/developer-documentation/cli/resources.md) — manage datasets, abilities, models, and sessions
