Model reference · open weights
needle3 is an open-weight language model from Cactus-Compute. needle3 (BF16) weighs 242 MB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the Cactus-Compute/needle3 model card, 2026-10-01
What it is
| Released by | Cactus-Compute |
|---|---|
| Released | 2026-09-16 |
| VRAM | 242 MB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory |
|---|---|---|---|
| 8K each | |||
| RTX 3060 12 GB | 129 | all 8K | 11.6 GB |
| RTX 4060 Ti 16 GB | 175 | all 8K | 15.4 GB |
| RTX 3090 24 GB | 270 | all 8K | 23.4 GB |
| RTX 4090 24 GB | 269 | all 8K | 23.4 GB |
| RTX 5090 32 GB | 361 | all 8K | 31.0 GB |
| L40S 48 GB | 515 | all 8K | 44.0 GB |
| A100 80 GB | 923 | all 8K | 78.2 GB |
| H100 80 GB | 894 | all 8K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 1000+ | all 8K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 1000+ | all 8K | 107 GB |
| H200 141 GB | 1000+ | all 8K | 138 GB |
| B200 180 GB | 1000+ | all 8K | 176 GB |
| Requests at once | 8K tokens each |
|---|---|
| 1 | 802 MB |
| 5 | 1.1 GB |
| 8 | 1.4 GB |
| 16 | 2.1 GB |
| 32 | 3.4 GB |
| 64 | 6.1 GB |
One card, with vLLM's small-card settings.
From the model card
A foundation model for mobiles, wearables, robots, smart home, automotive and microcontrollers. The whole model is a single 8-29 MB file, and we trade general chat capacity to beat models 10x its size on mobile tool calls and match 2-3x bigger models on extraction.
Needle does three jobs, all of them on the device:
Needle 3 is a Laddered Simple Attention Network, our small-model recipe: a Monarch Hadamard MLP in place of the FFN, GQA attention with causal conv taps, engram n-gram memory read by gather, and multi-lane hyper-connections, trained so that every depth from 2 to 20 layers is a deployable model. Most of its parameters sit in the engram, so the 121M model does the arithmetic of a 50M one. The weights are compressed to CQ2-bit with Cactus Quants; a byte-level grammar compiled from your schemas constrains every token, and every response carries a calibrated confidence score from a learned head. The architecture diagram is on the release page. The repo holds the 20-layer needle3.cact, the needle3.safetensors checkpoint to fine-tune, and an engine per platform.
Tool calling is exact-match accuracy on the full test splits, extraction is field micro-F1 on the full test splits.
The interactive frontier plot, the architecture and the fine-tuning results are at cactuscompute.com/needle.
pip install cactus-needle
Try it in the browser at cactuscompute.com/needle; the Python package and the source are on GitHub.
import needle
@needle.tool
def get_weather(city: str):
"Get the current weather for a city."
return {"city": city, "temp_c": 27, "sky": "clear"}
agent = needle.Needle(tools=[get_weather])
print(agent.run("what's it like in Lagos right now?")["results"])
# [{'city': 'Lagos', 'temp_c': 27, 'sky': 'clear'}]
Every turn returns one JSON object with function_calls, the model's reasoning and a calibrated confidence; an off-topic request returns an empty list rather than a guess. The engine and the weights are fetched from this repo once and cached.
needle_embed.Needle was designed to be customised. Its capacity is a ladder, and a subnetwork as small as 2 layers, fine-tuned on one product's tools, runs optimally on devices far smaller than the full model needs. Fine-tuning on DroidCall lifts every subnetwork by 18 to 36 points, and from 4 layers up the tuned subnetwork passes DeepSeek V4 Flash, starting at 29M parameters.
The Python package fine-tunes with LoRA on the frozen base at the full 20 layers, then needle build [--layers N] merges the adapter, slices any subnetwork from 2 to 20 layers and exports a 4-bit .cact that runs on the same engine. The 2-bit post-training and quantisation behind the shipped model, enriched with Cactus proprietary datasets, run on the Cactus Platform.
Every platform folder in this repo holds an engine under 1 MB that loads needle3.cact at start. needle build --platform [--layers N] fetches the engine and header and puts the weights beside them at any depth, or download the folder here:
./needle --model needle3.cact --tools tools.json --prompt "dim the living room to 30"
./needle --model needle3.cact --tools tools.json --serve
The devices guide covers the runner flags, the C API, the WASI component and air-gapped setup.
Needle 3 is built by the Cactus Compute team. If you use it in your work, please cite:
@misc{needle3_2026,
title = {Needle: Foundation Tool-Calling Model for Tiny Devices},
author = {Ndubuaku, Henry and Mosoyan, Karen and Mroz, JaQuoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.