Conversation
4264d0e to
fef33f3
Compare
f30dce0 to
64b5f0b
Compare
41adb53 to
875042a
Compare
875042a to
f2b1e91
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit f2b1e91. Configure here.
| """Apply recipe setup in the router's separate container too.""" | ||
| if not config.setup_script: | ||
| return None | ||
| return f"bash {shlex.quote(str(Path('/configs') / config.setup_script))}" |
There was a problem hiding this comment.
Router setup misses patches fallback
Medium Severity
build_bash_preamble runs only /configs/<setup_script> and treats a missing file as a hard router-start failure. Workers, Dynamo, and the vLLM router also try /configs/patches/<setup_script> and continue with a warning when the script is absent. A recipe whose setup lives in the patches mount, or exists only in worker images, will launch workers and then fail when tilert-router starts.
Reviewed by Cursor Bugbot for commit f2b1e91. Configure here.
| raise ValueError("tilert-router requires a TileRT decode engine") | ||
| resources = config.resources | ||
| if resources.num_agg or resources.num_prefill != 1 or resources.num_decode < 1: | ||
| raise ValueError("TileRT router requires exactly one prefill worker and at least one decode worker") |
There was a problem hiding this comment.
DP prefill evades router validation
Low Severity
validate only checks resources.num_prefill == 1, but build_router_command rejects any collected worker list that is not exactly one prefill HTTP URL. vLLM per_node data parallel exposes one API per node-local pool (http_port > 0), so a single logical prefill worker on multiple nodes passes configuration loading and then fails when the router is built.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit f2b1e91. Configure here.


Adds the TileRT decode backend and native P/D router on top of #33.
The supported pairing is vLLM prefill + TileRT decode + TileRT router. TileRTRouterFrontend.validate enforces the engine pairing and topology during configuration loading, before Slurm submission. Other routers reject TileRT workers through their engine requirements; per-role engines with Dynamo are rejected in #33.
The vLLM image must contain TileRTConnector. Validation does not inspect installed connector versions or prove KV-layout compatibility. Supporting another prefill engine requires a compatible TileRT protocol integration and extending this frontend validation; the shared role dispatch remains engine-neutral.
Stack 2/2. Shared role orchestration is in #33.
Validation through the InferenceX ports:
Ports: shared integration #3551, MI355X #3552, B200 #3553.
Note
Medium Risk
Introduces a new mixed-engine launch path (vLLM + TileRT) with KV transport coupling that validation does not fully prove; benchmark metrics/env behavior changed for custom AIPerf jobs on logical workers.
Overview
Adds TileRT as a first-class decode engine and
tilert-routeras a static P/D frontend for disaggregated recipes where vLLM prefill hands off KV viaTileRTConnectorand TileRT decode runstilert.pd_vllm.decode_server. srtctl owns HTTP/control ports and router wiring (--vllm-url, combined--decodespecs); config validation enforces one prefill, ≥1 single-node decode workers, no multi-frontend nginx, and rejects incompatible engine/router pairings at load time.Documentation, schema docs, and B200/NIXL and MI355X/Mooncake example recipes ship with the integration. Custom-benchmark AIPerf metrics discovery now asks the frontend for
worker_metrics_portper process (TileRT exposes prefill only), while SRT_*_ENDPOINTS still lists all routable workers; vLLM-router multi-node DP metrics behavior is covered by a regression test.Reviewed by Cursor Bugbot for commit b421420. Bugbot is set up for automated code reviews on this repo. Configure here.