{"slug": "show-hn-compile-time-model-id-validation-with-declared-capability", "title": "Show HN: Compile-time model-id validation with declared capability", "summary": "A new Rust crate, `openrouter_toolkit`, introduces a compile-time macro `model_supports!` that validates OpenRouter model IDs and their declared capabilities against a vendored index. The macro catches unknown or unsupported capabilities—such as `param::toolz` or `input::image` on incompatible models—as compiler errors, preventing runtime failures. This tool enables developers to enforce model capability requirements at build time, reducing debugging time and ensuring only valid model configurations are deployed.", "body_md": "Compile-time checked OpenRouter model ids.\n\n`model_supports!`\n\nvalidates a model id and its required capabilities against a vendored OpenRouter index, then expands to the model id string.\n\n``` js\nuse openrouter_toolkit::model_supports;\n\nconst MODEL: &str = model_supports!(\n    \"openai/gpt-5.4\",\n    param::tools,\n    input::image,\n    output::text,\n);\n```\n\nDynamic variants work too:\n\n``` js\nconst MODEL: &str = model_supports!(\"moonshotai/kimi-k2-0905:exacto\", param::tools);\n```\n\n`param::*`\n\n— request parameters (e.g.`param::tools`\n\n)`input::*`\n\n— input modalities (e.g.`input::image`\n\n)`output::*`\n\n— output modalities (e.g.`output::text`\n\n)\n\nUnknown capability:\n\n``` js\nconst MODEL: &str = model_supports!(\"qwen/qwen3.7-max\", param::toolz);\nerror: unknown OpenRouter capability `param::toolz`; did you mean `param::tools`?\n```\n\nCapability not supported by the model:\n\n``` js\nconst MODEL: &str = model_supports!(\"qwen/qwen3.7-max\", input::image);\nerror: OpenRouter model `qwen/qwen3.7-max` does not support required capability(s): input::image\n```\n\n", "url": "https://wpnews.pro/news/show-hn-compile-time-model-id-validation-with-declared-capability", "canonical_source": "https://github.com/yujonglee/openrouter-toolkit", "published_at": "2026-05-26 14:20:07+00:00", "updated_at": "2026-05-26 14:39:06.701536+00:00", "lang": "en", "topics": ["large-language-models", "ai-tools", "ai-infrastructure", "ai-products", "mlops"], "entities": ["OpenRouter", "openrouter_toolkit", "GPT-5.4", "Kimi K2", "Qwen"], "alternates": {"html": "https://wpnews.pro/news/show-hn-compile-time-model-id-validation-with-declared-capability", "markdown": "https://wpnews.pro/news/show-hn-compile-time-model-id-validation-with-declared-capability.md", "text": "https://wpnews.pro/news/show-hn-compile-time-model-id-validation-with-declared-capability.txt", "jsonld": "https://wpnews.pro/news/show-hn-compile-time-model-id-validation-with-declared-capability.jsonld"}}