अपडेट पर वापस जाएँ
New releaseJul 26, 2026

kuri v0.4.14

ब्राउज़र ऑटोमेशन, वेब क्रॉलिंग, और AI एजेंटों के लिए iOS + Android डिवाइस नियंत्रण। Zig-नेटिव, टोकन-कुशल CDP स्नैपशॉट, HAR रिकॉर्डिंग, नेटिव adb वायर-प्रोटोकॉल क्लाइंट, और एक स्टैंडअलोन फ़ेचर।

साझा करें

Kuri

Kuri 🌰

Stable release License Zig node_modules status

स्थापित करें```sh

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

macOS arm64/x86_64 और Linux x86_64/arm64. एकल बाइनरी, कोई रनटाइम निर्भरता नहीं।

सीधे डाउनलोड: [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)

---

**AI एजेंटों के लिए ब्राउज़र स्वचालन और वेब क्रॉलिंग। Zig में लिखा गया। शून्य Node.js।**

CDP ऑटोमेशन · A11y स्नैपशॉट · HAR रिकॉर्डिंग · स्टैंडअलोन फ़ेचर · इंटरैक्टिव टर्मिनल ब्राउज़र · एजेंटिक CLI · सुरक्षा परीक्षण · iOS + Android डिवाइस नियंत्रण

[त्वरित आरंभ](#-quick-start) · [बेंचमार्क](#-benchmarks) · [kuri-agent](#-kuri-agent) · [सुरक्षा परीक्षण](#-security-testing) · [API](#-http-api) · [कौशल](#-skills) · [परिवर्तन लॉग](https://github.com/justrach/kuri/blob/main/CHANGELOG.md)

> **टीमें Kuri पर क्यों स्विच करती हैं:** वर्तमान Apple Silicon `ReleaseFast` बिल्ड प्रति बाइनरी 2 MB से कम रहते हैं, और 2026-04-23 को Google Flights के एक नए रीरन में पूरे `kuri-agent` लूप (`go→snap→click→snap→eval`) के लिए **3,392 टोकन** मापे गए। कोई प्रतिशत बताने से पहले क्रॉस-टूल डेल्टा को उसी वातावरण में दोबारा चलाया जाना चाहिए।

---

## Kuri एजेंटों के लिए क्यों जीतता है

अधिकांश ब्राउज़र टूलिंग QA इंजीनियरों के लिए बनाई गई थी। Kuri एजेंट लूप के लिए बनाया गया है: पेज पढ़ें, टोकन लागत कम रखें, स्थिर refs पर कार्य करें, और आगे बढ़ें।

- **135 HTTP एंडपॉइंट** — React निरीक्षण से Core Web Vitals तक, agent-browser और browser-use के साथ पूर्ण समानता।
- **वास्तविक पेजों पर agent-browser की तुलना में 7-12% कम टोकन**, `@eN` ref प्रारूप और ज़ीरो-प्रीफ़िक्स रेंडरिंग की बदौलत।
- **44x हल्के अवलोकन** — `/page/state` (48 टोकन) बनाम उसी Google Flights पेज का पूर्ण स्नैपशॉट (2,124 टोकन)।
- **बैच निष्पादन** — `POST /batch` एक HTTP कॉल में N कमांड भेजता है, जिससे N-1 राउंड-ट्रिप और N-1 LLM टर्न समाप्त हो जाते हैं।
- **React-संगत** — विश्वसनीय CDP माउस इवेंट और प्रति-कैरेक्टर की-इवेंट React 18/19 के `onClick` और `onChange` को ट्रिगर करते हैं।

### स्नैपशॉट टोकन: Google Flights `SIN → TPE`

इस वर्कस्पेस में 2026-05-24 को नया रीरन, `wc -c` और `chars/4` अनुमान से मापा गया।

| टूल / मोड | वर्ण | ~टोकन | नोट |
|---|---:|---:|---|
| `kuri snap` (पूर्ण) | 8,499 | **2,124** | सभी नोड + इंटरैक्टिव refs |
| `kuri snap` (केवल इंटरैक्टिव) | ~3,000 | **~750** | एजेंट लूप के लिए सर्वोत्तम |
| `kuri /page/state` | 190 | **48** | हल्का अवलोकन (url, शीर्षक, scroll%, गणनाएँ) |
| agent-browser snap (अनुमानित) | ~9,183 | **~2,295** | `[ref=e0]` प्रारूप ओवरहेड |

### टोकन दक्षता: kuri बनाम agent-browser

| पेज | kuri टोकन | agent-browser टोकन | बचत |
|---|---:|---:|---|
| example.com | 40 | 35 | -13% (साधारण पेज, agent-browser रूट छोड़ देता है) |
| Hacker News | 386 | ~440 | **12% कम** |
| Google Flights SIN→TPE | 2,124 | ~2,295 | **7% कम** |

बचत kuri के कॉम्पैक्ट प्रारूप से आती है:
- `@e0` refs (3 अक्षर) बनाम `[ref=e0]` (9 अक्षर)
- प्रति पंक्ति कोई `- ` उपसर्ग नहीं (2 अक्षर × पंक्ति गिनती बचाता है)
- समान इंडेंटेशन, समान नोड फ़िल्टरिंग

### पूर्ण वर्कफ़्लो लागत: `go → snap → click → snap → eval`

| टूल | प्रति चक्र टोकन |
|---|---:|
| **kuri-agent** | **~3,400** |
| दूसरे snap के बजाय `/page/state` के साथ | **~1,700** |
| `POST /batch` के साथ (सब कुछ एक कॉल में) | **~1,700** (समान टोकन, 5 के बजाय 1 HTTP कॉल) |

### kuri बनाम libretto

[libretto](https://github.com/saffron-health/libretto) (Playwright + Node) प्रति-चरण टोकन लागत पर सबसे नज़दीकी प्रतियोगी है। 2026-07-04 को आमने-सामने मापा गया — एक ही Chrome, एक ही टैब, वास्तविक `tiktoken` `o200k_base` गणनाएँ (पूर्ण कार्यप्रणाली और पुनरुत्पादन: **[benchmarks/libretto_comparison.md](https://github.com/justrach/kuri/blob/main/benchmarks/libretto_comparison.md)**)। सच्चा विभाजन:

| अक्ष | विजेता | विवरण |
|---|---|---|
| प्रति कॉल विलंबता | **kuri** | 4–117 ms बनाम 1,344–1,500 ms (**13–376× तेज़** — स्थायी सर्वर बनाम प्रति-कमांड Node) |
| स्नैपशॉट टोकन, सामान्य पेज | **kuri** | साधारण पेज 61 बनाम 151 (2.5×), लेख 265 बनाम 363 (1.37×) — सघन व्याकरण |
| स्नैपशॉट टोकन, बड़ी सूची | विभाजित | kuri डिफ़ॉल्ट 4,424 बनाम 813 — kuri सभी 259 refs जारी करता है, libretto डिफ़ॉल्ट रूप से छोटा कर देता है। `limit=5` के साथ kuri 555 टोकन रेंडर करता है (**libretto से 1.46× कम**), 34 refs + `… +45 more` मार्कर |
| ट्रैजेक्टरी (फ़ीड, 9 क्लिक) | **kuri**, बमुश्किल | 898 बनाम 939 टोकन (`limit=5` आधार + diff लूप बनाम exec लूप) — बराबरी से थोड़ी बढ़त तक; सुबह का 5.1× नुकसान बिना ट्रंकेशन वाला आधार था |
| दोहराए जाने वाले रन | **libretto** | ट्रैजेक्टरी को Playwright स्क्रिप्ट में संकलित करता है → 0-टोकन रीप्ले; kuri हर रन पर लूप की लागत फिर से चुकाता है |

**libretto का अध्ययन करके kuri ने क्या हासिल किया** (यह सब इस रिलीज़ में शामिल है): एक diff-प्रथम लूप (`take_snapshot_diff`, ~38 टोकन/चरण); एक अनुकूली diff जो नेविगेशन पर `! page replaced` हेडर के साथ पूर्ण स्नैपशॉट पर वापस आ जाता है; केवल-पहचान वाली निष्कासन पंक्तियाँ; स्क्रीनशॉट डिस्क पर लिखे जाते हैं (पथ लौटाया जाता है, बाइट्स कभी संदर्भ में नहीं आते); MCP पर `get_page_state`; और — `parseA11yNodes` को एक वास्तविक DFS ट्री वॉक के रूप में फिर से लिखने के बाद — **ऑप्ट-इन सूची ट्रंकेशन** (`/snapshot?limit=N`, प्रति सीमित रन एक `… +K more` पंक्ति), **स्कोप्ड पुनः-कैप्चर** (`scope=@ref`), और **पदानुक्रम इंडेंटेशन**, जो MCP `take_snapshot` पर `uid`/`limit` के रूप में भी उजागर होते हैं। वह 9-क्लिक फ़ीड ट्रैजेक्टरी, जो साधारण पूर्ण री-स्नैपशॉट के साथ 44,285 टोकन खर्च करती थी, अब ट्रंकेटेड आधार + diffs के साथ **898** की लागत आती है — 49× सस्ती, और libretto के 939 से भी आगे।

> ऊपर दी गई पुरानी तालिकाएँ `chars/4` टोकन अनुमान का उपयोग करती हैं; libretto तुलना वास्तविक `tiktoken` गणनाओं का उपयोग करती है। कोई प्रतिशत बताने से पहले क्रॉस-टूल संख्याओं को अपने स्वयं के वातावरण में दोबारा चलाएँ।

### बाइनरी आकार और मेमोरी

Apple M4 Pro, macOS 26.4.1 पर मापा गया। वर्तमान बाइनरी `-Doptimize=ReleaseFast` के साथ बनाई गई थीं।

| बाइनरी | वर्तमान आकार |
|---|---:|
| `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) |

### Zig 0.16 माइग्रेशन में RSS स्थिर रहा

वर्तमान `v0.4.3` `ReleaseFast` बिल्ड के विरुद्ध `/usr/bin/time -l` से मापा गया।

| कमांड | `v0.4.3` औसत अधिकतम RSS |
|---|---:|
| `kuri-fetch --version` | ~2.45 MiB |
| `kuri-browse --version` | ~2.45 MiB |
| `kuri-fetch --quiet --dump markdown http://example.com/` | ~9.17 MiB |

## समस्या

हर ब्राउज़र ऑटोमेशन टूल अपने साथ Playwright (~300 MB), एक Node.js रनटाइम, और npm निर्भरताओं का झरना खींच लाता है। आपका AI एजेंट बस एक पेज पढ़ना, एक बटन क्लिक करना, और आगे बढ़ना चाहता है।
**Kuri एक एकल Zig बाइनरी है।** चार मोड, शून्य रनटाइम:```
kuri           →  CDP server (Chrome automation, a11y snapshots, HAR)
kuri-fetch     →  standalone fetcher (no Chrome, QuickJS for JS, ~2 MB)
kuri-browse    →  interactive terminal browser (navigate, follow links, search)
kuri-agent     →  agentic CLI (scriptable Chrome automation + security testing)

📦 स्थापना

श्रेणियाँ