Real SDK recordings · no install or account
One prompt.
Two paths through language.
Generate a paragraph. Change a few words.
Explore what happens
to its keyed signal.
Real measurements · on your computer
Choose a place to start.
Choose a real run. Read both versions. Take it apart.
See what changes.
Connecting to your modelChange prompt or response limitIn 60 words, explain how a seed becomes a tree to a curious adult.
Plain prose only. Phrases must appear in your source. Literal checks can catch changed details; they cannot check meaning.
Two independent samples from the same model and prompt. One ordinary, one marked.
Loading the session. The prefilled example runs once when ready.
With Keyprint
Keyed samplingThe text, one choice at a time.
Actual generation traceEach piece below is a token the model actually selected. Follow how they form the response.
Inspect this token
Offsets count Unicode characters. A token can hold part of a character; its exact bytes stay visible until another token completes it.
These are committed choices, not alternative probabilities or labels of which words are watermarked. Playback timing is illustrative; generation timing is reported above.
Make it your own. Follow the signal.
Your text is sent only to this local SDK process.
A pattern, measured.
One-bit fractionWaiting for measurements
Measured prefixes will appear here.
Uncalibrated diagnostic. No detection verdict.
What the lines can tell you.
The key influences choices during generation. Inspection replays the visible text and counts the resulting keyed bits. The chart shows the fraction of those bits equal to one, measured again at each text prefix.
The dotted 50% line is a visual reference, not a detection threshold. The other key is a control. Higher values are not confidence percentages. Editing can strengthen, weaken, or leave the diagnostic unchanged.
The pair uses independent samples. Wording differences alone do not establish a quality effect. Prefixes can tokenize differently; no individual word is labeled “watermarked.” A weak or unavailable signal does not prove human authorship.
Inspect the measurement report
Run an experiment to see its report.
Build your own experiment
Install this recipe’s backend extra from your cloned Keyprint checkout:
python -m pip install '.[mlx]'
Generate, compare, export. The same SDK produces this view and the live local playground. Recorded playback needs no model. New prompts and edits run in your local model.
from keyprint import Keyprint
with Keyprint.from_mlx("path/to/qwen3-8b-4bit", key=Keyprint.new_key()) as wm:
pair = wm.compare("Explain how a seed becomes a tree.")
print(pair.marked)
pair.export("my-demo")
Local playground · source checkout · Python 3.12–3.13
python -m pip install '.[playground]' keyprint playground --download
Install instructions: Keyprint quickstart.
These relative commands run from a cloned repository, not PyPI. Downloads are explicit: the platform default is
Qwen/MLX on Apple silicon (about 4.62 GB), or SmolLM2/Transformers elsewhere
(about 270 MB). Reuse local weights with --model PATH.
CPU alternatives and supported models are documented in the README.
No hosted GPT or Claude call. No automatic rewriting or translation of existing text.