Needle: A 26M Parameter Function-Calling Model That Runs at 6000 tok/s on Mobile

✍️ OpenClawRadar📅 Published: May 12, 2026🔗 Source
Ad

Cactus has open-sourced Needle, a 26M parameter function-calling model designed to run on budget phones, watches, and glasses. It achieves 6000 tok/s prefill and 1200 tok/s decode on consumer devices using their custom inference engine, Cactus.

Architecture: Simple Attention Networks

Needle uses a Simple Attention Network — no MLPs anywhere. The entire model consists of attention and gating layers. Key design: d=512, 8H/4KV, BPE=8192, with an encoder-decoder structure (12 encoder layers, 8 decoder layers) using cross-attention, masked self-attention with RoPE, and tied embeddings.

Training Details

  • Pretrained on 200B tokens across 16 TPU v6e (27 hours)
  • Post-trained on 2B tokens of synthesized function-calling data (45 minutes)
  • Data synthesized via Gemini with 15 tool categories (timers, messaging, navigation, smart home, etc.)

Benchmark Results

Needle beats FunctionGemma-270M, Qwen-0.6B, Granite-350M, and LFM2.5-350M on single-shot function calling. However, those models have more scope/capacity and excel in conversational settings.

Quickstart

git clone https://github.com/cactus-compute/needle.git
cd needle && source ./setup
needle playground

Opens a web UI at http://127.0.0.1:7860 for testing and fine-tuning on your own tools.

Ad

Usage (Python)

from needle import SimpleAttentionNetwork, load_checkpoint, generate, get_tokenizer

params, config = load_checkpoint("checkpoints/needle.pkl") model = SimpleAttentionNetwork(config) tokenizer = get_tokenizer()

result = generate( model, params, tokenizer, query="What's the weather in San Francisco?", tools='[{"name":"get_weather","parameters":{"location":"string"}}]', stream=False ) print(result)

[{"name":"get_weather","arguments":{"location":"San Francisco"}}]

Fine-tuning Locally

# via playground (auto-generates data via Gemini)

needle playground

or provide your own data

needle finetune data.jsonl

Availability

Weights are on Hugging Face: Cactus-Compute/needle. Everything is MIT licensed.

📖 Read the full source: HN AI Agents

Ad

👀 See Also

Approval Boundary Tool for Claude Code Repository Work
Tools

Approval Boundary Tool for Claude Code Repository Work

A developer built an approval boundary tool that adds a review step before local execution when using Claude Code for repository work. The tool follows a loop: see the plan first, approve once, let the run happen locally, and keep proof afterward.

OpenClawRadar
Claude Code Plugin for Reddit Market Research Without API Keys
Tools

Claude Code Plugin for Reddit Market Research Without API Keys

A Claude Code plugin automates Reddit market research by searching threads, analyzing content, and generating markdown reports with direct links. It requires no Reddit API key, auth, or config files, using public data through a local MCP server.

OpenClawRadar
Local Trello-Style Project Manager for OpenClaw Agents
Tools

Local Trello-Style Project Manager for OpenClaw Agents

A developer built a local Trello-like project management tool that runs on the same machine as their OpenClaw agent, storing cards as markdown files with YAML frontmatter. The system uses Node.js/Express for the API, React for the UI, and allows the AI agent to read/write files directly on the filesystem.

OpenClawRadar
Hubcap Bridge: Persistent Two-Way Messaging Between CLI and Browser JavaScript via CDP
Tools

Hubcap Bridge: Persistent Two-Way Messaging Between CLI and Browser JavaScript via CDP

Hubcap Bridge is a new feature in the Hubcap CLI tool that creates a persistent two-way message channel between local processes and JavaScript running in browser pages via the Chrome DevTools Protocol. It enables Claude Code skills to interact with web apps through their internal JavaScript APIs without requiring public API access.

OpenClawRadar