needle

+--------------------------------------------------------------+

On-device foundation model

Ask for something
no tool covers.
Get an empty list.

A small model that picks functions and fills arguments on the device. Its most useful behaviour is the one where it declines to invent a call.

pip install cactus-needle
behaviour, as documentedIllustrative

> ask for two things

function_calls: [ call_a, call_b ]

Two calls, returned in order.

> ask for something no tool covers

function_calls: [ ]

An empty list rather than a guess. This is the line worth designing the page around.

Shapes above illustrate the documented response contract, not a recorded run.
Every turn returns one object carrying the calls, the reasoning and a calibrated confidence score.

Tool calls

Given the functions your app exposes, it picks the right ones and fills every argument from what the user said.

Structured extraction

Declare a shape, hand over messy text, get typed fields back. The decode grammar guarantees the output parses.

Text embedding

The same model returns a vector for a sentence, so search and routing stay on the device.

Where it runs

A single binary of 8 to 29 MB. The project targets phones, wearables, smart homes, robots, cars and microcontrollers, and is explicit about the trade it made: general chat capacity given up in exchange for tool calling and extraction at that size. Apache 2.0.