Field notes

The on-device AI blog

Small language models, Apple Intelligence, private machine learning — explained for humans.

August 27, 2026 · 9 min read

63 to 63: two on-device models tied for first. One admits it doesn't know 79% of the time. The other guesses.

Artificial Analysis and Liquid AI's new mobile-intelligence benchmark ties Nanbeige4.2-3B (already in our catalog) with LFM2.5-2.6B on a real iPhone 17 Pro. The tie comes entirely from one axis: when either model doesn't actually know the answer, one stays quiet and the other confidently guesses wrong two times out of three.

August 27, 2026 · 5 min read

SLM Daily #17: A newcomer beats our day-one catalog pick by 22 points on GPQA. We're not swapping it in.

IBM's Granite 4.2 3B beats Llama 3.2 3B Instruct by 22 points on GPQA — but every other benchmark on its card uses a different test version than the one we can check it against. Plus what's new in llama.cpp since our last edition, and four DIY candidates checked and skipped.

August 22, 2026 · 9 min read

56% slower on a Jetson. 81% faster on our own bench. Same 4-bit quantization.

A July arXiv paper measured 4-bit quantization making a vision-language model's decode 55.8-55.9% slower on NVIDIA Jetson boards. We quantized a chat model to the same bit-width on our own engine and measured decode 81% faster. Both numbers are real — the difference is the kernel, not the math.

August 22, 2026 · 5 min read

SLM Daily #16: llama.cpp's first real GitHub Release landed with a 280B-parameter model — and nothing phone-sized

llama.cpp shipped v0.2.0, its first tag to get an actual GitHub Release page instead of a bare pre-release tag — carrying a new 280B/16B-active MoE architecture nowhere near phone-sized. Zero catalog changes; one candidate checked and skipped, and why.

August 21, 2026 · 4 min read

SLM Daily #15: the wrong crossover point between two GPU kernels was costing up to 49% of an RTX 5090's decode speed

llama.cpp retuned when CUDA switches from one decode kernel to another, worth up to 49% more speed on an RTX 5090. Real Metal and Vulkan correctness fixes shipped too. Zero catalog changes, zero new architectures — our own engine is still three months behind all of it.

August 19, 2026 · 8 min read · Edge in the Wild

The most expensive machine scored 10/10 — and got Mercury's size wrong by 40%

Mayukh ran the same 10-question offline-AI test on a $90 handheld board, a Raspberry Pi 5 and a $1,000 Ryzen mini PC. The board used 14.6x less RAM than the Pi for 15% less speed — and the priciest machine's "perfect" score hid a confidently wrong claim the grading rubric never caught.

August 18, 2026 · 12 min read

70.8% vs 98.1%: the 4-bit quantization your whole phone-AI catalog ships as isn't one number

A fresh signal-noise analysis of 800+ quantized evaluations shows 4-bit retention isn't flat — a 0.6B model keeps 70.8% of its full-precision score, a 14B model keeps 98.1%, and at 2-bit the protection model size buys collapses entirely. What that means for a catalog built almost entirely of sub-4B models shipped at exactly that bit-width.

August 18, 2026 · 7 min read · Edge in the Wild

500 tokens/sec on a Raspberry Pi 5. 1.87 on a $5 chip with no OS at all.

Andris Gauračs wrote his own ~3,700-line C99 inference engine from scratch to run Cactus Compute's 45M-parameter Needle 2 tool-calling model on a bare ESP32-S3 — no filesystem, no OS, no port of Cactus's own code. Grammar-guaranteed JSON tool calls, entirely offline.

August 18, 2026 · 4 min read

SLM Daily #14: one line of SYCL code was under-launching GPU threads by 8x

A one-line kernel-launch bug in llama.cpp's SYCL backend took an Intel Arc B70 from 20.21 GB/s to 158.19 GB/s once fixed. Three engine releases since our last edition, zero new architectures, zero catalog changes — the one new GGUF worth naming misses our size cap by nearly 2.5x.

August 17, 2026 · 7 min read

1.55 billion downloads went to a model most people have never heard of

Hugging Face's own Summer 2026 report: not one model released in 2026 cracked the platform's download top 25, and thirteen of the twenty-five are from 2022. What that means for a blog that covers a new small model every few days.

August 17, 2026 · 5 min read

SLM Daily #13: llama.cpp was silently zero-padding corrupted LoRA files. Nobody would have known.

Two llama.cpp fixes closed a silent-corruption path in LoRA adapter loading and GGUF array parsing. Kimi-K3 architecture support landed too, but it's a 2.8T-parameter model. Zero catalog changes this edition — what we checked and skipped, and why.

August 16, 2026 · 9 min read

20 for 20, then 8 for 8: llama.cpp's own prompt cache can hand your reply to someone else's conversation

A fresh llama.cpp server bug lets one finished conversation's content bleed into a different session under concurrent load — and cached_tokens, the field built to flag cache reuse, reads 0 every time it happens. We checked our own engine's code against it.

August 15, 2026 · 10 min read

23.6% to 7.5%: the same 4-bit quantization step that ships a model to your phone can push it below a coin flip — in Russian only

A new independent study finds 4-bit quantization doesn't apply an even tax across languages. Qwen 3.5 2B's Russian reasoning score falls from 23.6% to 7.5% — worse than random chance — while the identical checkpoint's English score barely moves.

August 15, 2026 · 5 min read

SLM Daily #12: our day-one catalog entry just lost to a newcomer by 42x on one benchmark

Liquid AI's LFM2.5-1.2B-Instruct beats Llama 3.2 1B Instruct — in our catalog since launch — on all seven of Liquid's own published benchmarks, including a 42x gap on AIME25, at a smaller file size. First straight replacement in the catalog's history.

August 14, 2026 · 11 min read

Five of six frontier LLMs fail 5-digit multiplication. A transformer that was never trained gets it 100% right.

Rob Porter's torchwright compiler writes exact algorithms directly into a stock Phi-3 checkpoint's weights — zero gradient descent, zero training data — and beats six frontier LLMs at direct-answer multiplication, 100% to as low as 0%. The checkpoint is the same architecture family already in our own catalog.

August 14, 2026 · 8 min read

All 15.2 million parameters, computed live, every token — on a $4 chip, at 2.96 tokens a second

Edge in the Wild: Salman Farsi's NanoMind-S3 runs a fully dense LLaMA-2-architecture transformer on a single ESP32-S3 — no lookup-table shortcuts, no flash-embedding trick, every one of its 15.2M parameters computed on every token.

August 13, 2026 · 7 min read

37.58 tokens/sec on an iPhone 16 Pro lasts about four seconds

Every on-device LLM benchmark quotes a first-reply number. A real sustained-load study found an iPhone 16 Pro loses 44% of its throughput by the eighth reply — and a Samsung Galaxy S24 Ultra doesn't slow down at the sixth. The OS floors the GPU clock and inference stops outright.

August 13, 2026 · 7 min read

91% of peak memory bandwidth, spent generating 2.84 tokens a second

Edge in the Wild: Samuel Alexander runs Meta's dense 30B Muse-Glimmer vision-language model entirely on a Qualcomm Dragonwing IQ-9075 edge board, no cloud calls — 2.84 tok/s turns out to be 91% of the board's own peak memory bandwidth, and the model is honest when it hallucinates a part number.

August 13, 2026 · 4 min read

SLM Daily #11: the first model we skipped for a reason that isn't in our own rulebook

Four candidates checked since our last edition, zero added. LiquidAI's LFM2.5-VL-3B clears every published catalog rule and still doesn't ship — because our own engine has no code path that ever hands a model a photo.

August 12, 2026 · 9 min read

€15 million is the fine. August 2nd was the deadline. No open-weight text model can comply yet.

The EU AI Act's new content-marking law took effect August 2 and requires AI-generated text to carry a machine-readable, detectable mark. No model in our catalog does this, neither does llama.cpp's sampler, and it's unclear whose obligation it even is — a compliance gap the whole open-weight ecosystem shares.

August 12, 2026 · 7 min read

An 80B-parameter model just ran in 4.3 GB of RAM — on an unmodified Mac, no cluster, no cloud

Edge in the Wild: independent builder leonickson1 streams a mixture-of-experts model's weights straight off SSD instead of loading them, running Qwen3-Next-80B in 4.3 GB of peak RAM on a Mac — and a 35B model on an iPhone.

August 12, 2026 · 4 min read

SLM Daily #10: one skipped check nearly doubled a model's memory use — and broke its answers

A one-line ordering bug in llama.cpp disabled sliding-window attention for EXAONE 4.5, pushing its KV cache from 1952 MiB to 4160 MiB and corrupting output — fixed August 11. Zero catalog additions this edition; six candidates checked and rejected, why.

August 10, 2026 · 8 min read

319,000 parameters. Two days on a phone charger. Zero pretraining, anywhere, ever.

Edge in the Wild: independent builder Carloscodix trained a transformer entirely on an $8 ESP32-S3 — hand-written backpropagation in C, gradient-checked to 1.07e-08, no GPU or datacenter ever in the loop. Every other DIY build on this blog runs a model born elsewhere; this one was born on the chip.

August 9, 2026 · 9 min read

A 4x speedup that costs 12x the accuracy: what diffusion LLMs actually do on a real phone

Diffusion LLMs are pitched as the on-device latency fix — parallel tokens instead of one at a time. The only real phone-NPU benchmark that exists says otherwise: the naive version is still slower than the model it's replacing on all but the newest chips, and the fix that makes it fast collapses GSM8K accuracy 12x.

August 9, 2026 · 7 min read

We said this model had no GGUF path. A palm-sized Jetson board proves that's now half true.

Edge in the Wild: PrismML's Bonsai 27B shipped MLX-only in July. A solo builder now runs a 26.9B-parameter, 1-bit build of it on a Jetson Orin NX 16GB at 6.76 tok/s on 25 watts — via a native GGUF pack and a private llama.cpp fork that still doesn't touch mainline.

August 9, 2026 · 4 min read

SLM Daily #9: a Metal bug quietly returned the wrong answer on Apple's own GPU

A Metal shader bug that could silently corrupt normalization math on Apple GPUs got fixed the day after our last check. Zero catalog additions this edition — seven candidates checked and ruled out, and why.

August 7, 2026 · 8 min read

73x faster than an Nvidia H200, at a tenth of the power — because the model isn't loaded. It's the chip.

AMD just paid an undisclosed sum for Taalas, whose test chip serves Llama 3.1 8B by casting the model's weights directly into silicon instead of loading them from memory. What that means for engines — like ours — built to run whichever model you actually download.

August 6, 2026 · 7 min read

A Raspberry Pi boots straight into a chat prompt. There's no operating system underneath it.

Edge in the Wild: NightRun is a UEFI application that IS the machine's first and only program — no Linux, no scheduler, no network stack — loading a quantized model straight into RAM and serving chat on the bare framebuffer. Real Raspberry Pi 5 hardware, MIT-licensed.

August 6, 2026 · 5 min read

SLM Daily #8: a 2.6B model with a 128K context window, verified at 1.68 GB

Liquid AI's LFM2.5-2.6B lands in the catalog five days after its own release. llama.cpp hit tag b10290 this week, all of it multi-token-prediction and MoE work irrelevant to a phone.

August 1, 2026 · 7 min read

28.9 million parameters. 512 KB of RAM. Zero bytes sent anywhere.

Independent builder slvDev got a 28.9M-parameter language model running on an $8 ESP32-S3 microcontroller — about 100x the previous record on hardware like this — by keeping 25 million of those parameters in flash instead of RAM.

August 1, 2026 · 9 min read

Same file. Same bytes. Nearly 6x the RAM.

A byte-identical 355 MB GGUF costs 56 MB of RAM on an iPhone 13 Mini and 330 MB on a Galaxy A56, through the exact same inference engine. On-device memory budgets aren't a model property — they're an OS property.

August 1, 2026 · 5 min read

Q4_K_M was 184 MB too big. The next quant down wasn't.

SLM Daily #7: llama.cpp cut ten releases in one day and picked up a phone-sized architecture. Its default quant missed our size cap — a smaller one didn't, and it's our first catalog addition since July 27.

July 30, 2026 · 10 min read

A 3B model just beat a 12B model by 31 points. It can't run in llama.cpp, Ollama, or LM Studio.

Nanbeige4.2-3B beats models three to four times its size by looping its own transformer layers twice instead of adding parameters — a computation mainline llama.cpp can't build yet, gated behind a private fork and a closed GitHub issue.

July 30, 2026 · 5 min read

Two new architectures landed in our engine this week. Both are over 100B parameters.

SLM Daily #6: GLM-5.2 and Laguna-S-2.1 support landed in llama.cpp this week — 754B and 118B parameters, neither phone-sized. Zero catalog changes.

July 27, 2026 · 10 min read

Your phone's AI chip is doing up to 10x less than it could — and it's not the chip's fault

Two independent 2026 papers find phone NPUs losing up to 10x their usable throughput and up to 65% of their achievable energy efficiency to scheduling code, not weak silicon — and it's playing out in llama.cpp's own repo right now.

July 27, 2026 · 6 min read

Ranked #1 of 44 open models under 4B. Built by a team with no track record.

SLM Daily #5: G9v3-3B tops Artificial Analysis's Intelligence Index for open-weight models under 4B params — we verified it and added it anyway. Plus llama.cpp's architecture count jumped from 135 to 171, and a size-cap bug we've now caught twice.

July 25, 2026 · 9 min read

Apple gave small developers free cloud AI on June 9. By July 10, one had already built a workaround to Apple's own definition of "small."

Private Cloud Compute's free tier counts lifetime downloads across every app you've ever shipped, not the one asking for AI. A ten-year App Store veteran got locked out over an unrelated app — and there's no paid tier to buy back in.

July 25, 2026 · 6 min read

SLM Daily #4: a model from a lab nobody's heard of just scored 5x its size class's median. We're not shipping it.

G9v3-3B cleared every mechanical bar we check for and posted a genuinely independent benchmark score 5x its peer median — plus what else we checked this edition and why nothing else made the cut.

July 23, 2026 · 8 min read

One skipped code path made small models 3.6x slower to decode on every CUDA GPU

llama.cpp release b10089 closed a gap that had been there since k-quants shipped: CUDA couldn't run GET_ROWS on quantized embedding tables, so it silently fell back to a CPU round-trip on every token. Fixing it took Qwen3-1.7B from 6.18 to 1.72 ms/token — 3.6x faster. Metal, Vulkan, CPU and SYCL never had the bug.

July 23, 2026 · 7 min read

One Docker command turns a Rockchip NPU board into a 19.55 tok/s chat server

Edge in the Wild: Hanzo Huang's rkllm-docker packages five chat models for Rockchip's RK3576/RK3588 NPU boards behind a single docker run — Qwen2.5-1.5B hits 19.55 tok/s at 1.6GB RAM, and the smaller W4A16 quant beats W8A8 on both speed and memory, every time.

July 22, 2026 · 9 min read

Doubling a tokenizer's vocabulary made Thai 4x cheaper and English 9% slower — on the same model

Liquid AI's July 21 technical report puts a real number on the "tokenizer tax": expanding LFM2.5-8B-A1B's vocabulary from 65K to 128K tokens cut Thai token counts by up to 4x — and slowed decoding for every language, including English, by 7 to 10%, forever, on every token.

July 20, 2026 · 9 min read

Xiaomi's robot brain is 4.7B parameters and answers in 80 milliseconds on one gaming GPU

Xiaomi just announced Xiaomi-Robotics-1, trained on 100,000+ hours of manipulation data. Its predecessor, the model actually shipping today, is a 4.7B-parameter VLA that runs in 80ms on a single RTX 4090 — smaller than most phone chat models, for a reason that has nothing to do with cost.

July 20, 2026 · 12 min read

Same iPhone, same model family, 2.3x the energy per word — the real cost of an open model

A public Apple Silicon benchmark shows llama.cpp costs 0.25 joules per generated token on an iPhone 17 Pro versus 0.11 for Apple's own Foundation Models path — and a naive CoreML/ANE port of the same open model is worse than either. What that means for engines that chase model compatibility instead of Apple's walled garden.

July 20, 2026 · 8 min read

One $2,000 mini PC just served 32 people talking to Gemma 4 at once — no cloud, no cluster

Edge in the Wild: home-lab builder AGmind benchmarked a single Beelink GTR9 Pro (AMD Ryzen AI Max+ 395, 128GB unified memory) against 32 concurrent llama.cpp chat sessions — 236 tok/s aggregate, sustained for 30 minutes, with the numbers that made it look bad too.

July 19, 2026 · 9 min read

Nvidia's newest AI chip shipped with 75% less memory than its own flagship. Your next phone is on the same curve.

Nvidia's July 15 Jetson Thor T2000/T3000 launch cut memory on purpose to dodge a DRAM price spike — and IDC now says the same squeeze is making sub-$100 phones "permanently uneconomical." What that means for every on-device AI app's RAM roadmap.

July 18, 2026 · 9 min read

Apple's on-device AI moat, exposed by a 3-person Caltech lab it's now trying to buy

PrismML's Bonsai 27B shrinks a 54GB model to 3.9GB at 89.5% of full-precision quality — and reports say Apple is in talks to acquire the team that built it. Why the model that might save Siri's on-device story can't run in our engine either.

July 18, 2026 · 7 min read

He put his home AI cluster and GPT-5.5 behind the same URL, then benchmarked both

Edge in the Wild: Tim Schupp's 2-node Kubernetes cluster on AMD Strix Halo mini-PCs — 218ms to first token on a local 32B model, real hardware photos, full credit to the builder.

July 18, 2026 · 4 min read

We finally read the license. It wasn't the problem.

SLM Daily #3: the license question we left open two posts ago is resolved — it was never the blocker. The only thing keeping a 153 MB model out of the catalog is that it's 23 days old. Zero catalog changes again.

July 14, 2026 · 9 min read · video

10 real robots running AI on NVIDIA Jetson — no cloud, verified sources only

A $249 Jetson Orin Nano out-detected a Mac Mini in a builder's own benchmark. Ten verified, individually-credited Jetson projects, ranked — with a top-5 countdown video built almost entirely from the builders' real photos and footage.

July 13, 2026 · 4 min read · video

From a $5 chip to an NVIDIA award: 5 robots running AI with zero internet

A countdown of five DIY robotics builds running small language models fully on-device — companion video made with MegaBrain, rendered with Kling 3.0.

July 13, 2026 · 9 min read · video

This $5 chip runs its own AI. We found 25 robots that prove it's not a fluke.

25 verified DIY robotics builds running small language models on-device, sorted into 10 categories — from a $5 microcontroller to an NVIDIA-award-winning animatronic robot. With a companion video, made with MegaBrain.

July 13, 2026 · 8 min read

llama.cpp shipped three releases in under three hours. Our app has no idea which one it's running.

Our build script fetches whatever ggml-org/llama.cpp calls "latest" at compile time and never records the tag. Real release-cadence and PR-merge data show why that's a subtler problem than the pinned-old-engine gap we wrote about a week ago.

July 13, 2026 · 5 min read

Our engine went from recognizing 3 architectures to 135. We still added zero models today.

SLM Daily #2: the engine now tracks llama.cpp's latest release instead of an old pinned copy — Qwen3, Gemma 3, Llama 4 and LFM2 all check out. The catalog didn't grow today anyway, for a specific, boring reason.

July 9, 2026 · 8 min read

Three "Q4_K_M" downloads of the same model. 2.13 GB apart.

Same model, same quant label, three different files — we compared bartowski, Unsloth and AesSedai's Qwen3.5 builds, and Unsloth's Gemma 3 27B quant against Google's own QAT checkpoint.

July 7, 2026 · 9 min read

The number "60+ supported models" doesn't mean what you think

Every local-AI app's description carries the same kind of number. Ours vendors an engine that recognizes three Qwen-family architectures — and none of them is the one Qwen's current releases actually use.

July 7, 2026 · 5 min read

We checked two similar 1.5B models this week. Only one would load.

SLM Weekly #1: what we added to the privateSLM catalog, what we skipped, and the exact grep command that told us which was which.

July 3, 2026 · 4 min read

privateSLM 2.0: a chat app that uses the model already inside your phone

Zero-download AI chat via Apple Intelligence, a local GGUF fallback, real chat history and hands-free voice — everything on device.

July 3, 2026 · 6 min read

What is an SLM? Small language models, explained

GPT-class models get the headlines, but the most interesting shift in AI is happening at the small end. Here's why 1–3B parameter models matter.

July 3, 2026 · 7 min read

Apple Intelligence for developers: the Foundation Models framework

iOS 26 gives every app direct access to Apple's on-device model. What it can do, what it can't, and what we learned shipping with it.

July 3, 2026 · 5 min read

Why on-device AI beats the cloud for privacy

"We don't store your data" is a promise. Physics is a guarantee. The case for AI that never phones home.