> 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.md).

# CLI

A terminal-first way to run inference, evaluate datasets, and manage resources

The EyePop CLI (`eyepop`) is a single binary for calling EyePop from your terminal or scripts — authenticate, run inference, evaluate datasets, and manage datasets, abilities, deployments, and sessions without writing code.

{% 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
```

### Run your first inference

```bash
eyepop auth login
eyepop run --model eyepop.person:latest --media-path image.jpg
```

Results print as a styled summary by default. Add `--json` (or `--format json`) for machine-readable output. One media file that succeeds prints a single `{file, response}` record — plus `request_id` when the run has one; one still processing prints a pending record instead. Anything else — two or more files, or one that failed — prints a batch envelope with a `results` array alongside `total`, `success`, `failed`, `failures`, and `pending`.

### What you can do

| Goal                             | Command                                                |
| -------------------------------- | ------------------------------------------------------ |
| Sign in                          | `eyepop auth login`                                    |
| List your accounts               | `eyepop get accounts`                                  |
| List datasets                    | `eyepop get datasets`                                  |
| List runnable models             | `eyepop get models`                                    |
| Run a model on media             | `eyepop run --model <model> --media-path <media>`      |
| Evaluate an ability on a dataset | `eyepop evaluate --ability <ability> --dataset <name>` |
| Check evaluation status          | `eyepop get evals <request_id>`                        |

### Next steps

* [Getting Started](/developer-documentation/cli/getting-started.md) — install, authenticate, and configure output
* [Concepts](/developer-documentation/cli/concepts.md) — models, Pops, deployments, instances, and datasets
* [Run Inference & Evaluations](/developer-documentation/cli/run.md) — the core `run` workflow
* [Persistent Deployments](/developer-documentation/cli/persistent-sessions.md) — keep a target warm behind a stable UUID
* [On-Premise Instances](/developer-documentation/cli/on-premise.md) — run on hardware you control
* [Datasets & Evaluation](/developer-documentation/cli/evaluation.md) — build a dataset and score against ground truth
* [Resources](/developer-documentation/cli/resources.md) — manage datasets, abilities, deployments, and sessions
* [Command Reference](/developer-documentation/cli/reference.md) — every command and flag
