Needle: Ein 8 bis 29 MB großes „Automatisierungs-Basismodell“ für Werkzeugaufrufe und strukturierte Extraktion auf Handys, Wearables und Mikrocontrollern
cactus-compute/needle ist ein Ein-Datei-Modell von 8 bis 29 MB für drei Aufgaben: aus den von einer App bereitgestellten Funktionen Werkzeugaufrufe wählen und füllen, aus unordentlichem Text typisierte Felder extrahieren und Satz-Embeddings liefern. Es nutzt das Laddered Simple Attention Network von Cactus Compute, bei dem jede Tiefe von 2 bis 20 Schichten einzeln einsetzbar ist, und bringt mit Whistle ein 16,9 MB großes Spracherkennungsmodell mit. Apache-2.0-Lizenz, etwa 13,9 Tsd. Sterne. Die Leistungsvergleiche stammen aus der README des Projekts und warten auf unabhängige Nachprüfung.
Needle ist ein sehr kleines Open-Source-Modell des Teams von Cactus Compute: Das ganze Modell ist ein Binary von 8 bis 29 MB, gedacht für Handys, Uhren und Wearables, Roboter, Smart Homes, Autos und sogar Mikrocontroller. Das Projekt nennt es ein „Automatisierungs-Basismodell“ und sagt, es habe allgemeine Chatfähigkeit gegen Ergebnisse getauscht: Bei mobilen Werkzeugaufrufen schlage es Modelle der zehnfachen Größe, bei Extraktion halte es mit zwei- bis dreimal größeren mit. Diese Vergleiche stammen aus der README, eine Nachprüfung durch Dritte sahen wir nicht; sie sind als Eigenangaben zu lesen. Stand 13. Oktober 2026 hat das Repository etwa 13.887 Sterne und 940 Forks, eine Apache-2.0-Lizenz, überwiegend Python-Code und einen letzten Push am 11. Oktober.
Was es leistet, ist konkret. Erstens Werkzeugaufrufe: Aus den von der App bereitgestellten Funktionen wählt Needle die passenden und füllt jedes Argument aus der Äußerung des Nutzers. Zwei Wünsche ergeben zwei Aufrufe in Reihenfolge; was kein Werkzeug abdeckt, ergibt eine leere Liste statt einer Vermutung. Zweitens strukturierte Extraktion: Man deklariert eine Form, etwa Rechnung, Buchung, Benachrichtigung oder Formular, gibt unordentlichen Text hinein und erhält typisierte Felder; eine Dekodiergrammatik garantiert, dass die Ausgabe parsebar ist, und die Extraktion lässt sich auf Klassifikation verallgemeinern. Drittens Text-Embeddings: Dasselbe Modell liefert einen Vektor für einen Satz, sodass eine App lokal suchen, abgleichen und routen kann. Viertens teilt das Schwestermodell Whistle, ein 16,9 MB großes Spracherkennungsmodell, Container und Engine mit Needle: Ein Build gibt Needle Audioeingabe, der Clip geht hinein, die Werkzeugaufrufe kommen heraus.
Die Einstiegshürde ist niedrig. Nach pip install cactus-needle markiert man eine Python-Funktion per Dekorator als Werkzeug: Die Signatur liefert die Argumenttypen, der Docstring die Beschreibung, und agent.run schließt die Schleife, indem es die Funktion ausführt und Ergebnisse zurückgibt. Jeder Durchlauf liefert ein JSON mit function_calls, dem Reasoning des Modells und einer kalibrierten Konfidenz, nach der eine App handeln, bestätigen lassen oder ablehnen kann. Für den Einsatz auf einem Gerät holt ein Befehl wie needle build --platform macos-arm64 die vorgebaute Engine und legt die Gewichte needle3.cact daneben. Das Repository nennt macOS- und Linux-ARM64-Ziele und enthält Hinweise für Browser- und WASI-Builds.
Die Architektur ist das eigentlich Andere. Needle 3 ist ein „Laddered Simple Attention Network“: ein Monarch-Hadamard-MLP statt der Feed-Forward-Schicht, Grouped-Query-Attention mit kausalen Faltungsabgriffen, ein per Gather gelesener Engram-n-Gramm-Speicher und mehrspurige Hyperverbindungen, trainiert so, dass jede Tiefe von 2 bis 20 Schichten einsetzbar ist. Die meisten Parameter liegen im Engram, sodass das 121-Mio.-Modell die Rechenarbeit eines 50-Mio.-Modells leistet. Eine aus Ihren Schemata kompilierte Grammatik auf Byte-Ebene beschränkt jedes Token, und jede Antwort trägt einen kalibrierten Konfidenzwert. Die Logik dahinter: Auf Geräten mit nur wenigen Dutzend Megabyte lohnt es sich mehr, Kapazität in nachschlageartigen Speicher zu stecken als in allgemeines Schlussfolgern.
Feinabstimmung ist der zweite Schwerpunkt. Laut README hebt Feinabstimmung auf DroidCall jedes Teilnetz um 18 bis 36 Punkte, und ab 4 Schichten mit 29 Mio. Parametern übertrifft das abgestimmte Teilnetz DeepSeek V4 Flash. Lokal werden LoRA-Adapter auf den Attention-Projektionen trainiert, Basis eingefroren, beim Export zusammengeführt, mit 4 Bit, auf dem eigenen Rechner mit JAX. Die Plattform-Feinabstimmung trainiert das ganze Modell mit 2 Bit, braucht einen Cactus-API-Schlüssel und kann Ihre Daten mit Needles Originaldatensatz verstärken, damit nichts Gelerntes verlernt wird. Für Whistle gilt: 8,6-mal kleiner als Whisper base und 6,6-mal schneller beim ersten Token, vorn bei LibriSpeech, SPGISpeech, Earnings-22 und dem FLEURS-Durchschnitt, hinten bei TED-LIUM, AMI und dem MLS-Durchschnitt, für Englisch, Deutsch, Französisch, Spanisch, Italienisch, Niederländisch und Polnisch.
Unsere Einordnung: Needle macht aus einem sehr konkreten Bedarf ein sehr kleines Produkt. Hat Ihre App bereits eine klare Menge an Funktionen und soll Sprache oder Text zuverlässig auf Aufrufe abbilden, ist es viel billiger als ein großes Modell und läuft offline. Die Risiken sind ebenso konkret. Alle Benchmarks stammen aus der README des Projekts. Telemetrie ist im Binary standardmäßig an, bei datenschutzsensiblen Einsätzen sind NEEDLE_TELEMETRY=0 und DO_NOT_TRACK=1 zu setzen. Und es chattet nicht und schlussfolgert nicht in offenen Domänen; ändert sich Ihre Funktionsmenge oft, sollte man die Kosten für Feinabstimmung und Datenerzeugung abwägen. Machen Sie eine kleine Auswertung mit Ihrer echten Werkzeugliste und echten Sprachproben, bevor Sie Cloud-Aufrufe ersetzen.
Sources
FAQ
Was kann Needle, und was nicht?
Es erledigt drei Dinge: aus den von einer App bereitgestellten Funktionen Werkzeugaufrufe wählen und jedes Argument füllen (passt kein Werkzeug, kommt eine leere Liste statt einer Vermutung), aus unordentlichem Text typisierte Felder in einer deklarierten Form extrahieren und Sätze für lokale Suche und Routing einbetten. Das Projekt sagt offen, dass es dafür die Fähigkeit zum allgemeinen Chat opfert.
Was bringt das „Leiter“-Design in der Praxis?
Jede Tiefe von 2 bis 20 Schichten ist ein einsetzbares Modell, dieselben Gewichte lassen sich also auf die Gerätegröße zuschneiden. Laut README hebt Feinabstimmung auf DroidCall jedes Teilnetz um 18 bis 36 Punkte, und ab 4 Schichten (29 Mio. Parameter) übertrifft das abgestimmte Teilnetz DeepSeek V4 Flash. Das sind die eigenen Ergebnisse des Projekts.
Worauf sollte man achten?
Telemetrie ist im Binary standardmäßig an; mit NEEDLE_TELEMETRY=0 und DO_NOT_TRACK=1 schaltet man sie ab. Die Vergleiche stammen aus der README, eine unabhängige Bewertung fehlt. Lokale Feinabstimmung trainiert nur LoRA-Adapter mit 4 Bit, die Plattform-Feinabstimmung das ganze Modell und braucht einen Cactus-API-Schlüssel.