Constrained decoding for LLMs. Edit a JSON Schema, then watch stencil compile it to a state machine and generate valid JSON token by token — the chips show exactly which characters are allowed at each step. The real Python library runs in your browser via Pyodide; no install, no keys.
At every step, a character is allowed only if it keeps the output on a path the DFA can still accept — so invalid JSON is never reachable. The highlighted chip is the one chosen this step. Below, five more constrained samples (all valid) and, for contrast, what the same vocabulary produces without the mask. Python fetched verbatim from src/stencil.