Growth plan inference crashes in WebRTC worker (TypeError: heartbeat_callback is None)

Hi Roboflow Support Team,

I’m running into an issue that seems specific to Growth plan inference with workflows, and I’d like to check whether this is a known bug or a limitation.

Summary

  • My created workflow works under the Basic plan
  • On a new Growth-plan workspace, the same workflow runs successfully in the UI but inference fails at runtime.
  • Error occurs during WebRTC worker initialization
  • Results in a 500 Internal Server Error

This happens even with a brand-new workspace, project, model, and workflow created directly under the Growth plan.

What Works

  • Running the workflow via “Run” in the Roboflow UI works correctly (Both Serverless API and Locally).
  • The same workflow logic works under the Basic plan in both UI and deployment.

What Fails

Any inference path that initializes the WebRTC worker fails with an internal error, regardless of the model weights used:

  • A custom model weight downloaded from the Basic plan, where the same workflow runs successfully without any issues.
  • A public COCO‑trained YOLO model, tested to rule out issues related to custom datasets or training.

Issue Details:

And here is the log from Docker:

Hypothesis

This looks like a server-side bug in the Growth plan inference engine, specifically in the WebRTC worker initialization logic, where heartbeat_callback is not set in certain valid workflow configurations.

Additionally, I also tried asking your agent. According to it, this issue is caused by an edge‑case bug in the experimental WebRTC path of inference container v0.64.8. The WebRTC worker fails to initialize for newly created workspaces (kawadard2), while older workspaces work correctly. The recommended and production‑supported solution is to use InferencePipeline.

Questions

  1. Is this a known issue with Growth plan inference / WebRTC workers?
  2. Is there a way to deploy a workflow on a Growth Plan similar to that of a Basic Plan? Is a fix or workaround planned for this error?

I previously encountered a limitation where InferencePipeline only ran on CPU, despite GPU availability (details here: Local Inference Not Working on JetPack 6.2.2 (YOLOv8 Workflow + RTSP Stream)).
Because of that limitation, I am strongly hoping to continue using workflow-based inference via InferenceHTTPClient, rather than fully switching to InferencePipeline, if possible.

Thanks in advance for your help — any guidance would be greatly appreciated.

Best regards,
Trang

  • Project Type: Object Detection Model
  • Operating System & Browser: window 11
  • Project Universe Link or Workspace/Project ID: workflow=“custom-workflow”, workspace=“kawadard2”
  • Do you grant Roboflow Support permission to access your Workspace for troubleshooting? (Yes/No): Yes

Update:

I was able to resolve the WebRTC worker crash issue by switching to a newer version (1.2.7-post2) of the Roboflow inference Docker image from Docker Hub: roboflow/roboflow-inference-server-cpu - Docker Image

Interestingly, using the latest tag did NOT fix the issue, here:
docker pull roboflow/roboflow-inference-server-cpu:latest

This suggests that the latest tag may be pointing to an older image that still contains the heartbeat_callback bug in the WebRTC worker.

After updating the container version:

  • WebRTC initialization no longer crashes.

  • Workflow inference runs successfully.

So this issue appears to have been fixed in newer container versions, but not reflected in the latest tag.

Hi @NgocTrang ,

Thank you for reporting this issue!

There is no difference in how inference server works (including webrtc component) between different plans.

Indeed, the 1.2.7-post2 image is test image we pushed to test unrelated change. Webrtc should work the same way for both :latest and 1.2.7-post2

Looking at the error message (thank you for sharing!) I think the core of the issue is in how multi-processing works on windows - that’s something we will have to dig deeper in order to fix. Can you share how you start the container? (i.e. through command line? if yes then what is the command?)

Many thanks once again,

Grzegorz

Hi @Grzegorz,

Thank you for your response!
I think I may have identified the root of the confusion.

Last week, I was able to run inference successfully on the Basic Plan using the following command on Windows:

docker run -d ^
    --name inference-server ^
    --read-only ^
    -p 9001:9001 ^
    --volume "%USERPROFILE%\.inference\cache:/tmp:rw" ^
    --security-opt="no-new-privileges" ^
    --cap-drop="ALL" ^
    --cap-add="NET_BIND_SERVICE" ^
    roboflow/roboflow-inference-server-cpu:latest

Later, when I switched to the Growth Plan, I encountered the WebRTC error, so I just restarted the container using:

docker rm <id>
docker run -p 9001:9001 roboflow/roboflow-inference-server-cpu:latest

This week, I tested again using version 1.2.7-post2 with the following command:

docker pull roboflow/roboflow-inference-server-cpu:1.2.7-post2
docker run -p 9001:9001 roboflow/roboflow-inference-server-cpu:1.2.7-post2

and it worked successfully. Because of this, I initially thought the issue was due to a difference between the images.

However, I just tried removing all existing inference-server containers and images and ran it. This time, it worked successfully without any issues:

docker pull roboflow/roboflow-inference-server-cpu:latest
docker run -p 9001:9001 roboflow/roboflow-inference-server-cpu:latest

Therefore, at this point, I think that the issue is not caused by the latest image. However, since I have already cleared the old cache, I am no longer able to reproduce the issue.

Anyway, thank you very much for your support and assistance!

Best regards,
Trang