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
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:
fullalone runs the targets on the frame as independent stages, unattached to the parent's detections.fullwithincludeClassesruns 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:
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
inferencecomponent 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
