Cactus Compute · 2026-08-10 · major
Needle 2 — 14MB agentic model for phones, robots and microcontrollers
Needle 2 is a 45M-parameter open model for tool calling and structured extraction that ships as one 14MB binary and runs a full session in 28MB of RAM. It scores 63.7% on Mobile Actions under Apache-2.0.
A 45M-parameter tool-calling model that ships as one 14MB binary and runs on hardware too small for anything else.
Key specs
| Parameters | 45M |
|---|---|
| File size | 14 MB |
Quick facts
| Maker | Cactus Compute |
|---|---|
| License | Apache-2.0 |
| Session RAM | 28 MB peak |
| Quantization | CQ2-bit, trained from pretrain through post-train |
| Speed | 500+ tok/s decode on a Raspberry Pi 5 |
| Runs on | ARM64, x86-64, ARMv7, RISC-V and WebAssembly |
| Weights | huggingface.co/Cactus-Compute/needle2 |
Benchmarks
| Needle 2 (45M, CQ2-bit) | 63.7% | |
|---|---|---|
| LFM2.5 230M (f16, vLLM) | 69.1% | |
| Apple FM (~3B, on-device) | 64.5% | |
| FunctionGemma 270M (f16, vLLM) | 64% |
What is it?
Needle 2 packs tool calling, device use, and structured extraction into a single 14MB binary that needs about 28MB of RAM for a whole session. Cactus Compute is aiming at the cheap end of the edge — budget phones, wearables, small robots, and microcontrollers — rather than the Macs and PCs that usually get called 'on-device AI'.
How does it work?
The architecture is Cactus's Simple Attention Network, an attention-only stack described in a July 2026 arXiv paper. A Hadamard MLP swaps dense projections for a fixed Walsh transform, hashed n-gram 'engram' tables hold world knowledge outside the layer stack, and a 256-token sliding window bounds the KV cache. Weights, activations, and cache all train at CQ2-bit precision, so the 2-bit model deployed is the model that was trained.
Why does it matter?
Tool calling does not need world knowledge — mapping a messy sentence onto a typed function is a much smaller problem than chat, and Needle 2 is the argument that 45M parameters cover it. On Mobile Actions it lands within a point and a half of a 3B Apple model and beats FunctionGemma 270M, at a fraction of the size. That puts an offline agent on hardware with no GPU, no NPU, and a few hundred MB of RAM.
Who is it for?
embedded and mobile developers, robotics teams
Frequently asked questions
- Is Needle 2 free for commercial use?
- Yes. Needle 2 is licensed under Apache-2.0, with weights published on Hugging Face at Cactus-Compute/needle2 and source in the cactus-compute/needle repo. That covers commercial products, and Cactus points to Pebble as a shipping example — the Index 01 app runs Needle locally so a screenless ring can act on speech without a network.
- How is Needle 2 different from the first Needle?
- The first Needle, published in May 2026, was a 26M-parameter model distilled from Gemini tool calling. Needle 2 is a 45M-parameter model trained from scratch on Cactus's Simple Attention Network architecture, using a proprietary 115B-token pretraining corpus plus 38B post-training tokens, and it adds device use and structured extraction to plain function calling.
- What hardware can actually run Needle 2?
- Needle 2 reaches 500 tokens per second of decode on a Raspberry Pi 5, 400–1,500 on VR headsets such as Meta Quest 3S and Apple Vision Pro, and 300–700 on sub-$200 phones like Samsung's A-Series. The roughly 28MB peak session RAM means it also fits newer microcontrollers, including the ESP32-S3.
- Can I fine-tune Needle 2 on my own product's tools?
- Yes, and Cactus designed for it. At 45M parameters, Needle 2 is small enough to retrain on the machine you develop on: the GitHub repo and the cactus-needle Python package handle tuning and testing on a Mac or PC in minutes to a few hours, so you can ship a model that speaks your device's tool vocabulary.
- What does Needle 2 do when a request is out of scope?
- Needle 2 refuses by returning an empty call rather than guessing. Every response also carries a learned confidence score, so a product can set a threshold: act above it, and re-ask or escalate to a cloud model below it. Cactus argues most device requests are routine control, so escalation stays rare.
Try it
pip install cactus-needle