Skip to main content


In most cases, Nimble is meant to be the server in a client-server model; but Sinks allow Nimble to act as a client, initiate a connection to an external resource, and then push data out (from the end of a pipeline).

Every sink has a mandatory type field that indicates the implementation:

  • type: The sink implementation type. There are 5 different implementations:
    • file: Save annotated video stream to file (for debug use).
    • embedding: Produces an "embedding" database with a dump of embedding metadata along with each image frame.
    • pickle: Directly serialize pipeline metadata to Python "pickle" files (for debug use).
    • zmq: Publish pipeline metadata (with optional jpeg) to a ZMQ socket. Deprecated.
    • inf: Infinite data sink. Deprecated.

Every sink also has an optional filter property, defined as a list of source IDs. Each pipeline metadata frame is filtered using this property to make sure it came from an allowed source. This effectively allows the sink to target a specific channel (source + pipeline) or multiple channels.

Different sink types may define additional properties, such as address:

type: "file"         # string: "file", "embedding", "pickle", "zmq", "inf"
address: "video.mp4" # string: url or path, depending on 'type' property
filter: [] # array of source ids: source(s) to allow, no filter if list is empty

The WebSocket endpoint is always enabled for all channels and does not need to be explicitly specified as a sink. The WebSocket is the recommended way to consume analytics metadata from Nimble.