Working with other services#
DL Streamer Pipeline Server can work with following microservices for visualization and model management.
Model Download#
The Model Download microservice provides a REST API to download AI/ML models from multiple hubs (Hugging Face, Ultralytics, Ollama, Geti™ software, and Pipeline Zoo Models) and optionally convert them to OpenVINO™ IR format. By mounting a shared volume between Model Download and DL Streamer Pipeline Server, downloaded models become immediately accessible to DLSPS pipelines without any manual file transfer.
Architecture Overview#
Both services share a host directory mounted as a volume:
Model Download writes models to
/opt/modelsinside its container.DL Streamer Pipeline Server reads models from
/home/pipeline-server/modelsinside its container.Both paths are mapped to the same host directory, so models downloaded through the Model Download API are instantly available to DLSPS.
Setup with Docker Compose#
Add both services to a Docker Compose file and declare a shared named volume (or bind-mount a host path):
# SPDX-FileCopyrightText: (C) 2026 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
services:
model-download:
image: intel/model-download:latest
container_name: model-download
command: --plugins all
ports:
- "8200:8000"
environment:
- MODEL_PATH=/opt/models
- HF_TOKEN=${HUGGINGFACEHUB_API_TOKEN:-}
volumes:
- shared_models:/opt/models
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8000/health || exit 1"]
interval: 30s
timeout: 10s
retries: 5
start_period: 60s
dlstreamer-pipeline-server:
image: ${DLSTREAMER_PIPELINE_SERVER_IMAGE}
container_name: dlstreamer-pipeline-server
ports:
- "8080:8080"
volumes:
- shared_models:/home/pipeline-server/models:ro
# ... other required DLSPS volume mounts
depends_on:
model-download:
condition: service_healthy
volumes:
shared_models:
Note: The
shared_modelsnamed volume ensures both containers operate on the same model files. The:roflag on the DLSPS side is optional but recommended to prevent DLSPS from accidentally modifying downloaded models.
Downloading Models via the Model Download API#
Once the services are running, use the Model Download REST API to pull models onto the shared volume. DLSPS can then reference them directly in pipeline configurations.
Step 1 – Start the services:
docker compose up -d
Step 2 – Request a model download (example: YOLOv8 from Ultralytics):
curl -X POST "http://localhost:8200/api/v1/models/download?download_path=yolo_model" \
-H "Content-Type: application/json" \
-d '{
"models": [
{
"name": "yolov8s",
"hub": "ultralytics",
"type": "vision"
}
],
"parallel_downloads": false
}'
The response contains a job_id:
{
"message": "Started processing 1 model(s)",
"job_ids": ["5f0d4eba-c79c-4d02-97a6-43c3d0168ca0"],
"status": "processing"
}
Step 3 – Poll for completion before launching pipelines:
curl -X GET "http://localhost:8200/api/v1/jobs/5f0d4eba-c79c-4d02-97a6-43c3d0168ca0"
Wait until the response shows "status": "completed". The result.download_path field indicates the subdirectory under the shared volume where the model files were saved.
Step 4 – Reference the model in a DLSPS pipeline using the path inside the DLSPS container (/home/pipeline-server/models/<download_path>).
Additional Resources#
Model Download API Reference – full OpenAPI spec including upload, conversion, and job management endpoints