> 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/platform/pop/pop-object.md).

# Pop Object

The shape of a Pop, and how its top-level components run

A [Pop](/developer-documentation/platform/pop.md) is the pipeline definition you hand to a worker session. It is a list of components plus a few settings that apply to the whole pipeline.

| Field           | Type   | Description                                                                                                                                                                                           |
| --------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `components`    | list   | The components to run. Required. See [Components](/developer-documentation/platform/pop/pop-components.md).                                                                                           |
| `postTransform` | string | A [JSONata](https://jsonata.org/) expression applied to the result before it is returned.                                                                                                             |
| `defaults`      | object | Source settings applied to every source this Pop processes, each overridable per source. See [Pop Defaults](/developer-documentation/platform/sources-and-options/pop-defaults.md).                   |
| `depthMap`      | object | The depth ability whose frame-level map feeds world coordinates, and whether to return the map itself. See [Depth Maps](/developer-documentation/platform/depth-and-world-coordinates/depth-maps.md). |

Everything documented across these pages is what the platform accepts on the wire. Where the Python or Node SDK cannot express something, or spells it differently, the page says so.

### The smallest Pop

One component, one ability:

```json
{
    "components": [
        { "type": "inference", "ability": "eyepop.person:latest" }
    ]
}
```

### How the component list runs

Top-level components run **in parallel** on the full frame. Each one sees the original media — not the output of the component before it — so list order carries no meaning.

Sequencing is expressed by [forwarding](/developer-documentation/platform/pop/pop-forwarding.md), not by position in the list. A Pop that must detect a vehicle *before* reading its plate nests the OCR component inside the detector's `forward`, rather than listing the two side by side.

```json
{
    "components": [
        { "type": "inference", "ability": "eyepop.person:latest" },
        { "type": "inference", "ability": "eyepop.text:latest" }
    ]
}
```

Both abilities above run against the same frame, independently, and both sets of predictions come back.

### Transforming the result

`postTransform` reshapes the response with a [JSONata](https://jsonata.org/) expression, so your application receives the structure it wants instead of remapping the prediction itself.

### Next steps

* [Components](/developer-documentation/platform/pop/pop-components.md) — every component type and its attributes
* [Forwarding](/developer-documentation/platform/pop/pop-forwarding.md) — chaining components, and what each one receives
* [Examples](/developer-documentation/platform/pop/pop-examples.md) — worked pipelines end to end
