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

# Quickstart

The shortest path from zero to a structured prediction. Pick your language or the CLI, install, run.

### 1. Sign up and pick your plan

Create an account in the [dashboard](https://dashboard.eyepop.ai) and choose a plan — you need an active plan before you can run anything. See [Pricing](/developer-documentation/pricing.md).

### 2. Get an API key

Create one in the [dashboard](https://dashboard.eyepop.ai) under **API Keys** (details in [API Keys](/developer-documentation/api-keys.md)), then put it in your environment:

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

### 3. Install

{% tabs %}
{% tab title="Python" %}

```bash
pip install eyepop
```

{% endtab %}

{% tab title="Node" %}

```bash
npm install --save @eyepop.ai/eyepop
```

{% endtab %}
{% endtabs %}

### 4. Run your first inference

{% tabs %}
{% tab title="Python" %}

```python
from eyepop import EyePopSdk
from eyepop.worker.worker_types import InferenceComponent, Pop

pop = Pop(components=[
    InferenceComponent(ability="eyepop.person:latest")
])

with EyePopSdk.sync_worker(pop=pop) as endpoint:
    result = endpoint.upload("image.jpg").predict()
    print(result)
```

{% endtab %}

{% tab title="Node" %}

```typescript
import { EyePop, PopComponentType } from '@eyepop.ai/eyepop'

async function main() {
    const endpoint = await EyePop.workerEndpoint({
        pop: {
            components: [
                {
                    type: PopComponentType.INFERENCE,
                    ability: 'eyepop.person:latest',
                },
            ],
        },
    }).connect()

    try {
        const results = await endpoint.process({ source: { path: 'image.jpg' } })
        for await (const result of results) {
            console.log(result)
        }
    } finally {
        await endpoint.disconnect()
    }
}

main().catch(console.error)
```

{% endtab %}
{% endtabs %}

### What you get back

Structured JSON — one prediction per image (or per frame for video):

```json
{
  "source_width": 1920,
  "source_height": 1080,
  "objects": [
    { "classLabel": "person", "confidence": 0.95, "x": 100, "y": 50, "width": 80, "height": 200 }
  ]
}
```

### Prefer the terminal?

After you've signed up and picked a plan (step 1), do the rest from the command line.

```bash
# Install — macOS and Linux
brew tap eyepop-ai/eyepop
brew trust eyepop-ai/eyepop
brew install eyepop

# Or, without Homebrew, on Linux and macOS:
curl -fsSL https://raw.githubusercontent.com/eyepop-ai/homebrew-eyepop/main/install.sh | sh

# Sign in — opens the browser to log in to your account
eyepop auth login

# Run your first inference with the default person model
eyepop run --model eyepop.person:latest image.jpg
```

Every `run` target is a flag, so positional arguments are always media. API keys are created in the [dashboard](https://dashboard.eyepop.ai), not from the CLI.

Full install options, commands, and usage are available from the CLI section in this site's navigation.

### Next steps

* **Python SDK and Node SDK** — open their sections in this site's navigation for video, streaming, and visualization guides
* **CLI** — open its section in this site's navigation to install, authenticate, run inference, and manage resources
* [Pops](/developer-documentation/platform/pop.md) — what you just ran, and how to chain abilities into a pipeline (detect → crop → OCR)
* [Abilities](/developer-documentation/platform/abilities.md) — the catalog of vision tasks you can run
