ego (lite) is just a browser, ego is your personal agent across devices.
Join waitlist
日本語

クイックスタート

5 分で ego lite をインストールし、Agent CLI から最初のブラウザタスクを動かす。

llms.txt

5 分で ego lite をインストールし、Agent CLI から最初のブラウザタスクを走らせます。

動作環境

  • macOS 12.0 以降
  • Agent CLI のいずれか: Claude Code、OpenAI Codex、Cursor、Continue、Gemini CLI、Hermes Agent、OpenClaw、Opencode

インストール

お好みの方法を選んでください。

macOS インストーラーをダウンロード

ダブルクリックでインストールします。初回起動時、ego lite はマシン上にインストール済みの Agent CLI を検出し、それぞれの skill ディレクトリに ego-browser skill を書き込みます。

コマンドラインからインストール

任意の Agent CLI のターミナルで実行します:

curl -fsSL https://lite.ego.app/install.sh | sh

このコマンドで ego lite ブラウザと ego-browser helper がインストールされ、マシン上のすべての Agent CLI に skill が登録されます。

ego lite を初めて起動すると、1 つだけ質問されます。ブラウザのデータを移行しますか?続いて対応するブラウザを選んで確定すれば、ログイン状態、cookie、拡張機能、Profile がそのまま引き継がれ、エージェントもそのまま利用できます。

最初のタスク

Agent CLI で / を入力して skill ピッカーを開き、/ego-browser を選んで、自然言語でタスクを記述します:

/ego-browser follow @ego_agent on x.com for me

skill のコンテキストを読み込んだあと、エージェントは次のコードを生成して実行します:

ego-browser nodejs <<'EOF'
await useOrCreateTaskSpace('follow-ego-agent')
await openOrReuseTab('https://x.com/ego_agent', { wait: true })

await snapshotText()
// 返ってくるのは @ego_agent のプロフィールページ。ref が数百ある SPA です。
// Follow ボタンの accessible name は "Follow @ego_agent"。この実行では ref が @92 になります。

await click('@92')
await wait(3)  // X が follow を反映して再レンダリングするまで 3 秒待ちます

await snapshotText()
// click 後、同じボタンのラベルが "Follow @ego_agent" から "Following @ego_agent" に変わります。ref は変わりません。

cliLog('Done. @ego_agent followed.')
EOF

このコードで注目したいのは 2 点です:

  • エージェントが操作するのは snapshotText() が返す ref(@92)であって、CSS セレクタではありません。ref は要素を人がどう知覚するかを反映していて(ボタンの accessible name は実際に "Follow @ego_agent" です)、X がクラス名をどう入れ替えても壊れません。ref はスナップショットごとに割り振られるので、実際に見える番号は例とは違います。
  • エージェントは Chrome から移行した X のログイン状態を使います。再ログインや cookie の貼り付け、OAuth フローは不要です。最初のスナップショットの時点で、すでにログイン済みなので Follow ボタンはクリック可能な状態になっています。

エージェントの作業を見る

タスクが走り出したら、ego lite を開き、サイドバーの Space パネルをクリックしてください。実行中の Space がハイライトされます。そこに入ると、エージェントの操作がリアルタイムで見えます。遷移、スクロール、スナップショット、データ抽出のすべてです。

Space ビュー下部にはボタンが 2 つあります:

  • 引き継ぐ (Take over): 現在のタブをエージェントから受け取り、自分で操作します。
  • 停止 (Stop): タスクを即座に終了します。

ページを操作する

click は ref ベースの操作のひとつにすぎません。filltypepressKeyhoverselect も同じ流れで使えます。一度スナップショットを取り、対象の ref を選び、それに対して操作します。ログインフローの例です:

ego-browser nodejs <<'EOF'
await useOrCreateTaskSpace('example-login')
await openOrReuseTab('https://example.com/login', { wait: true })

await snapshotText()
// 返ってくる内容はだいたいこんな感じです:
//   @3 [input type="email"]    placeholder="Email"
//   @4 [input type="password"] placeholder="Password"
//   @5 [button type="submit"]  "Continue"

await fill('@3', 'user@example.com')
await fill('@4', 'your-password')
await click('@5')
await waitForLoad()

const tab = await currentTab()
cliLog('Logged in:', tab.url)
EOF

オンボーディングで Chrome データを移行していて、そもそも Chrome がこのサイトにログインしていれば、openOrReuseTab はそのままログイン後のページにエージェントを連れていきます。スナップショットはログインフォームではなくダッシュボードを返し、エージェントはフォーム入力をスキップして次の手に進めます。

複数のタスクを並列で動かす

各 Space は useOrCreateTaskSpace に渡した名前で識別されます。名前が違えば衝突しないので、同時に動かせます:

# Claude Code をひとつのターミナルで
ego-browser nodejs <<'EOF'
await useOrCreateTaskSpace('leads-enrichment')
await openOrReuseTab('https://www.linkedin.com', { wait: true })
EOF
# 同時に、別のターミナルで Codex
ego-browser nodejs <<'EOF'
await useOrCreateTaskSpace('qa-regression')
await openOrReuseTab('https://staging.example.com', { wait: true })
EOF

次に読むもの

  • ego-browser — helper の全リスト、ページ側 js() コンテキスト、生 CDP アクセス
  • Space — Space のライフサイクルと命名規則
  • Snapshot — ref と loc= セレクタ
  • ブラウザタスク実践 — エンドツーエンドのウォークスルー