Zurück zu den Updates
New releaseJul 26, 2026

kuri v0.4.14

Browser-Automation, Web-Crawling und iOS + Android Gerätesteuerung für KI-Agenten. Zig-nativ, token-effiziente CDP-Snapshots, HAR-Aufzeichnung, nativer adb Wire-Protocol-Client und ein eigenständiger Fetcher.

Teilen

Kuri

Kuri 🌰

Stabile Version Lizenz Zig node_modules Status

Installation```sh

curl -fsSL https://kuri.trilok.ai/download | sh

macOS arm64/x86_64 und Linux x86_64/arm64. Ein einzelnes Binary, keine Laufzeitabhängigkeiten.

Direkte Downloads: [macOS arm64](https://kuri.trilok.ai/download/v0.6.0/kuri-v0.6.0-aarch64-macos.tar.gz) · [macOS x86_64](https://kuri.trilok.ai/download/v0.6.0/kuri-v0.6.0-x86_64-macos.tar.gz) · [Linux x86_64](https://kuri.trilok.ai/download/v0.6.0/kuri-v0.6.0-x86_64-linux.tar.gz) · [Linux arm64](https://kuri.trilok.ai/download/v0.6.0/kuri-v0.6.0-aarch64-linux.tar.gz)

---

**Browser-Automatisierung & Web-Crawling für KI-Agenten. Geschrieben in Zig. Kein Node.js.**

CDP-Automatisierung · A11y-Snapshots · HAR-Aufzeichnung · Eigenständiger Fetcher · Interaktiver Terminal-Browser · Agentische CLI · Sicherheitstests · iOS + Android-Gerätesteuerung

[Schnellstart](#-quick-start) · [Benchmarks](#-benchmarks) · [kuri-agent](#-kuri-agent) · [Sicherheitstests](#-security-testing) · [API](#-http-api) · [Fähigkeiten](#-skills) · [Changelog](https://github.com/justrach/kuri/blob/main/CHANGELOG.md)

> **Warum Teams auf Kuri umsteigen:** Aktuelle `ReleaseFast`-Builds für Apple Silicon bleiben unter 2 MB pro Binary, und ein frischer Google-Flights-Durchlauf am 2026-04-23 maß **3,392 Token** für eine vollständige `kuri-agent`-Schleife (`go→snap→click→snap→eval`). Toolübergreifende Differenzen sollten in derselben Umgebung neu gemessen werden, bevor ein Prozentsatz genannt wird.

---

## Warum Kuri für Agenten gewinnt

Die meisten Browser-Tools wurden für QA-Ingenieure gebaut. Kuri ist für Agentenschleifen gebaut: Seite lesen, Token-Kosten niedrig halten, auf stabile Referenzen reagieren und weitermachen.

- **135 HTTP-Endpunkte** — volle Parität mit agent-browser und browser-use, von der React-Inspektion bis zu Core Web Vitals.
- **7-12% weniger Token** als agent-browser auf echten Seiten dank `@eN`-Referenzformat und Zero-Prefix-Rendering.
- **44x leichtere Beobachtungen** mit `/page/state` (48 Token) gegenüber vollständigem Snapshot (2,124 Token) für dieselbe Google-Flights-Seite.
- **Batch-Ausführung** — `POST /batch` sendet N Befehle in einem HTTP-Aufruf und eliminiert N-1 Round-Trips und N-1 LLM-Turns.
- **React-kompatibel** — echte CDP-Mausereignisse und zeichenweise Tastaturereignisse lösen React 18/19 `onClick` und `onChange` aus.

### Snapshot-Token: Google Flights `SIN → TPE`

Frischer Durchlauf am 2026-05-24 in diesem Workspace, gemessen mit `wc -c` und `chars/4`-Näherung.

| Tool / Modus | Zeichen | ~Token | Hinweis |
|---|---:|---:|---|
| `kuri snap` (vollständig) | 8,499 | **2,124** | Alle Knoten + interaktive Referenzen |
| `kuri snap` (nur interaktiv) | ~3,000 | **~750** | Am besten für Agentenschleifen |
| `kuri /page/state` | 190 | **48** | Leichte Beobachtung (url, title, scroll%, counts) |
| agent-browser snap (geschätzt) | ~9,183 | **~2,295** | Overhead durch `[ref=e0]`-Format |

### Token-Effizienz: kuri vs. agent-browser

| Seite | kuri-Token | agent-browser-Token | Ersparnis |
|---|---:|---:|---|
| example.com | 40 | 35 | -13% (triviale Seite, agent-browser überspringt Root) |
| Hacker News | 386 | ~440 | **12% weniger** |
| Google Flights SIN→TPE | 2,124 | ~2,295 | **7% weniger** |

Die Ersparnis ergibt sich aus kuris kompaktem Format:
- `@e0`-Referenzen (3 Zeichen) vs. `[ref=e0]` (9 Zeichen)
- Kein `- `-Präfix pro Zeile (spart 2 Zeichen × Zeilenanzahl)
- Gleiche Einrückung, gleiche Knotenfilterung

### Vollständige Workflow-Kosten: `go → snap → click → snap → eval`

| Tool | Token pro Zyklus |
|---|---:|
| **kuri-agent** | **~3,400** |
| Mit `/page/state` statt zweitem Snap | **~1,700** |
| Mit `POST /batch` (alles in einem Aufruf) | **~1,700** (gleiche Token, 1 HTTP-Aufruf statt 5) |

### kuri vs. libretto

[libretto](https://github.com/saffron-health/libretto) (Playwright + Node) ist der engste Konkurrent bei den Token-Kosten pro Schritt. Direkt im Vergleich gemessen am 2026-07-04 — gleiches Chrome, gleicher Tab, echte `tiktoken`-`o200k_base`-Zählungen (vollständige Methodik und Reproduktion: **[benchmarks/libretto_comparison.md](https://github.com/justrach/kuri/blob/main/benchmarks/libretto_comparison.md)**). Die ehrliche Aufteilung:

| Achse | Gewinner | Detail |
|---|---|---|
| Latenz pro Aufruf | **kuri** | 4–117 ms vs. 1,344–1,500 ms (**13–376× schneller** — persistenter Server vs. Node-pro-Befehl) |
| Snapshot-Token, typische Seite | **kuri** | einfach 61 vs. 151 (2.5×), Artikel 265 vs. 363 (1.37×) — straffere Grammatik |
| Snapshot-Token, große Liste | geteilt | kuri Standard 4,424 vs. 813 — kuri emittiert alle 259 Referenzen, libretto kürzt standardmäßig. Mit `limit=5` rendert kuri 555 Token (**1.46× unter libretto**), 34 Referenzen + `… +45 more`-Marker |
| Trajektorie (Feed, 9 Klicks) | **kuri**, knapp | 898 vs. 939 Token (`limit=5`-Basis + Diff-Schleife vs. Exec-Schleife) — Parität bis leichter Vorsprung; der 5.1×-Verlust am Morgen war die ungekürzte Basis |
| Wiederholte Läufe | **libretto** | kompiliert Trajektorien zu einem Playwright-Skript → 0-Token-Wiedergaben; kuri zahlt die Schleife bei jedem Lauf erneut |

**Was kuri aus der Untersuchung von libretto gewonnen hat** (alles in diesem Release enthalten): eine diff-first-Schleife (`take_snapshot_diff`, ~38 Token/Schritt); ein adaptiver Diff, der bei Navigation auf einen vollständigen Snapshot mit `! page replaced`-Header zurückfällt; Entfernungszeilen nur mit Identität; Screenshots, die auf die Festplatte geschrieben werden (Pfad wird zurückgegeben, Bytes gelangen nie in den Kontext); `get_page_state` über MCP; und — nachdem `parseA11yNodes` als echter DFS-Tree-Walk neu geschrieben wurde — **optionale Listenkürzung** (`/snapshot?limit=N`, eine `… +K more`-Zeile pro begrenztem Lauf), **bereichsbezogene Neuerfassung** (`scope=@ref`) und **Hierarchie-Einrückung**, ebenfalls als `uid`/`limit` im MCP-`take_snapshot` verfügbar. Die 9-Klick-Feed-Trajektorie, die mit naiven vollständigen Re-Snapshots 44,285 Token kostete, kostet mit gekürzter Basis + Diffs **898** — 49× günstiger und besser als librettos 939.

> Die älteren Tabellen oben verwenden eine `chars/4`-Token-Näherung; der libretto-Vergleich verwendet echte `tiktoken`-Zählungen. Führen Sie die toolübergreifenden Zahlen in Ihrer eigenen Umgebung erneut aus, bevor Sie einen Prozentsatz angeben.

### Binary-Größe und Speicher

Gemessen auf Apple M4 Pro, macOS 26.4.1. Die aktuellen Binaries wurden mit `-Doptimize=ReleaseFast` erstellt.

| Binary | Aktuelle Größe |
|---|---:|
| `kuri` | 1,093,840 B (1.04 MiB) |
| `kuri-agent` | 629,904 B (615 KiB) |
| `kuri-browse` | 1,089,120 B (1.04 MiB) |
| `kuri-fetch` | 2,063,488 B (1.97 MiB) |

### RSS blieb über die Zig-0.16-Migration hinweg stabil

Gemessen gegen den aktuellen `v0.4.3`-`ReleaseFast`-Build mit `/usr/bin/time -l`.

| Befehl | `v0.4.3` mittlerer max. RSS |
|---|---:|
| `kuri-fetch --version` | ~2.45 MiB |
| `kuri-browse --version` | ~2.45 MiB |
| `kuri-fetch --quiet --dump markdown http://example.com/` | ~9.17 MiB |

## Das Problem

Kategorien