Needle: A 26M Parameter Function-Calling Model That Runs at 6000 tok/s on Mobile
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 playgroundOpens a web UI at http://127.0.0.1:7860 for testing and fine-tuning on your own tools.
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
👀 See Also

Maestro v1.5.0 adds Claude Code support for multi-agent orchestration
Maestro v1.5.0, an open-source multi-agent orchestration platform, now runs as a native plugin on Claude Code in addition to Gemini CLI. The update includes deeper design planning, a 42-step orchestration backbone, agent capability enforcement, and security hardening.

Atelier v0.3 adds targeted markdown revisions with Claude Code
Atelier v0.3 is a free VS Code extension that lets you highlight sections of markdown documents and send them to Claude Code for revisions. The agent responds with targeted edits in the editor, and you can track which feedback each revision addresses.

LLMSpend: Open-source cost tracker for Anthropic and OpenAI SDKs
LLMSpend is a Python library that adds cost tracking to Anthropic and OpenAI SDK calls with two lines of code. It provides local SQLite storage, CLI reporting, and a web dashboard without sending data externally.

Wisepanel MCP Server Enables Multi-LLM Deliberation in Claude Code and Cursor
Wisepanel released an MCP server that runs multi-agent deliberations directly from Claude Code, Cursor, or any MCP client, using a divergent context enhancement system with ChatGPT, Claude, Gemini, and Perplexity models.