Instructions to use Thingamatronics/sable-v22-canon with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use Thingamatronics/sable-v22-canon with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use Thingamatronics/sable-v22-canon 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 Thingamatronics/sable-v22-canon:Q8_0 # Run inference directly in the terminal: llama cli -hf Thingamatronics/sable-v22-canon:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf Thingamatronics/sable-v22-canon:Q8_0 # Run inference directly in the terminal: llama cli -hf Thingamatronics/sable-v22-canon:Q8_0
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf Thingamatronics/sable-v22-canon:Q8_0 # Run inference directly in the terminal: ./build/bin/llama cli -hf Thingamatronics/sable-v22-canon:Q8_0
Use Docker
docker model run hf.co/Thingamatronics/sable-v22-canon:Q8_0
- Llama new
- LM Studio
- Jan
- Ollama
How to use Thingamatronics/sable-v22-canon with Ollama:
ollama run hf.co/Thingamatronics/sable-v22-canon:Q8_0
- Unsloth Desktop
- Pi
How to use Thingamatronics/sable-v22-canon with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Thingamatronics/sable-v22-canon:Q8_0
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": "Thingamatronics/sable-v22-canon:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use Thingamatronics/sable-v22-canon with Docker Model Runner:
docker model run hf.co/Thingamatronics/sable-v22-canon:Q8_0
- Lemonade
How to use Thingamatronics/sable-v22-canon with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull Thingamatronics/sable-v22-canon:Q8_0
Run and chat with the model
lemonade run user.sable-v22-canon-Q8_0
List all available models
lemonade list
- Hermes Agent
How to use Thingamatronics/sable-v22-canon with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Thingamatronics/sable-v22-canon:Q8_0
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 Thingamatronics/sable-v22-canon:Q8_0
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use Thingamatronics/sable-v22-canon with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf Thingamatronics/sable-v22-canon:Q8_0
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 "Thingamatronics/sable-v22-canon:Q8_0" \ --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"
sable-v22-canon โ hints, gameplay fixes, one combined run (2026-10-31)
The combined retrain from docs/gameplay-corpus-plan.md and
docs/hint-system-plan.md: the v21 canon corpus plus the separate-call HINT
shape, the gamer mid-game arc, steer/volunteer, long histories, unnamed
referents, hard keys, and the contrastive classifier rows.
Weights: https://huggingface.co/Thingamatronics/sable-v22-canon (public). The merged fp16 model, the LoRA checkpoint-200, and the Q8_0 GGUF are there.
Data
build/train-canon.jsonl: 3,514 shipping rows from three signed batches.
| batch | rows | what |
|---|---|---|
| CB-0005 | 2,936 | v21 canon corpus (uppercase, fixed opening, arc) |
| CB-0006 | 137 | separate-call HINT rows, 35 critical-path edges |
| CB-0007 | 441 | gameplay corpus: A2/A3 classifier, B1-B5 speak |
Slices: classify 2,485, reveal 345, converse 157, hint 137, offer 130, opener 59, end 77, volunteer 57, steer 47.
Settings
Qwen2.5-1.5B-Instruct, LoRA r=32 / alpha=64 / dropout=0.05, 3 epochs, lr 2e-4 cosine with 3% warmup, micro-batch 4 x grad-accum 4, seq-len 2,048, NEFTune 5, seed 42, bf16, gradient checkpointing. torch 2.8.0+cu128, transformers 4.57.6, peft 0.21.2. Stopped after step ~446 when the eval curve flattened; every checkpoint 25โ425 was kept.
Pod zizjjlxtwpmzni: 2,757 s, $0.4518 at $0.59/hr, terminated after fetch.
Checkpoint selection (generation eval, not eval_loss)
K=4 sampled replies at temp 0.8 / top_p 0.9 / max 256 / stop <|im_end|>,
on the opening, the sick reveal, the Walter reveal, and a short converse.
stop, upper, key are rates; bad counts asterisks/brackets/HTML/
third-person.
| ckpt | sick stop | sick key | sick p95c | walter key | walter p95c | opening upper/bad |
|---|---|---|---|---|---|---|
| 25 | 1.00 | 0.75 | 84 | 0.00 | 137 | 0.00 / 3 |
| 50 | 1.00 | 1.00 | 140 | 0.25 | 291 | 1.00 / 0 |
| 75 | 1.00 | 0.75 | 111 | 0.50 | 136 | 1.00 / 0 |
| 100 | 1.00 | 0.75 | 110 | 1.00 | 191 | 1.00 / 0 |
| 125 | 1.00 | 1.00 | 152 | 1.00 | 197 | 1.00 / 0 |
| 150 | 1.00 | 1.00 | 108 | 0.75 | 172 | 1.00 / 0 |
| 175 | 1.00 | 0.75 | 117 | 1.00 | 177 | 1.00 / 0 |
| 200 | 1.00 | 1.00 | 131 | 1.00 | 134 | 1.00 / 0 |
| 225 | 1.00 | 1.00 | 152 | 1.00 | 145 | 1.00 / 0 |
| 250 | 1.00 | 0.75 | 136 | 0.75 | 172 | 1.00 / 0 |
| 300 | 1.00 | 1.00 | 119 | 1.00 | 136 | 1.00 / 0 |
| 350 | 1.00 | 1.00 | 141 | 1.00 | 172 | 1.00 / 0 |
| 425 | 1.00 | 1.00 | 136 | 1.00 | 145 | 1.00 / 0 |
Chosen: checkpoint-200. 100% stop, 100% uppercase, 0 artifacts, sick and Walter keys 100%, shortest best-key Walter replies. The lowest eval_loss was step 425 (0.4214), but it is longer and no better on keys.
Merge: python merge.py --adapter out/sable-v22-canon/adapter/checkpoint-200 --out out/sable-v22-canon/merged. Verified tensor hash
06003b0b0eb1fb33. GGUF: Sable_v22_canon-Q8_0.gguf (Q8_0, 1.65 GB).
Runtime
mise run play:canonusesSable_v22_canon-Q8_0.ggufwithSABLE_NO_PENALTIES=1; the v20 penalty settings still collapse the uppercase model.- The classifier now labels the repeat denial
ask_walterdirectly; the session's denial guard remains as a safety net. - HINT is a separate second pass; the edge
hint.promptsis the direction, never displayed.
Probe (acceptance)
See probe-transcript.txt:
- opening: the fixed greeting, verbatim;
lol what is this->what_is_this, in voice;are you a bot->ask_who, in voice;I'm fine->ask_fine->sick, gaslighting, key present;No I'm fine really->ask_walter->walter(raw classifier, not just the guard);who's walter->ask_who_walter->walt_class;did you kill him->accuse, deflection.
Weaknesses
- 3 of 140 HINT rows were rejected by their checks.
- The 140 hint rows were assembled from the edge directions before the
session-simulator emitter landed; the emitter is now in
pipeline/corpus.py. canon checkstill warns the floor stalls atask_sleeper; that is the required-hint tradeoff.- Steer 47 / volunteer 57, just under the plan's >=60 each.
- Downloads last month
- 49
8-bit