Overview

What is Atome LM?

A language model you compile into firmware, not one you call over a network.

Atome LM is a language model small enough to compile into the firmware of a microcontroller. Not a model you call over an API. Not a model you shrink onto a phone. A model that ships inside the same flash image as the rest of your firmware, on a part that costs a couple of dollars and has no operating system, no network stack and no memory allocator.

The shipped 944K-parameter checkpoint is 271 KB of weights and the engine that runs it is 2.6 KB of compiled C99. Together they are smaller than a medium JPEG. On a physical ESP32-WROOM-32 it generates coherent English text at about 1.0 token per second, fully offline, with nothing but the chip and a USB cable.

What problem it actually solves

The interesting constraint on a microcontroller is almost never "can it think". It is "will it fit, and can I prove what it will do". Three things follow from that, and they are the whole design:

What it is not

Being clear about this saves everyone time.

The two product lines

The name covers two related things, and confusing them makes the numbers meaningless.

Atome LM (the language model)Atome LM EDGE (the sensing engine)
What it doesGenerates and classifies text on-deviceClassifies sensor windows on-device
Typical size60,000 – 944,000 parameters~6,567 parameters
Footprint20 KB – 271 KB of weights15,444 B total flash
Verified againstCortex-M3 under QEMU, and a physical ESP32-WROOM-322,947 held-out windows through the real C engine
Public?Yes — Apache-2.0Pilot engagement

The TensorFlow Lite for Microcontrollers comparison is about the EDGE line. The perplexity numbers are about the language model. Mixing them is how you end up quoting a footprint from one and an accuracy from the other.

How it is built

Each block runs three structurally different operations in parallel — a 5-tap depthwise causal convolution, a diagonal state-space model and a top-k=4 sparse attention — and a per-token softmax router decides how much of each to use for the character in hand. Three small specialists cost less memory than one big generalist at the same quality, which is the whole reason the architecture earns its place at this scale. All projections are ternary, per-tensor scale. The architecture page takes that apart properly.

Where to go next

Questions

What is Atome LM?

Atome LM is a ternary language model whose C99 engine compiles into the firmware of a microcontroller. The 944K-parameter checkpoint is 271 KB of weights plus a 2.6 KB engine, runs with no heap, no syscalls and no network, and generates coherent text on a physical ESP32-WROOM-32 at about 1.0 token per second.

Can a language model really run on a $2 microcontroller?

Yes, if it was designed for one. A 944K-parameter ternary model fits in 271 KB of flash and runs from a 2.6 KB engine with no dynamic memory. What does not work is taking a large model and quantizing it down — the capacity is not there and the runtime assumptions do not hold.

Is Atome LM open source?

The architecture, the C99 engine, the export format and a 944K TinyStories checkpoint are Apache-2.0 on GitHub, with the weights on Hugging Face and a citable Zenodo DOI. More elaborate internal variants and the EDGE benchmark harness are not public.

How is Atome LM different from BitNet or llama2.c?

BitNet b1.58 is ternary but starts at around 700M parameters and targets servers and phones. llama2.c compiles for microcontroller-class parts but keeps FP32 or int8 weights. TinyMaix and esp32-llm run roughly 15M-parameter models on an ESP32-S3 with PSRAM. Atome LM's combination is the narrow one: ternary weights, a zero-heap pure-C99 engine, and bit-exact parity verified under QEMU.