nicobailon/surf-cli

The CLI for AI agents to control Chrome. Zero config, agent-agnostic, battle-tested.

何を解決するか

Surfは、AIエージェントがChromeブラウザを制御するための、シンプルでエージェントに依存しないCLIを提供します。複雑なセットアップ、独自のAPIキー、または特定のAIプロバイダーへのロックインの必要性を排除し、エージェントが既存のブラウザのログイン情報やセッションを使用して、人間と同じようにウェブと対話することを可能にします。

仕組み

Surfは、Unixソケットを介してChrome拡張機能と通信するCLIツールとして動作します。CLIとブラウザを橋渡しするために、ネイティブメッセージングホストを使用します。このアーキテクチャにより、シェルコマンドを実行できるあらゆるツール(Claude Code、GPT、またはカスタムシェルスクリプトなど)で使用することが可能になります。

主な技術的特徴は以下の通りです:

  • Accessibility Tree Integration: アクセシビリティツリーからの安定した要素参照(e1, e2など)を使用するため、従来のCSSセレクターよりもDOMの変化に対して耐性があります。
  • Session Management: セッションシステムを実装しており、複数の独立したエージェントが互いに干渉することなく、同時にブラウザタブを操作することを可能にします。
  • Remote Access: Tailscale経由でのリモートブラウザ制御をサポートしており、安全な認証のために相互Ed25519チャレンジレスポンスを使用します。
  • Smart Defaults: トークンを節約するためにスクリーンショットを自動的にリサイズし、エージェントのラウンドトリップを減らすためにアクション後にスクリーンショットをキャプチャします。

対象者

ヘッドレスブラウザのクラスター管理や複雑なAPI統合のオーバーヘッドなしに、ウェブを閲覧したり、リサーチを行ったり、ウェブアプリケーションと対話したりする必要があるAIエージェントを構築している開発者。

ハイライト

  • Agent-Agnostic: CLIコマンドを実行できるあらゆるLLMまたはエージェントフレームワークで動作します。
  • Zero Config: npmとChrome拡張機能による迅速なインストール。
  • Semantic Locators: ARIAロール、テキスト、またはラベルによって要素を見つけ、対話します。
  • Harnesses Browser Cookies: APIキーの代わりに、既存のブラウザのログイン情報を使用して、ChatGPT、Gemini、PerplexityなどのAIサービスにクエリを実行します。
  • Iframe Support: フレーム間を切り替えて、ネストされたコンテンツと対話する能力。
  • Network Capture: APIコールのフィルタリングと再生のために、ネットワークリクエストを自動的にログに記録します。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト