For the complete documentation index, see llms.txt. This page is also available as Markdown.

Forwarding

Chaining Pop components, and what each one receives

Forwarding is how a list of components becomes a pipeline. A component's forward names what runs next and what those components receive — each detection as its own crop, or the whole frame.

The forward object

Field
Type
Description

targets

list

The components to run next.

operator.type

string

crop, full, or crop_with_full_fallback.

operator.includeClasses

list

Restricts forwarding to these class labels.

operator.crop.maxItems

integer

Caps how many detections are cropped per frame. Defaults to 16.

operator.crop.boxPadding

float

Expands each crop box by this factor before cutting.

operator.crop.orientationTargetAngle

float

Rotates each crop to this angle in degrees — how skewed text is straightened before OCR.

Operators

crop cuts each detection out of the frame and runs the targets on the cutouts. This is the workhorse: detect a vehicle, crop it, find the plate inside it.

full passes the whole frame through untouched. What it means depends on whether you also filter classes:

  • full alone runs the targets on the frame as independent stages, unattached to the parent's detections.

  • full with includeClasses runs the targets on the whole frame but attaches their results to the parent's matching detections. Use it when a model needs the full scene for context but its output belongs to a specific object.

crop_with_full_fallback crops when the parent detected something, and falls back to the full frame when it detected nothing — so a Pop still returns an answer for media where the first stage found no objects.

Filtering by class

includeClasses narrows what gets forwarded to the labels you list. On eyepop.vehicle:latest, includeClasses: ["car", "truck"] sends cars and trucks downstream and leaves buses and motorcycles behind.

Naming a label the parent ability cannot produce is rejected when the Pop is compiled, so a typo fails at the boundary rather than silently forwarding nothing.

Composability

Any component can forward to any component. There is no type pairing the platform rejects, so the real constraints are about what makes sense:

Component
Sensible parents
Notes

inference

anything, or top level

A crop forward from a detector is the common case.

tracking

a detector, via crop

Tracking needs objects to track and video to track them across.

contour_finder

an inference producing segmentation

Nothing to contour without masks.

component_finder

an inference producing segmentation

Nothing to split without masks.

forward

anything, or top level

Used to branch.

A finder scopes itself to the nearest enclosing inference component, following the chain up through any intervening finders. A finder placed at the top level, with no inference above it, scopes to everything on the frame.

Two rules the platform does enforce:

  • A component id, if you set one, must be unique in the Pop.

  • Every inference component must name exactly one ability, by alias or uuid.

Next steps

  • Components — every component type and its attributes

  • Examples — worked pipelines end to end

  • Pop Object — the shape of a Pop and how its top-level components run

Last updated