Parser Configuration
How —dyn-chat-processor, —dyn-tool-call-parser, and —dyn-reasoning-parser fit together
How —dyn-chat-processor, —dyn-tool-call-parser, and —dyn-reasoning-parser fit together
Dynamo turns a model’s raw tool-call and reasoning markup into structured tool_calls and reasoning_content. Two independent choices control how that parsing happens. This page is the single source of truth for which flags combine and which combinations don’t make sense. For the parser names themselves, follow the per-stage links at the bottom.
1. Who parses — --dyn-chat-processor (a frontend flag; default dynamo):
dynamo (default) — Dynamo’s framework-agnostic Rust parser. Works on every backend (vLLM, SGLang, TRT-LLM) and with disaggregated serving.vllm / sglang — delegate parsing to that engine’s own Python parser (“engine fallback”). Use only when Dynamo does not ship a parser for your model.2. Which parser — the flag name and where it goes depend on choice 1:
--dyn-* parser flags pair with the dynamo chat processor and go on the worker: --dyn-tool-call-parser, --dyn-reasoning-parser.--tool-call-parser / --reasoning-parser flags pair with vllm / sglang and go on the frontend.Tool calling and reasoning are independent — set one, the other, or both — but always from the same family as your chat processor. You never mix the two families.
Default (Dynamo-native) — the common case. The same --dyn-* flags work on every backend; pick one worker. The chat processor defaults to dynamo, so the frontend flag is optional:
Engine fallback — only when Dynamo lacks a parser for your model. Supported on vLLM and SGLang (not TRT-LLM); the parser flags go on the frontend and use the engine’s own parser names: