
kuri v0.4.14
ブラウザ自動化、Webクローリング、iOSおよびAndroidデバイス制御をAIエージェント向けに提供。Zigネイティブ、トークン効率の良いCDPスナップショット、HAR記録、ネイティブなadbワイヤープロトコルクライアント、そしてスタンドアロンフェッチャー。
Kuri 🌰
インストール
curl -fsSL https://kuri.trilok.ai/download | sh
macOS arm64/x86_64 および Linux x86_64/arm64。単一バイナリ、ランタイム依存なし。
直接ダウンロード: macOS arm64 · macOS x86_64 · Linux x86_64 · Linux arm64
AI エージェント向けのブラウザ自動化と Web クローリング。Zig で書かれています。Node.js は不要。
CDP 自動化 · A11y スナップショット · HAR 記録 · スタンドアロンフェッチャー · インタラクティブ端末ブラウザ · エージェント CLI · セキュリティテスト · iOS + Android デバイス制御
クイックスタート · ベンチマーク · kuri-agent · セキュリティテスト · API · スキル · 変更履歴
チームが Kuri に乗り換える理由: 現在の Apple Silicon
ReleaseFastビルドはバイナリあたり 2 MB 未満に収まり、2026-04-23 に再実行した Google Flights の計測では、完全なkuri-agentループ(go→snap→click→snap→eval)で 3,392 トークンでした。ツール間の差分をパーセンテージで引用する前に、同じ環境で再実行してください。
エージェントにとって Kuri が優れている理由
ほとんどのブラウザツールは QA エンジニア向けに作られています。Kuri はエージェントループ向けに作られています。ページを読み、トークンコストを低く抑え、安定した参照に対して操作し、次へ進みます。
- 135 個の HTTP エンドポイント — React の検査から Core Web Vitals まで、agent-browser および browser-use と完全な同等性。
- 実際のページで agent-browser より 7~12% 少ないトークン。
@eN参照形式とゼロプレフィックスレンダリングのおかげです。 - 同じ Google Flights ページで、
/page/state(48 トークン)は完全スナップショット(2,124 トークン)より 44 倍軽量な観測。 - バッチ実行 —
POST /batchは N 個のコマンドを 1 回の HTTP 呼び出しで送信し、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 | 全ノード + インタラクティブ参照 |
kuri snap(インタラクティブのみ) | ~3,000 | ~750 | エージェントループに最適 |
kuri /page/state | 190 | 48 | 軽量な観測(url、title、scroll%、カウント) |
| agent-browser snap(推定) | ~9,183 | ~2,295 | [ref=e0] 形式のオーバーヘッド |
トークン効率: kuri vs 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参照(3 文字)vs[ref=e0](9 文字)- 行ごとの
-プレフィックスなし(2 文字 × 行数を節約) - 同じインデント、同じノードフィルタリング
完全なワークフローコスト: go → snap → click → snap → eval
| ツール | サイクルあたりのトークン |
|---|---|
| kuri-agent | ~3,400 |
2 回目の snap の代わりに /page/state を使用 | ~1,700 |
POST /batch を使用(すべて 1 回の呼び出し) | ~1,700(同じトークン、5 回ではなく 1 回の HTTP 呼び出し) |
kuri vs libretto
libretto(Playwright + Node)は、ステップあたりのトークンコストにおいて最も近い競合です。2026-07-04 に直接比較計測 — 同じ Chrome、同じタブ、実際の tiktoken o200k_base カウント(完全な方法論と再現手順: benchmarks/libretto_comparison.md)。正直な内訳:
| 軸 | 勝者 | 詳細 |
|---|---|---|
| 呼び出しあたりのレイテンシ | kuri | 4~117 ms vs 1,344~1,500 ms(13~376 倍高速 — 永続サーバー vs コマンドごとの Node) |
| スナップショットトークン、典型的なページ | kuri | シンプル 61 vs 151(2.5 倍)、記事 265 vs 363(1.37 倍) — より簡潔な文法 |
| スナップショットトークン、大きなリスト | 分割 | kuri デフォルト 4,424 vs 813 — kuri は 259 個の参照をすべて出力、libretto はデフォルトで切り捨て。limit=5 では kuri は 555 トークン(libretto より 1.46 倍少ない)、34 個の参照 + … +45 more マーカー |
| トラジェクトリ(フィード、9 クリック) | kuri、わずかに | 898 vs 939 トークン(limit=5 ベース + diff ループ vs exec ループ) — 同等からわずかな優位。朝の 5.1 倍の損失は切り捨てなしのベースでした |
| 繰り返し実行 | libretto | トラジェクトリを Playwright スクリプトにコンパイル → 0 トークンのリプレイ。kuri は毎回ループを再支払い |
libretto の研究から kuri が得たもの(すべて今回のリリースで出荷): diff 優先ループ(take_snapshot_diff、~38 トークン/ステップ)。ナビゲーション時に ! page replaced ヘッダー付きで完全スナップショットにフォールバックする適応型 diff。ID のみの削除行。ディスクに書き込まれるスクリーンショット(パスが返され、バイトはコンテキストに入らない)。MCP 上の get_page_state。そして — parseA11yNodes を真の DFS ツリーウォークとして書き直した後 — オプトインのリスト切り捨て(/snapshot?limit=N、上限付き実行ごとに 1 行の … +K more)、スコープ付き再キャプチャ(scope=@ref)、階層インデント。これらは MCP take_snapshot の uid/limit としても公開されています。素朴な完全再スナップショットで 44,285 トークンを要した 9 クリックのフィードトラジェクトリは、切り捨てベース + diff で 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) |
RSS は Zig 0.16 移行を通じて横ばいを維持
現在の 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 バイナリです。 4 つのモード、ランタイムゼロ:
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)
📦 インストール
ワンラインインストール (macOS / Linux)
curl -fsSL https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/install.sh | sh
プラットフォームを検出し、適切なバイナリをダウンロードして ~/.local/bin にインストールします。
ダウンロードは Kuri が自己管理する release-channel ブランチから行われます。macOS バイナリは Developer ID 証明書でローカル署名されています。GitHub Release のアセットはこれらの同一の tarball をミラーしています。
bun / npm
bun install -g kuri-agent
# or: npm install -g kuri-agent
インストール時に、お使いのプラットフォームに適したネイティブバイナリをダウンロードします。
リリースチャネル
Kuri の安定版バイナリは release-channel ブランチにあり、GitHub の raw URL から直接配信されています。
- 安定版インストーラー:
https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/install.sh - 安定版マニフェスト:
https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/latest.json - ブランチ表示:
https://github.com/justrach/kuri/tree/release-channel/stable - 直接ダウンロードのパターン:
https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/<version>/kuri-<version>-<target>.tar.gz
手動
安定版リリースマニフェスト または GitHub Releases ページ からお使いのプラットフォーム用の tarball をダウンロードし、$PATH に展開してください。
安定版インストール URL:
curl -fsSL https://raw.githubusercontent.com/justrach/kuri/release-channel/stable/install.sh | sh
マニフェストには、aarch64-linux、x86_64-linux、aarch64-macos、x86_64-macos の正確なアセットURLとSHA-256チェックサムが含まれています。