Cactus Compute announced the launch of Needle 2, an open 45-million-parameter model for tool calling, device use, and structured extraction. The model is distributed in a single 14 MB binary and runs a complete session using about 28 MB of RAM, with no need for a runtime or download during inference.

According to the company, the weights are trained and deployed in CQ2-bit precision, developed by the company itself, and the model runs on a closed C++ engine. Cactus Compute says the choice of 45 million parameters is based on the premise that mapping a sentence to a typed function signature does not require world knowledge or open-ended text generation. The model was designed for hardware without a GPU or NPU, with a reported decoding rate of 500 tokens per second on a Raspberry Pi 5.

Performance in Benchmarks

In public function-calling evaluations, Needle 2 scored 32.6 on Seal-Tools in-domain and 28.7 on OOD, surpassing the LFM2.5 230M and FunctionGemma 270M models. On Mobile Actions, it recorded 63.7 overall accuracy and 98.3 precision on function names. On BFCL v4 single-turn, the model registered 42.6, below competitors; Cactus Compute attributes the result to the training base's specialization in consumer device actions, rather than general or enterprise APIs.

Architecture and Deployment

The model uses an architecture called Simple Attention Network, which replaces the feed-forward network with a Hadamard MLP, keeps GQA attention, and adds engram memory based on hashed n-gram tables. The network has 27 layers and a width of 512. During inference, attention uses a sliding window of 256 tokens, and tool declarations remain fixed, which keeps RAM usage at about 28 MB regardless of conversation length.

Needle 2 is distributed as precompiled binaries and a static library for macOS, Linux (x86-64, ARM64, ARMv7, RISC-V, MIPS32el), Windows, Android, iOS/watchOS/tvOS, and WebAssembly. Cactus Compute says that the Pebble device already uses the model in the Index 01 app for offline voice commands. Each model response includes a confidence value; out-of-scope requests return the empty call [].

More from Radar