Parser Configuration
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.
The choices
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:
The pairing rule
- The
--dyn-*parser flags pair with thedynamochat processor and go on the worker:--dyn-tool-call-parser,--dyn-reasoning-parser. - The bare
--tool-call-parser/--reasoning-parserflags pair withvllm/sglangand normally go on the frontend.
For guided decoding and structured outputs, the engine itself needs to be
aware of which tokens are reasoning or not so that it can only start enforcing the
grammar after reasoning is complete. For example, the model should be able to
reason freely before it needs to start outputting structured JSON content to the user.
Similarly, for reasoning/thinking related settings like a thinking token budget, the engine
needs to be aware of when reasoning is done independent of the frontend parsing the
reasoning tokens. Therefore, both the --reasoning-parser (engine reasoning awareness)
and the --dyn-reasoning-parser (frontend response parsing) flags should be set when using
--dyn-chat-processor dynamo (default).
Native and Dynamo tool-call parsers remain mutually exclusive.
What does NOT make sense
Examples
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:
Parser names and per-stage details
- Tool calling: Tool Call Parsing (Dynamo) (native parser names).
- Reasoning: Reasoning Parsing (Dynamo) (native parser names).
- Engine fallback (vLLM / SGLang): Parser Engine Fallback.
- Engine processors: vLLM Chat Processor and SGLang Chat Processor.
- Every frontend flag: Frontend Configuration Reference.