Trending: On-device modelsSearch
iHeartGeek
iTECH

Needle 2 turns a Raspberry Pi 5 into an action model

Cactus Compute's 14MB Needle 2 model turns plain English into local actions on a Raspberry Pi 5 using the CPU alone, with no cloud API in the loop.

A Raspberry Pi 5 with a black heatsink powered on beside a laptop, its green activity LED lit, with a terminal window showing Python commands that import the Needle library and return a get_temperature function call

A 14MB model can now turn a sentence into a working Python call on a Raspberry Pi 5 with no cloud account, no GPU and no accelerator board attached. Raspberry Pi has published a demonstration of Needle 2, a function-calling model from Cactus Compute, running on the board's CPU alone.

It is not a chatbot, and that is the point

Needle 2 was trained for one job: reliable, structured actions on a device. You write ordinary Python functions and decorate them, and the decorator builds the tool schema from each function's name, docstring and type annotations. Ask for the LED to come on and the model picks set_led and fills in the arguments; the function itself does the work, so nothing happens that your own code did not already allow.

Installation is a single pip command, and after the first download the model runs with no network connection at all. Ask it something outside the toolset and it returns no function call rather than inventing one, which is the correct answer for an action model and the opposite of what a general assistant would do.

How fast, and how small

The published timings are the interesting part, because they are ordinary embedded numbers rather than showcase ones. Switching the LED on took 78 milliseconds, blinking it twice took 83, taking a photo took 76, reading the CPU temperature took 149 and saving a note took 107. A deliberately unrelated question was refused in 92 milliseconds. Prefill ran at 461 to 488 tokens per second and decode at 248 to 314, all measured on a Raspberry Pi 5 with 8GB of memory running Raspberry Pi OS, with the cactus-needle package at version 2.0.7.

Memory is where the trade-off shows. Needle's native session sits at around 28MB, while the Python process running the demo peaked between 43MB and 46.4MB once the interpreter is counted. That is small enough to leave a Raspberry Pi 5 comfortable, and the post notes the model can be fine-tuned locally.

A narrow model on purpose

Eben Upton, Raspberry Pi's chief executive, calls Needle 2 rather excellent, which is a strong line from a company that sells the hardware it runs on. The case for it does not rest on the size of the model. It rests on the fact that the whole loop, from sentence to function call, closes on a board that costs less than a monthly subscription to a hosted model, and keeps working when the network does not.

Cactus Compute's project moves quickly. The public repository carries an Apache-2.0 licence, around 12,260 stars and dates back to February 2026, and the package on the Python index has already moved past the version used in the demonstration: 3.0.x arrived on 17 September 2026 and reached 3.0.4 on 21 September, with the project now describing the Needle 3 family as an 8 to 29MB model that scales to the device it targets. The 14MB figure belongs to the Needle 2 build Raspberry Pi used.

Our opinion

The most useful thing about this demonstration is the refusal. A model that answers no function call when none of the available tools fits is doing something a chat assistant will never do reliably, because the assistant has been trained to be helpful and inventing an answer is helpful. For anything that can switch a relay, unlock a door or spend money, the model that shuts up is worth more than the model that sounds clever.

It is also a reminder that the interesting end of on-device AI is not a smaller chatbot on your phone. It is the unglamorous middle, where a 14MB model replaces a pile of brittle string matching in a home automation script and nobody notices, because the light comes on when asked. That market will never produce a launch event, and it will quietly absorb more language models than any assistant ever will. Raspberry Pi publishing the benchmarks itself, including the slow one, is exactly how this should be done.