How to use from
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
Quick Links

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รฉvision 2e1fd397ee46e1388853d2af2c993145b0f1098a.
@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}
}
Downloads last month
9
GGUF
Model size
2B params
Architecture
qwen2
Hardware compatibility
Log In to add your hardware

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for kanaton/webcoder-t28n

Finetuned
(224)
this model