FrameProcessor, a StreamServer that handles trickle transport, and a Docker container that the Orchestrator manages.
Three-layer architecture
VideoFrame objects (raw pixel data + PTS timestamp) and returns processed VideoFrame objects. Your model logic goes in process_frame().
StreamServer wraps the FrameProcessor and handles trickle transport: subscribing to input frames, calling your processor, and publishing output frames. PyTrickle provides this out of the box.
Docker container packages the StreamServer, FrameProcessor, model weights, and dependencies. The Orchestrator manages the container lifecycle via the Docker socket.
Capability registration
The Orchestrator advertises your container’s capabilities to the network throughaiModels.json:
Gateways discover your capability through the AI Service Registry on-chain and the Orchestrator’s
GetOrchestratorInfo response.
Health check contract
Every BYOC container must expose a/health endpoint:
/health to determine container readiness. A container that does not return {"status": "ok"} is not advertised to Gateways.
The BYOC quickstart walks through building and registering a container. The FrameProcessor reference covers the processing API.