diff --git a/c/family_registry.py b/c/family_registry.py index e00d72897..9093f44bf 100644 --- a/c/family_registry.py +++ b/c/family_registry.py @@ -1562,7 +1562,7 @@ def _qwen38_resident_inventory(name, size, _config, dtype=None): limits=FamilyLimits(8192, 1048576, 1024, 16384, 1, 16, "CTX"), # tools (the XML call form, parse_mimo_tool_calls), thinking (on by default, # as the template has it); no grammars, no audio in or out - capabilities=FamilyCapabilities(True, False, False, True), + capabilities=FamilyCapabilities(True, False, False, True, image=True), has_gateway_adapter=True, # the engine is driven through the gateway (SERVE); coli run has no mimo # branch and would fall through to GLM's binary, as for deepseek_v41 diff --git a/c/mimo.c b/c/mimo.c index 10d569e8b..cd6e6ba7c 100644 --- a/c/mimo.c +++ b/c/mimo.c @@ -1144,7 +1144,8 @@ static void serve_loop(Model *m, Tok *tokenizer, const char *dir) { coli_serve_stdio_init(); int eos[8]; int n_eos = coli_load_stop_ids(dir, eos, 8, NULL); - coli_serve_write_ready(stdout, rss_gb()); + /* CAPS: the gateway offers pictures only when the tower actually loaded */ + coli_serve_write_ready_caps(stdout, rss_gb(), g_vision ? "vision=1" : "vision=0"); serve_emap(m); float *logits = xmalloc((size_t)c->vocab * sizeof(float), "logits"); int *ids = xmalloc(((size_t)m->ctx + 1) * sizeof(int), "prompt ids"); diff --git a/c/tests/test_family_registry.py b/c/tests/test_family_registry.py index 23b114748..49b7a5def 100644 --- a/c/tests/test_family_registry.py +++ b/c/tests/test_family_registry.py @@ -128,7 +128,7 @@ def test_capabilities_carry_the_image_bit_for_families_with_an_image_path(self): # vision_config and no model.visual.* tensors. by_id, _ = _build_registry(FAMILIES) for family_id, expected in (("glm53", True), ("qwen38", True), ("qwen36", True), - ("deepseek_v41", True), ("glm", False), ("kimi", False), + ("deepseek_v41", True), ("mimo", True), ("glm", False), ("kimi", False), ("inkling", False), ("olmoe", False), ("deepseek_v4", False), ("qwen_image", False)): with self.subTest(family=family_id):