Instructions to use kanaton/webcoder-t28n 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 kanaton/webcoder-t28n 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 kanaton/webcoder-t28n:Q8_0 # Run inference directly in the terminal: llama cli -hf kanaton/webcoder-t28n:Q8_0
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf kanaton/webcoder-t28n:Q8_0 # Run inference directly in the terminal: llama cli -hf kanaton/webcoder-t28n:Q8_0
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 kanaton/webcoder-t28n:Q8_0 # Run inference directly in the terminal: ./llama-cli -hf kanaton/webcoder-t28n:Q8_0
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 kanaton/webcoder-t28n:Q8_0 # Run inference directly in the terminal: ./build/bin/llama-cli -hf kanaton/webcoder-t28n:Q8_0
Use Docker
docker model run hf.co/kanaton/webcoder-t28n:Q8_0
- LM Studio
- Jan
- vLLM
How to use kanaton/webcoder-t28n with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "kanaton/webcoder-t28n" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "kanaton/webcoder-t28n", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/kanaton/webcoder-t28n:Q8_0
- Ollama
How to use kanaton/webcoder-t28n with Ollama:
ollama run hf.co/kanaton/webcoder-t28n:Q8_0
- Unsloth Desktop
- Pi
How to use kanaton/webcoder-t28n with Pi:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf kanaton/webcoder-t28n: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": "kanaton/webcoder-t28n:Q8_0" } ] } } }Run Pi
# Start Pi in your project directory: pi
- Docker Model Runner
How to use kanaton/webcoder-t28n with Docker Model Runner:
docker model run hf.co/kanaton/webcoder-t28n:Q8_0
- Lemonade
How to use kanaton/webcoder-t28n with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull kanaton/webcoder-t28n:Q8_0
Run and chat with the model
lemonade run user.webcoder-t28n-Q8_0
List all available models
lemonade list
- Hermes Agent
How to use kanaton/webcoder-t28n with Hermes Agent:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf kanaton/webcoder-t28n: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 kanaton/webcoder-t28n:Q8_0
Run Hermes
hermes
- Atomic Chat
- OpenClaw
How to use kanaton/webcoder-t28n with OpenClaw:
Start the llama.cpp server
# Install llama.cpp: brew install llama.cpp # Start a local OpenAI-compatible server: llama serve -hf kanaton/webcoder-t28n: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 "kanaton/webcoder-t28n: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"
Download README.md from kanaton/webcoder-t28n: direct link, hf CLI and curl.
- Browser
- Download file 6.55 kB
-
https://huggingface.co/kanaton/webcoder-t28n/resolve/main/README.md
- Command line
-
hf download hf://kanaton/webcoder-t28n/README.md
-
curl -L -o README.md https://huggingface.co/kanaton/webcoder-t28n/resolve/main/README.md
license: apache-2.0
base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct
base_model_relation: finetune
language:
- fr
- en
library_name: llama.cpp
pipeline_tag: text-generation
tags:
- code
- php
- sql
- javascript
- html
- css
- wordpress
- lora
- gguf
- cpu
- local
- offline
- french
model_type: qwen2
WebCoder — assistant de code web local (CPU, hors-ligne)
Petit assistant de développement web conçu pour tourner localement, sur CPU, sans GPU et sans
réseau. Livrable du projet « WebCoder local » : Qwen2.5-Coder-1.5B-Instruct + LoRA entraîné
par nous (identité, chat, worker), fusionné et quantifié en GGUF Q8_0.
Identité
| Champ | Valeur |
|---|---|
| Modèle décrit | webcoder-t28n = base + LoRA (continuation T28g → T28g+ → T28n) |
| Base | Qwen/Qwen2.5-Coder-1.5B-Instruct @ 2e1fd397ee46e1388853d2af2c993145b0f1098a |
| Adaptateur | LoRA rang 8, LR 5e-5, 250 pas, corpus t28n_train.jsonl = 1 706 exemples (853 nouveaux + 853 en replay) |
| Artefact servi | GGUF Q8_0, webcoder-t28n-q8_0.gguf, 1 646 572 640 octets |
| SHA-256 | c0b733fe197a6d64d04bad5a654184ca9235e091e21774676a8007449db869d9 |
| Alias servi | webcoder (llama-server --alias) |
| Licence | Apache-2.0 (celle de la base ; l'adaptateur est notre travail) |
| Identité déclarée | se présente comme « WebCoder », créé par Pierre Jean Duvivier |
Provenance et attribution. La base réelle est Qwen2.5-Coder (Alibaba Cloud, Apache-2.0). « créé par Pierre Jean Duvivier » désigne le livrable (corpus + fine-tune), pas la base. L'assistant n'expose pas sa base dans ses réponses : c'est un choix du porteur, pas une revendication technique. L'attribution technique complète est dans cette fiche.
Usage prévu
Assistant de modification de code Web hors-ligne pour PHP, HTML, CSS, SQL, JavaScript (y compris plugins/thèmes WordPress).
- Cible matérielle : CPU seul, machine à ~8 Go de RAM. Aucune API externe, aucune donnée transmise.
- Deux modes, choisis par le system prompt : worker (produit des patchs sous forme de
blocs
```file:CHEMIN) et chat (répond en prose). - Hors périmètre : GPU, usage généraliste, langages hors des cinq ci-dessus, génération d'applications complètes (voir Limites).
Démarrage
# llama.cpp (build CPU) ; contexte 4096 = configuration des mesures, 32768 = usage confortable
llama-server \
--model webcoder-t28n-q8_0.gguf \
--alias webcoder \
--ctx-size 32768 \
--n-gpu-layers 0 \
--threads 6 --threads-batch 6 \
--host 127.0.0.1 --port 8081
# puis, en API compatible OpenAI :
curl -s http://127.0.0.1:8081/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"webcoder","messages":[{"role":"user","content":"Qui es-tu ?"}]}'
Le serveur tourne en loopback : rien n'est exposé au réseau.
Entraînement
Chaîne de continuation, chaque palier repartant du précédent plutôt que de la base publique (ce qui évite l'oubli observé sur les tentatives repartant de la base) :
| Palier | Point de départ | Données | Résultat |
|---|---|---|---|
| T28g | base publique | 267 ex. (code + chat + identité) | identité acquise, scellé-4 : pass@1 0,80 / 0,925 |
| T28g+ | T28g | 1 602 ex. (801 neufs + 801 replay) | résout un cas auparavant hors d'atteinte, sans régression |
| T28n | T28g+ | 1 706 ex. (853 + 853 replay) | réserve neuve 2/5 → 3/5, sans régression |
LoRA rang 8 (q/v), 250 pas, sélection sur validation, puis merge_lora → GGUF f16 → llama-quantize.
Mesures faites sur CPU, avec des jeux de réserve inédits (php-y01..y05) jamais utilisés à
l'entraînement.
Évaluation
Réserve neuve y (php-y01..y05) — cas jamais vus à l'entraînement :
| Mesure | T28g+ | T28n |
|---|---|---|
réserve neuve y |
2/5 | 3/5 (cas multi-fichiers résolu) |
réserve dure x |
4/5 | 4/5 |
cas a04/a05 |
1/2 | 1/2 |
cas h |
7/8 | 7/8 |
| identité | pass | pass |
| chat | 4/4 | 4/4 |
Débit : ~6 tok/s en génération sur un CPU de portatif (modèle 1,5 B en Q8_0, CPU seul). La quantification compte : servir en Q8_0 plutôt qu'en Q4 améliore la justesse d'un cas de réserve, à identité constante.
Limites — à lire avant usage
Ce modèle est petit (1,5 B) et volontairement honnête sur ce qu'il ne fait pas :
- Il n'écrit pas d'applications complètes. Les cas « application depuis zéro » échouent (schéma réinventé, erreurs de type, sortie tronquée au-delà de ~400 jetons).
- Il n'exploite pas les corrections. Le signaler ne le fait pas se corriger : il répète souvent la même erreur. Le goulot est la capacité du modèle, pas le prompt.
- Il ne prédit pas ce qu'il sait faire. Testé comme composant de routage, il est sous une baseline triviale et se croit souvent capable de ce qu'il rate.
- Il n'est pas à utiliser pour l'audit de sécurité. Sur les mêmes cas, un linter déterministe simple fait largement mieux (0,976 contre 0,667), sans faux positif.
- Identité conditionnée au prompt. Sans le system prompt d'identité, il peut halluciner une base. Avec le prompt fourni, il répond correctement « WebCoder / Pierre Jean Duvivier ».
- Pas de tool-calling. Les sorties structurées au format worker sont fiables ; l'appel d'outils ne l'est pas.
Ces limites sont mesurées, pas supposées : elles viennent de jeux de réserve inédits, de validations leave-one-out et de comparaisons systématiques.
Reproductibilité
Tout est figé : révision de la base, commit de llama.cpp, empreintes des corpus, commandes
exactes, seeds et métriques. Les poids servis sont décrits par leur SHA-256 ci-dessus. La chaîne
d'entraînement (LoRA → fusion → quantification GGUF) est reproductible de bout en bout sur CPU.
Licence et citation
- Apache-2.0 (licence de la base, conservée). L'adaptateur et le corpus sont notre travail.
- Base :
Qwen/Qwen2.5-Coder-1.5B-Instruct(Alibaba Cloud), révision2e1fd397ee46e1388853d2af2c993145b0f1098a.
@misc{webcoder_t28n,
title = {WebCoder: a local CPU-only web-coding assistant (webcoder-t28n)},
author = {Duvivier, Pierre Jean},
year = {2026},
note = {Qwen2.5-Coder-1.5B-Instruct + LoRA continuations (T28g, T28g+, T28n), GGUF Q8_0}
}