Why this matters (consumer: convertible)
convertible v0.15.0 shipped subagent delegation: a drive can delegate a scoped sub-task to a nested child drive on a different model, via a subagent loop tool. The per-subagent model switch goes through the OpenAI surface — the child inherits the parent's base_url and overrides only the model name (convertible/subagents.py → run_subagent → dataclasses.replace(parent_config, model=...)). So a true cross-model delegation (parent on mmangkad/Qwen3.6-27B-NVFP4 → subagent on mmangkad/Qwen3.6-35B-A3B-NVFP4) needs both models answering at one OpenAI-compatible base_url, routed by the request's model field.
model-gear's gateway is precisely that. From model_gear/gateway/__init__.py:
"model-gear gateway — a stdlib OpenAI-compatible reverse proxy for the fleet. Fronts two always-warm vLLM backends on one port, routes each request by its model field, defaults unknown/missing names to the primary, and fails over to the other backend when the chosen one is down. Runs as the gateway container in a model init --fleet deployment (python -m model_gear.gateway)."
And docs/qwen3.6-35b-a3b-nvfp4.md directs operators to run model fleet up → model assess / model benchmark.
The gap (observed on the spark box, 2026-05-30)
The fleet is documented but not reachable from the installed CLI, and not deployed:
- No CLI surface for it.
model -h subcommands are: switch, serve, start, stop, status, assess, benchmark, init, whoami, learn, explain, overview, doctor, cli — there is no fleet command. model init -h offers only --force/--apply/--json — no --fleet. Yet gateway/__init__.py references model init --fleet and docs/qwen3.6-35b-a3b-nvfp4.md references model fleet up. Docs + code reference a path the shipped CLI does not expose.
- Single-model deployment running.
~/.model-gear/docker-compose.yml + .env are the single-model template (VLLM_MODEL=mmangkad/Qwen3.6-27B-NVFP4, VLLM_PORT=8001). docker ps shows only model-gear-vllm (27B, :8001) — no gateway / vllm-fallback container, and no python -m model_gear.gateway host process.
- Fallback model absent.
mmangkad/Qwen3.6-35B-A3B-NVFP4 is not in the HF cache (~/.cache/huggingface/hub holds the 27B + nvidia/Qwen3-32B-NVFP4, not the 35B-A3B). Its own doc says: "Status: configured, not yet load-tested on this hardware."
So there is currently no supported way to get the 27B and 35B answering at one endpoint.
Ask
Expose the fleet path in the shipped CLI — model fleet up (or model init --fleet + model serve --fleet) — that:
- Scaffolds the two-backend + gateway compose (primary + fallback vLLM, gateway on one host port) into the deployment dir.
- Pulls the fallback weights if absent and starts all three services.
- Reports the gateway base_url + the two served-model names.
so a client can address http://<host>:<gateway-port>/v1 with model: mmangkad/Qwen3.6-27B-NVFP4 or model: mmangkad/Qwen3.6-35B-A3B-NVFP4 and have the gateway route by name.
Acceptance criteria
- A single
model fleet up (final verb name TBD) brings up two vLLM backends + the gateway from ~/.model-gear, idempotently.
curl http://<host>:<gateway-port>/v1/models lists both served names.
- A chat/completions request with
model: <27B> and one with model: <35B> each return from the correct backend (with the documented fail-over when one is down).
model status reports the fleet topology (both backends + gateway health), not just a single container.
model -h / model init -h and docs/gateway-fleet.md agree with the shipped surface — no dangling references to a verb that doesn't exist.
Context
Filed while validating convertible's subagent delegation live against mmangkad/Qwen3.6-27B-NVFP4 on :8001. The same-model case (27B → 27B) already works end to end; the cross-model case (27B → 35B) is blocked only on having both models behind one endpoint, which the fleet gateway provides.
Why this matters (consumer: convertible)
convertible v0.15.0 shipped subagent delegation: a drive can delegate a scoped sub-task to a nested child drive on a different model, via a
subagentloop tool. The per-subagent model switch goes through the OpenAI surface — the child inherits the parent'sbase_urland overrides only themodelname (convertible/subagents.py→run_subagent→dataclasses.replace(parent_config, model=...)). So a true cross-model delegation (parent onmmangkad/Qwen3.6-27B-NVFP4→ subagent onmmangkad/Qwen3.6-35B-A3B-NVFP4) needs both models answering at one OpenAI-compatible base_url, routed by the request'smodelfield.model-gear's gateway is precisely that. From
model_gear/gateway/__init__.py:And
docs/qwen3.6-35b-a3b-nvfp4.mddirects operators to runmodel fleet up→model assess/model benchmark.The gap (observed on the
sparkbox, 2026-05-30)The fleet is documented but not reachable from the installed CLI, and not deployed:
model -hsubcommands are:switch, serve, start, stop, status, assess, benchmark, init, whoami, learn, explain, overview, doctor, cli— there is nofleetcommand.model init -hoffers only--force/--apply/--json— no--fleet. Yetgateway/__init__.pyreferencesmodel init --fleetanddocs/qwen3.6-35b-a3b-nvfp4.mdreferencesmodel fleet up. Docs + code reference a path the shipped CLI does not expose.~/.model-gear/docker-compose.yml+.envare the single-model template (VLLM_MODEL=mmangkad/Qwen3.6-27B-NVFP4,VLLM_PORT=8001).docker psshows onlymodel-gear-vllm(27B, :8001) — nogateway/vllm-fallbackcontainer, and nopython -m model_gear.gatewayhost process.mmangkad/Qwen3.6-35B-A3B-NVFP4is not in the HF cache (~/.cache/huggingface/hubholds the 27B +nvidia/Qwen3-32B-NVFP4, not the 35B-A3B). Its own doc says: "Status: configured, not yet load-tested on this hardware."So there is currently no supported way to get the 27B and 35B answering at one endpoint.
Ask
Expose the fleet path in the shipped CLI —
model fleet up(ormodel init --fleet+model serve --fleet) — that:so a client can address
http://<host>:<gateway-port>/v1withmodel: mmangkad/Qwen3.6-27B-NVFP4ormodel: mmangkad/Qwen3.6-35B-A3B-NVFP4and have the gateway route by name.Acceptance criteria
model fleet up(final verb name TBD) brings up two vLLM backends + the gateway from~/.model-gear, idempotently.curl http://<host>:<gateway-port>/v1/modelslists both served names.model: <27B>and one withmodel: <35B>each return from the correct backend (with the documented fail-over when one is down).model statusreports the fleet topology (both backends + gateway health), not just a single container.model -h/model init -handdocs/gateway-fleet.mdagree with the shipped surface — no dangling references to a verb that doesn't exist.Context
Filed while validating convertible's subagent delegation live against
mmangkad/Qwen3.6-27B-NVFP4on :8001. The same-model case (27B → 27B) already works end to end; the cross-model case (27B → 35B) is blocked only on having both models behind one endpoint, which the fleet gateway provides.