Instructions to use CaptchaKraken/CaptchaKraken-v1.2-GGUF with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use CaptchaKraken/CaptchaKraken-v1.2-GGUF with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M # Run inference directly in the terminal: llama cli -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
Use pre-built binary
# Download pre-built binary from: # https://github.com/ggerganov/llama.cpp/releases # Start a local OpenAI-compatible server with a web UI: ./llama-server -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M # Run inference directly in the terminal: ./llama-cli -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
Build from source code
git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-server llama-cli # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama-server -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M # Run inference directly in the terminal: ./build/bin/llama-cli -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
Use Docker
docker model run hf.co/CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
- LM Studio
- Jan
- vLLM
How to use CaptchaKraken/CaptchaKraken-v1.2-GGUF with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "CaptchaKraken/CaptchaKraken-v1.2-GGUF" # 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/CaptchaKraken-v1.2-GGUF", "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/CaptchaKraken-v1.2-GGUF:Q4_K_M
- Ollama
How to use CaptchaKraken/CaptchaKraken-v1.2-GGUF with Ollama:
ollama run hf.co/CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
- Unsloth Desktop
- Pi
How to use CaptchaKraken/CaptchaKraken-v1.2-GGUF with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
Configure the model in Pi
# Install Pi: npm install -g @earendil-works/pi-coding-agent # Add to ~/.pi/agent/models.json: { "providers": { "llama-cpp": { "baseUrl": "http://localhost:8080/v1", "api": "openai-completions", "apiKey": "none", "models": [ { "id": "CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use CaptchaKraken/CaptchaKraken-v1.2-GGUF with Docker Model Runner:
docker model run hf.co/CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
- Lemonade
How to use CaptchaKraken/CaptchaKraken-v1.2-GGUF with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
Run and chat with the model
lemonade run user.CaptchaKraken-v1.2-GGUF-Q4_K_M
List all available models
lemonade list
- Hermes Agent
How to use CaptchaKraken/CaptchaKraken-v1.2-GGUF with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
Configure Hermes
# Install Hermes: curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash hermes setup # Point Hermes at the local server: hermes config set model.provider custom hermes config set model.base_url http://127.0.0.1:8080/v1 hermes config set model.default CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use CaptchaKraken/CaptchaKraken-v1.2-GGUF with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
Configure OpenClaw
# Install OpenClaw: npm install -g openclaw@latest # Register the local server and set it as the default model: openclaw onboard --non-interactive --mode local \ --auth-choice custom-api-key \ --custom-base-url http://127.0.0.1:8080/v1 \ --custom-model-id "CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M" \ --custom-provider-id llama-cpp \ --custom-compatibility openai \ --custom-text-input \ --accept-risk \ --skip-health
Run OpenClaw
openclaw agent --local --agent main --message "Hello from Hugging Face"
CaptchaKraken v1.2 (GGUF)
A standalone captcha-solving model for Ollama and llama.cpp: the
CaptchaKraken-Lora-v1.2
adapter merged into Qwen/Qwen3.5-9B and converted to GGUF. No vLLM, no
adapter to wire up, and it runs on CPU if you have no GPU.
Same weights as Sunlight and Twilight — a different container, and a different set of quantisations.
Files
| File | Precision | Size | Comparable to |
|---|---|---|---|
CaptchaKraken-v1.2-Q4_K_M.gguf |
4-bit | 5.6 GB | Sunlight |
CaptchaKraken-v1.2-Q8_0.gguf |
8-bit | 9.5 GB | Twilight |
CaptchaKraken-v1.2-F16.gguf |
full | 17.9 GB | the unquantised merge |
mmproj-F16.gguf |
full | 918 MB | required by all three |
The projector is not optional
mmproj-F16.gguf is the vision half of the model — the part that reads the
puzzle. A runtime given only the weights loads a text-only model, and it does
not error: it answers every puzzle without having seen the image. Ollama
picks the projector up automatically from this repo; if you import by hand, name
it in the Modelfile.
ollama show <name> lists vision under Capabilities when it was picked up.
It stays full precision in every build on purpose. Only the language-model weights are quantised — the task is reading a small picture accurately, and quantising the half that does the reading costs far more than it saves.
Quickstart — Ollama
OLLAMA_CONTEXT_LENGTH=16384 ollama serve
ollama run hf.co/CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
Swap the tag for :Q8_0 or :F16.
⚠️ Raise the context length. Ollama defaults to 4k tokens on cards under 24 GB. An animated challenge arrives as several stills in one request and does not fit in 4k — the symptom is that still puzzles work and animated ones fail. 16k is enough.
Quickstart — llama.cpp
llama-server -m CaptchaKraken-v1.2-Q8_0.gguf --mmproj mmproj-F16.gguf \
-ngl 99 -c 16384 --port 8000
Use it with the client
pip install "captchakraken>=2.5.0" # or: npm install captchakraken@^2.5.0
export VLLM_BASE_URL=http://localhost:11434/v1 # 8000 for llama-server
export CAPTCHA_KRAKEN_API_KEY=ollama
export CAPTCHA_LORA_NAME=hf.co/CaptchaKraken/CaptchaKraken-v1.2-GGUF:Q4_K_M
export CAPTCHA_LORA_ADAPTER=CaptchaKraken/CaptchaKraken-v1.2-GGUF
Both names matter, and they are different things. CAPTCHA_LORA_NAME is
what goes on the wire, so it must match what ollama list shows.
CAPTCHA_LORA_ADAPTER is what the client looks up to decide which prompts to
send and what resolution to send the image at — both are properties of these
weights, and neither can be read off an Ollama model name.
Three things to get right, or it scores far below what it can
- Send the prompts it was trained on.
prompts.jsonin this repo carries them plus the puzzle-type → template mapping. A mismatched prompt does not error, it collapses accuracy. - Leave thinking off. These builds already default to it, because the
weights were trained that way — you do not need to send anything. It matters
because with thinking on the answer goes to
reasoningandcontentcomes back empty, on every puzzle, with no error. If you convert your own GGUF from the safetensors builds, the upstream template defaults thinking on: sendreasoning_effort: "none"on Ollama, orchat_template_kwargs: {"enable_thinking": false}elsewhere. - Send images at a flat 720² pixel budget. That is the area the model was
measured best at, and it decides how many visual tokens it reads a puzzle
from. The shipped client does this for you when
CAPTCHA_LORA_ADAPTERis set.
Coordinates come back normalized 0–1000, top-left (0,0), bottom-right
(1000,1000) — not pixels. Grid screenshots must be sent with cell numbers
drawn on them; the model reads those labels and was never trained to invent a
numbering. The shipped client does all of this for you.
What v1.2 covers
44 puzzle types across 10 vendors, and it is the first generation to handle animated challenges and typed text captchas at all.
| v1.1 | v1.2 | |
|---|---|---|
| Vendors | 2 | 10 — adds GeeTest, Yidun, BotDetect, MTCaptcha, Yandex, Tencent, Lemin, Prosopo |
| Animated / video challenges | ✗ | ✓ |
| Typed text captchas | ✗ | ✓ |
| Prompt generation | 1 | 2 |
Evaluation
Scored with the project's soft-tolerance grader on the full 1458-sample held-out real eval — every hand-labelled real capture we hold, none of it 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".
| Vendor | Puzzle types | Held-out samples | Score |
|---|---|---|---|
| reCAPTCHA | 2 | 629 | 0.600 |
| GeeTest | 7 | 172 | 0.780 |
| NetEase Yidun | 3 | 37 | 0.775 |
| BotDetect | 1 | 28 | 0.929 |
| Tencent | 1 | 11 | 0.829 |
| Prosopo | 1 | 11 | 0.727 |
| Yandex | 1 | 11 | 0.364 |
| Lemin | 1 | 10 | 0.874 |
| MTCaptcha | 1 | 10 | 0.900 |
| All 10 vendors | 44 | 1458 | 0.6155 |
Those figures are the unquantised adapter's, and the GGUF builds do not match them. Driven through the shipped solver over the same held-out captures, the GGUF builds land about 5 points below the same weights served with vLLM. The loss is concentrated in grid and path puzzles — the ones that turn on reading a small label or a precise coordinate — while drag and animated families are unchanged or slightly better.
Q4_K_M costs almost nothing over Q8_0 — under a point separates them, far less than the 4 GB. Take Q4_K_M unless you have the memory to spare.
The gap is the format, not the bit width: 4-bit and 8-bit land within a point of each other while both sit ~5 points under vLLM, and serving at a smaller pixel budget does not recover it. If you want the strongest open weights and you can run vLLM, take Twilight or the adapter instead.
License
CaptchaKraken Source-Available License v1.1 — 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
- 2,858
4-bit
8-bit
16-bit