CaptchaKraken Twilight (FP8)
A standalone captcha-solving model: the
CaptchaKrakenV1_Lora
adapter merged into
Qwen/Qwen3.5-9B and quantized to
FP8-dynamic. One
download, no adapter to wire up.
Twilight is the stronger of two hardware tiers, and matches the accuracy of
serving the base with the adapter attached at runtime.
Sunlight
is the same adapter and base at AWQ 4-bit, ~5 GB smaller and ~4 points weaker.
- Weights: ~14.0 GB · Min VRAM: ~22 GB
- Base revision:
c202236235762e1c871ad0ccb60c8ee5ba337b9a
- Quantized: language-model linears at FP8 (channel-wise weights, per-token
dynamic activations). The vision tower, the linear-attention projections and the
multi-token-prediction head stay bf16 — the same configuration as the
FP8-dynamic base this project serves in production, so numerics match what the
hosted API runs. FP8-dynamic needs no calibration data.
- Solves: reCAPTCHA and hCaptcha grids, plus hCaptcha drag / click / path /
fit puzzles.
Serving (vLLM)
1vllm serve CaptchaKraken/Twilight-FP8 \
2 --max-model-len 8192 --gpu-memory-utilization 0.85 --trust-remote-code --port 8000
No --enable-lora and no adapter flags — the adapter is already merged in.
Prompts — read this before integrating
This model only performs as measured when it is sent the prompts it was trained
on. prompts.json in this repo carries them, along with the puzzle-type →
template mapping and a prompt_version. Resolve prompts from that file rather
than hardcoding a copy: a mismatched prompt does not error, it silently
collapses accuracy.
Two integration requirements:
- Disable thinking. Send
chat_template_kwargs: {"enable_thinking": false}.
With thinking on and a qwen3 reasoning parser, the answer is routed into
reasoning and content comes back empty.
- Coordinates are normalized 0–1000, top-left
(0,0), bottom-right
(1000,1000) — not pixels.
Evaluation
Scored with the project's soft-tolerance grader on 156 human-labelled held-out
captchas, through an OpenAI-compatible vLLM endpoint. Samples promoted into the
labelled-train pool are excluded, so nothing here was trained on. Grid puzzles are
exact tile-set match with per-error decay; click/drag receive partial credit by
normalized distance — so these are graded scores, not "percent solved".
| model | score |
|---|
| Twilight (FP8) | 66.87% |
production captcha (FP8 base + LoRA at serve time) | 66.30% |
| Sunlight (AWQ 4-bit) | 62.72% |
Merging costs nothing: Twilight matches the served base+adapter setup within
noise. The 4-bit gap concentrates in coordinate-precision puzzles (drag, path)
rather than tile selection, where the two are identical.
License
CaptchaKraken Source-Available License v1.0 — see
LICENSE.
Use it, modify it, build commercially on it where captcha solving is an internal
component of a product that delivers value beyond the solve — scrapers,
anti-detection browsers, automation frameworks, QA and accessibility tooling.
You may not sell the solve: no reselling or offering for a fee a captcha
solving service or API whose primary value is solving captchas, no thin wrappers
exposing this model's solving capability, and no relaying its outputs through a
paid or public captcha-solving API. Those require a separate written commercial
agreement.
Copyright (c) 2026 CaptchaKraken LLC. All rights reserved.