Thox-ai/ThoxKey-9M-role
ThoxKey-9M-role — canonical ThoxKey device model
This is the model baked into the ESP32-S3 firmware. 8,917,248 params, BitNet b1.58 ternary ({-1, 0, +1} weights, int8 activations — W1.58A8).
Lineage — verified, not assumed
Fine-tuned from [`Thox-ai/ThoxMicro-1bit-9M`](https://huggingface.co/Thox-ai/ThoxMicro-1bit-9M), a THOX model trained from scratch on TinyStories. There is no external base — the ternary pretrain is ours.
Precisely: training initialised from the 9M pretrain checkpoint (micro-9m-ternary/best.pt, 393M tokens), and the ThoxMicro-1bit-9M repo publishes that same run as GGUF. The repo holds no .pt, which is why the init_from in configs/ternary/thoxkey-9m-role.yaml points at the local checkpoint rather than the Hub path — same weights, different container.
A previous internal proposal listed `slvDev/esp32-ai` as a base. That was wrong and is retracted. It is a GitHub repository (github.com/slvDev/esp32-ai, MIT), not a Hugging Face model, so it could never be an HF base_model — and no THOX model was trained from it. The shipping ThoxKey model is this one.What it does
Handles local device commands, names itself when asked, and defers everything else rather than inventing it. It holds no company facts by design — at 8.9M params (23.5% of it the embedding) there is no capacity for a fact table, and training one in is how larger models in this family learned to fabricate.
Zero fabrications on held-out company-fact prompts.
Files
Ollama cannot load ternary GGUF (TQ10/TQ20/I2S) — `tensor size overflow`. Use Q80 on a host; TQ1_0/TERN1 are the device artifacts.
Device budget: 3.80 MB weights, 8.00 MB resident, ~15.9 tok/s at PSRAM 60.7 MB/s. ESP32-S3 N16R8: fits.
Ship-then-test: not measured on target silicon. Trained on a local RTX 4060 Ti at $0.
Temporary demo Space: tommytracx/ThoxKey-9M-Space (org Space paused on quota).
