v1.3.8
roboflow/inferencev1.3.8Jul 31, 2026by PawelPeczek-Roboflow
AI Summary
Adds opt-in model pre-loading for Workflows, introduces Rich Label visualization and Label v2, upgrades Gemini to v4 with native detection coordinates, and unifies region/environment selection.
Key Highlights
- Opt-in model pre-loading for Workflows to reduce startup latency
- Rich Label visualization with TrueType fonts and adaptive text sizing
- Gemini v4 with native object detection coordinates
- Uniform region & environment selection across SDK and CLI
- RF-DETR object detection now uses full execution plan
New Features
- Opt-in model pre-loading for InferencePipeline
- Rich Label visualization block
- Label v2 with adaptive text sizing
- Gemini v4 Workflow block
- Uniform region & environment selection
- RTSPS fallback to OpenCV/FFmpeg TLS
- Structured stream error codes
Full Release Notes
# 🚀 Added
## ⚡ Opt-in model pre-loading for Workflows in `InferencePipeline`
Video processing deserves predictable startup — until now, every model used by a Workflow was loaded lazily on the first frame, so the pipeline connected to the stream and then stalled while weights downloaded. `InferencePipeline.init_with_workflow(...)` gains an **opt-in** parameter that pre-loads all Roboflow models declared by the workflow's blocks at pipeline init, before a single frame is processed (@PawelPeczek-Roboflow, https://github.com/roboflow/inference/pull/2737):
```python
pipeline = InferencePipeline.init_with_workflow(
video_reference="rtsp://...",
workflow_specification=workflow,
workflows_dependencies_pre_init=["roboflow_platform_model"],
on_prediction=my_sink,
)
```
- **Concrete model ids** (like `yolov8n-640` in the spec) register in the model manager at init — weights are fetched upfront, first-frame latency stays flat.
- **Input-fed model ids** (`model_id: "$inputs.model"`) resolve once, on the first frame, when runtime parameters are known — including ids that blocks synthesize from version fields (e.g. `clip/<version>`).
- Pre-loading honors the effective step execution mode — nothing is fetched when steps execute remotely — and if a size-bounded model manager evicts a pre-loaded model, you get a warning instead of a silent cold start.
- Everything defaults to off: without the parameter, behavior is exactly as before.
The same knob is available on `ExecutionEngine.init(..., dependencies_pre_init=...)` for anyone embedding the Workflows Execution Engine directly. Under the hood, Workflow blocks can now declare their dependent resources (Roboflow models, Roboflow projects, third-party hosted models) through a typed, serializable contract, and the compiler can deduce the full dependency set of a compiled workflow — groundwork that pre-loading is the first consumer of. Execution Engine version goes to `v1.14.0`; see the [Execution Engine changelog](https://github.com/roboflow/inference/blob/main/docs/workflows/execution_engine_changelog.md) and the [block creation docs](https://inference.roboflow.com/workflows/create_workflow_block/) for the block-author contract.
## 🏷️ Rich Label visualization + Label v2 with adaptive text sizing
<img width="3024" height="1964" alt="image" src="https://github.com/user-attachments/assets/47a9253d-fd2e-4099-856c-3f39c5cf4d70" />
Detection labels finally look good: the new **Rich Label** visualization block renders sharp, anti-aliased text using TrueType fonts instead of OpenCV's dated bitmap fonts, with a dropdown of 20 approved fonts (downloaded from pinned URLs and verified against SHA-256 checksums). Alongside it, **Label v2** adds an Automatic text-sizing mode that scales label text to the image resolution, keeping labels readable from thumbnails up to 4K (@SkalskiP, https://github.com/roboflow/inference/pull/2722).
## 🤖 Gemini v4 with native object detection coordinates
<img width="2235" height="2838" alt="image" src="https://github.com/user-attachments/assets/edbe2933-35d7-4b6f-8193-86224b2246d0" />
The new `google_gemini@v4` Workflow block switches to Gemini-native `box_2d` object detection output and enforces a JSON output schema, eliminating the malformed-response parsing failures seen in v3. Across every tested Gemini model, v4 **increased mAP@50 while reducing average token usage and inference time per image**; the supported model catalog is expanded and v3 behavior is preserved for existing workflows (@SkalskiP, https://github.com/roboflow/inference/pull/2734).
## 🌍 Uniform region & environment selection
One switch selects the region, one the environment — and `inference`, the CLI, the SDK, and `inference-models` all resolve their default hosts from the same registry (@imbgar-roboflow, https://github.com/roboflow/inference/pull/2701):
```bash
ROBOFLOW_REGION=eu inference ... # api.roboflow.eu
ROBOFLOW_REGION=eu ROBOFLOW_ENVIRONMENT=staging inference ... # api.roboflow-eu.one
```
The scattered per-file host ternaries are gone; `inference_sdk/regions.py` is the single source of truth for the region × environment matrix.
## 🎛️ Execution & operations
- **RF-DETR object detection now uses the full execution plan**, aligning it with the rest of the `inference_models` execution stack (@dkosowski87, https://github.com/roboflow/inference/pull/2731; follow-up test fixes in https://github.com/roboflow/inference/pull/2733).
- **RTSPS streams fall back to OpenCV/FFmpeg TLS** when the primary path cannot negotiate the transport (@NVergunst-ROBO, https://github.com/roboflow/inference/pull/2727).
- **Structured stream error codes for RTSPS and auth failures** — stream connection problems now surface as typed, actionable errors instead of generic failures (@NVergunst-ROBO, https://github.com/roboflow/inference/pull/2725).
# 🔧 Fixed
- **Workflow output serialization no longer 500s on string-declared kinds** — output kinds declared as plain strings (e.g. `"string"`) crashed serialization with `TypeError: unhashable type: 'list'`; such kinds are now resolved by name and the matching serializer applied (@rafel-roboflow, https://github.com/roboflow/inference/pull/2730).
- **Profiling handles read-only filesystems** — an `OSError` when dumping profiler traces on read-only deployments is caught instead of failing the run (@iamfaham, https://github.com/roboflow/inference/pull/2732).
- **SAM3 usage tracking fixed** (@grzegorz-roboflow, https://github.com/roboflow/inference/pull/2720).
# 🚧 Maintenance
- **Security: `setuptools>=83.0.0`** dependency floor (@PawelPeczek-Roboflow, https://github.com/roboflow/inference/pull/2735).
---
### 📦 Side note: dual GPU build for Cosmos 3
There is still no released `transformers` version that ships the NVIDIA Cosmos 3 model code, so this release again publishes **two GPU server builds**:
- `roboflow/roboflow-inference-server-gpu:1.3.8` — the standard build, with the regular dependency stack (no Cosmos 3).
- `roboflow/roboflow-inference-server-gpu:1.3.8-cosmos3` — identical server, but with the custom `transformers` dependency set required by **NVIDIA Cosmos 3 Edge**:
```bash
docker pull roboflow/roboflow-inference-server-gpu:1.3.8-cosmos3
```
Use the `-cosmos3` tag only if you need the Cosmos 3 Edge preview self-hosted; all other images are single-build.
---
**Full changelog:** [`v1.3.7...v1.3.8`](https://github.com/roboflow/inference/compare/v1.3.7...v1.3.8)
# 🏅 New Contributors
* @bczifra made their first contribution in https://github.com/roboflow/inference/pull/2698
* @iamfaham made their first contribution in https://github.com/roboflow/inference/pull/2732
**Full Changelog**: https://github.com/roboflow/inference/compare/v1.3.7...v1.3.8