Instructions to use CaptchaKraken/Twilight-FP8 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use CaptchaKraken/Twilight-FP8 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="CaptchaKraken/Twilight-FP8") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("CaptchaKraken/Twilight-FP8") model = AutoModelForMultimodalLM.from_pretrained("CaptchaKraken/Twilight-FP8", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use CaptchaKraken/Twilight-FP8 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "CaptchaKraken/Twilight-FP8" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "CaptchaKraken/Twilight-FP8", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/CaptchaKraken/Twilight-FP8
- SGLang
How to use CaptchaKraken/Twilight-FP8 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "CaptchaKraken/Twilight-FP8" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "CaptchaKraken/Twilight-FP8", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "CaptchaKraken/Twilight-FP8" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "CaptchaKraken/Twilight-FP8", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use CaptchaKraken/Twilight-FP8 with Docker Model Runner:
docker model run hf.co/CaptchaKraken/Twilight-FP8
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)
vllm serve CaptchaKraken/Twilight-FP8 \
--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 intoreasoningandcontentcomes 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.
- Downloads last month
- 11