LoRA adapter for Qwen/Qwen3.5-9B, trained on CaptchaKraken's synthetic puzzle
generators. First CaptchaKraken model with animated ("video") challenge
support, and the first trained against prompt generation 2.
Training run 20260812-005302. Verdict: ready-to-deploy — passed all three
gates uncapped.
Requires captchakraken >= 2.5.0
This adapter answers generation-2 prompts. Every previously published
CaptchaKraken model is generation 1, and sending this model a generation-1
prompt does not error — it silently degrades on every puzzle.
Client releases before 2.5.0 hardcode generation-1 prompt text and have no way
to know otherwise, so do not point an older client at these weights. From
2.5.0 the client ships a model registry that maps this repo to generation 2 and
serves the matching templates automatically; prompts.json here carries the
exact text the weights were trained on, for anyone building their own client.
Serve the adapter on top of the base model and disable thinking, or the
reasoning parser routes the answer into reasoning and leaves content empty:
chat_template_kwargs = {"enable_thinking": false}
Coordinates are on a normalized 0–1000 scale (top-left (0,0), bottom-right
(1000,1000)). Send the template matching the detected puzzle type as the text
part of the user turn, image first. Animated puzzles are sent as one multi-image
prompt of keyframes; the answer names the keyframe it acted on. See
prompts.json → selection_rule.
Pixel budget matters as much as the prompt: this adapter was trained with
MIN_PIXELS=200704 (448²) and MAX_PIXELS=518400 (720²). Qwen clamps each
image's area into that band, so serving it under a different one shows the model
a puzzle at a scale it never learned to read.
Training
Base
Qwen/Qwen3.5-9B
Method
LoRA, r=64, alpha=128, dropout 0.05
Targets
language model + visual tower (merger excluded)
Epochs
3
LR
1e-4
Batch / grad accum
1 / 8
Max pixels
518,400
Train entries
58,500 (1,548 val)
Data
synthetic generator output only
Real captured puzzles are deliberately excluded from training and kept for
evaluation — that separation is what reveals when a generator stops matching the
real puzzle.
Evaluation
All three gates run against this adapter, prompt-pinned to generation 2.
Tier
What it measures
Result
1
Hermetic pytest + prompt parity
pass
2
Graded solve rate vs. real, held-out static captchas
Driving live HTML fixtures to completion, both ports
pass
Tier 2 is a graded score over real captures the model never trained on, not a
pass/fail solve rate; treat it as a regression signal, not a marketing number.
License
CaptchaKraken Source-Available License v1.1 — see LICENSE.
You may use this commercially inside a product that delivers value beyond
captcha solving itself: scrapers, data pipelines, your own browser automation,
QA and accessibility tooling. Running it alongside a stealth or antidetect
browser to automate your own work is explicitly permitted (§2(c)).
You may not, without a separate commercial agreement:
sell, resell, or offer for a fee any captcha-solving service or API whose
primary value is solving captchas (§3(a));
distribute thin wrappers whose primary purpose is captcha solving (§3(b));
proxy or relay this model's outputs through a paid or public API as a
captcha-solving service (§3(c));
ship it as a built-in captcha feature of a stealth / antidetect browser,
profile manager, or automation platform you distribute to third parties
(§3(d)) — note this restricts shipping it to others, not using it.
In short: you may build with this, but you may not sell the solve.