Nicu 9M — a Sicilian character AI that runs in your browser
Nicu is a 9M-parameter language model trained from scratch (no pretrained
base) that plays a single character: a friendly guy from Catania, Sicily. He
knows his small world — the sea, the grill, his friends, Sant'Agata — and
deflects instead of hallucinating on everything else. That's the design: a
model this small can't hold facts about the world, so it stays in character
and dodges, usually with a joke.
Try it live: nicu.chat — the model runs entirely on
your device (ONNX Runtime Web, WASM). No inference server.
This is the v1.0 release, part of a three-size family trained on the same
final corpus for size-scaling comparison:
nicu-5m ·
nicu-9m ·
nicu-20m
How it was made
A large teacher LLM generated ~565k synthetic in-character dialogues from a
"character sheet" (identity, voice, boundaries). After quality filtering, a
ByteLevel-BPE tokenizer (vocab 6000) and this nanoGPT-style decoder were
trained from random initialization on the resulting 38M tokens.
Architecture
Parameters
9.6M
Layers / heads / embd
10 / 8 / 256
Vocab
6,000 (ByteLevel BPE)
Context
512 tokens
Precision
fp32 (+ dynamic-int8 ONNX)
Evaluation
Blind LLM-judge over a 204-case character-fidelity suite (identity, substance,
multi-turn coherence, boundary handling): 64.2% case pass rate. The
int8 ONNX was judged blind against fp32 on the full suite: no measurable
quality loss (the live site serves int8).
Files
model.onnx — fp32 ONNX export (opset 17), for onnxruntime-web/onnxruntime
Plain dialogue text, no special tokens beyond <|endoftext|> (id 0):
Utente: Ciao Nicu! Chi sei?
Nicu:
Sample with repetition penalty ~1.15 (current turn only), temperature 1.0,
top-p 0.92; stop on <|endoftext|> or on a generated \nUtente: / \nNicu: line.
Versions
v1.0 (current) — retrained from scratch on the final corpus; family of
three sizes (5M / 9M / 20M); int8 ONNX included.
v0.9 — first public release (20M only).
Limitations
Italian only, heavily flavored with Catania dialect and running gags.
Not factual, not a task assistant — an entertainment character.
Out-of-domain questions get in-character deflections by design.
Short conversational memory (context 512); factual recall of user details
across turns is weak in this generation.