Instructions to use gaidar12345/crab-1 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 gaidar12345/crab-1 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 gaidar12345/crab-1:F16 # Run inference directly in the terminal: llama cli -hf gaidar12345/crab-1:F16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf gaidar12345/crab-1:F16 # Run inference directly in the terminal: llama cli -hf gaidar12345/crab-1:F16
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 gaidar12345/crab-1:F16 # Run inference directly in the terminal: ./llama-cli -hf gaidar12345/crab-1:F16
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 gaidar12345/crab-1:F16 # Run inference directly in the terminal: ./build/bin/llama-cli -hf gaidar12345/crab-1:F16
Use Docker
docker model run hf.co/gaidar12345/crab-1:F16
- LM Studio
- Jan
- vLLM
How to use gaidar12345/crab-1 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "gaidar12345/crab-1" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "gaidar12345/crab-1", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/gaidar12345/crab-1:F16
- Ollama
How to use gaidar12345/crab-1 with Ollama:
ollama run hf.co/gaidar12345/crab-1:F16
- Unsloth Desktop
- Pi
How to use gaidar12345/crab-1 with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf gaidar12345/crab-1:F16
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": "gaidar12345/crab-1:F16" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use gaidar12345/crab-1 with Docker Model Runner:
docker model run hf.co/gaidar12345/crab-1:F16
- Lemonade
How to use gaidar12345/crab-1 with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull gaidar12345/crab-1:F16
Run and chat with the model
lemonade run user.crab-1-F16
List all available models
lemonade list
- Hermes Agent
How to use gaidar12345/crab-1 with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf gaidar12345/crab-1:F16
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 gaidar12345/crab-1:F16
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use gaidar12345/crab-1 with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf gaidar12345/crab-1:F16
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 "gaidar12345/crab-1:F16" \ --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"
Crab-1 — a 1.7B OSINT agent you can actually test
Crab-1 is a Qwen3-1.7B fine-tuned (QLoRA SFT) to build a factual profile of a
French company from its name alone — official website, administrative
department, sector — using three tools: the official French company registry,
web search, and page extraction. It runs locally on a consumer GPU, costs
nothing per profile, and finishes in 4 tool-calling turns (9 s/profile on an
RTX 3060 Ti).
Everything needed to verify the published claims is public: the evaluation harness, the 30-company ground-truth set, and the scoring function live in the GitHub repository. The ground-truth set is also published as a dataset: gaidar12345/crab-1-benchmark. The training-data factory (teacher generation, trajectory filtering, dataset build) is deliberately not published.
Files
| File | Description |
|---|---|
crab1-v7.f16.gguf |
GGUF F16 weights (3.4 GB) — for Ollama/llama.cpp |
lora-adapter/ |
PEFT LoRA adapter (67 MB) — for transformers |
LICENSE |
Apache-2.0 (derivative of Qwen3-1.7B) |
Published numbers — with dates, because they matter
| Model (same harness, n=30, 8-turn cap) | 2026-07-22 | 2026-08-30 |
|---|---|---|
| Crab-1 (this model) | 76.7 % | 66.7 % |
| Claude Haiku 4.5 | — | 66.7 % |
| Claude Opus 4.5 | — | 56.7 % |
| Claude Sonnet 4.5 | — | 53.3 % |
| Qwen3-1.7B untrained | 56.7 % | 70.0 % |
| Llama 3.1 8B, plain prompting | 0 % | — |
Pass rate = reward ≥ 0.7 (TLD-strict website match + department-level
location, dynamic denominator — see harness/reward.py in the GitHub repo).
⚠️ This benchmark is perishable. The tools hit the live web. The same weights scored 76.7 % in July and 66.7 % in late August — nothing changed but the search results. The untrained baseline moved even more (56.7 % → 70.0 %). Two consequences:
- Only compare models measured the same day.
- Your numbers will differ from ours. Expect the ballpark, not the digit.
What stays stable across dates: Crab-1 always submits a profile within the turn budget (100 % submit rate vs 60–80 % for the frontier models, which tend to keep verifying past the 8-turn cap), and it's 2–4× faster end-to-end. Fine-tuning didn't buy intelligence — it bought protocol discipline: stop on time, fill the exact schema. For a fleet of cheap local crawlers, that's the property that matters.
Out-of-distribution check (2026-09-01, 20 known companies)
Because the 30-company benchmark is all startup-style companies, we also ran
20 well-known French companies the model never saw in any form — CAC40 groups,
regional SMEs, tricky brand names (Michelin, Airbus, Back Market, Fermob,
Saint James…). Set + raw results: data/ood_*.json in the GitHub repo; run
your own list with --eval-file.
| Metric (n=20, same-day, v7 vs untrained base) | Crab-1 v7 | Qwen3-1.7B base |
|---|---|---|
| Website accuracy | 0.78 | 0.75 |
| Location accuracy | 0.26 | 0.26 |
| Pass rate | 0.25 | 0.30 |
- Website finding generalizes: 0.78 accuracy, most partial misses are defensible TLD variants (michelin.fr vs .com).
- Location does not — for either model (0.26 for both, vs 0.87–0.97 on the startup benchmark). The cause is the tool, not the fine-tune: registry lookup by name returns the wrong entity for famous brands.
- Pass rate is a statistical tie — out of distribution the fine-tune behaves like the base with the same protocol discipline.
- Known single failure worth naming: "Armor Lux" → the model invented a
hyphen (
armor-lux.comdoes not exist). The base found the right domain. That's the class of error to expect from a 1.7B.
Usage
Ollama (recommended)
# 1. Get the weights, then from the GitHub repo:
ollama create crab1-v7 -f Modelfile
# 2. One profile, interactively:
python quickstart.py "Doctolib"
# 3. The full 30-company eval (~5 min, live web):
python eval/run_eval.py --model crab1-v7 --out results/crab1_v7.json
Transformers (LoRA adapter)
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-1.7B")
model = PeftModel.from_pretrained(base, "gaidar12345/crab-1/lora-adapter")
Honest limitations
- Trained and evaluated on French companies only; the registry tool is France-specific.
- The eval set is 30 companies — big enough to rank models, too small for decimal-point bragging.
- Name collisions in the registry (brand name ≠ legal name) are the main remaining failure mode.
- The model is a specialist. Ask it anything outside "profile this French company with these tools" and the base 1.7B is what you get.
License
Weights: Apache-2.0 (derivative of Qwen3-1.7B). Code in the GitHub repo: MIT.
Write-up with the full story: https://yegorgaidar.org/blog/crab1-slm-osint/
- Downloads last month
- -
16-bit
Model tree for gaidar12345/crab-1
Dataset used to train gaidar12345/crab-1
Evaluation results
- Pass rate 2026-08-30 on Crab-1 OSINT benchmark (30 French companies, live web, same-day)self-reported0.667
- Pass rate 2026-07-22 on Crab-1 OSINT benchmark (30 French companies, live web, same-day)self-reported0.767