roboflow / roboflow/inference

Workflows builder UI (/build) returns 404 for manually-run containers, ENABLE_BUILDER is undocumented

Open Beginner friendly
#2,993 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
2.5k
Forks
319
Avg merge
1d 14h
Merged PRs (30d)
133

Description

Search before asking
  • I have searched the Inference issues and found no similar bug report.
Bug

The landing page served by the inference server links to the Workflows builder at /build. When the server is started manually (docker run / docker compose, per the "Install on Linux" docs page), that link returns 404.

The builder router is mounted only when an env var is set, and that var defaults to off:

# inference/core/env.py:719
ENABLE_BUILDER = str2bool(os.getenv("ENABLE_BUILDER", False))

# inference/core/interfaces/http/http_api.py (~line 4496)
if ENABLE_BUILDER:
    app.include_router(builder_router, prefix="/build", tags=["builder"])

inference server start --dev avoids the 404 because the CLI injects ENABLE_BUILDER=True (inference_cli/lib/container_adapter.py). That is the only place the flag is set in the codebase.

Neither ENABLE_BUILDER nor its companion BUILDER_ORIGIN (CORS) appears in docs.roboflow.com, including the Docker configuration options page and the full Environment Variables reference. The CLI reference's "Development mode" section describes --dev as enabling the notebook environment and the 9002 mapping, and does not mention the builder. PR #1794's test plan ("Build docker image with ENABLE_BUILDER=true") shows manual activation is expected usage, without any public doc stating how.

Requested fix (docs): document ENABLE_BUILDER and BUILDER_ORIGIN in the environment-variable reference, and state that --dev also enables /build. A code alternative is to hide the /build link on the landing page when the flag is off, since the link is what misleads.

Environment
  • Inference: 1.5.2 (roboflow/roboflow-inference-server-gpu:latest, image from ~2026-09); the flag is unchanged since v0.38.0 (commit 4092921, 2025-02-04).
  • OS: Fedora Linux 44, kernel 6.17, podman 5.8. The repro below uses plain Docker; the runtime does not matter here.
  • Python: 3.13 (inference-sdk client).
Minimal Reproducible Example
# exactly the docs page's GPU command, plus nothing else
docker run -d --name inference-server --gpus all \
  -p 127.0.0.1:9001:9001 \
  -v ~/.inference/cache:/tmp:rw \
  roboflow/roboflow-inference-server-gpu:latest

curl -o /dev/null -w '%{http_code}\n' http://127.0.0.1:9001/        # 200 (landing page shows /build link)
curl -o /dev/null -w '%{http_code}\n' http://127.0.0.1:9001/build    # 404

# add the undocumented flag:
#   -e ENABLE_BUILDER=true   ->   /build -> 200
Additional
  • #1075 reports the same pattern of drift (docs describe a notebook on 9002, the container behaves differently) and is still open.
  • NOTEBOOK_ENABLED, the other var --dev injects, is documented. A manual user comparing docs against container_adapter.py finds one documented flag and one undocumented.
Are you willing to submit a PR?
  • Yes I'd like to help by submitting a PR!

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review inference/core/env.py and inference_cli/lib/container_adapter.py to confirm ENABLE_BUILDER, BUILDER_ORIGIN, and the --dev behavior. Update the Docker configuration and full Environment Variables references, plus the CLI Development mode section, so the flags and /build behavior are documented. Done means manual users can find how to enable the builder and understand that --dev enables it.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, python
Domain
devops, documentation
Issue type
Documentation
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.