- Kernel は、開発者が ブラウザ自動化 コードを別途インフラを気にすることなくすぐにデプロイし、大規模にスケールできるようにする サーバーレスプラットフォーム
- 設定やパイプライン構築なしで、ローカル開発とほぼ同じ速さ でコードをデプロイして実行可能
- サンドボックス環境で利用できる Chrome ブラウザ を提供し、作成した エージェントを自動的に API に変換 して、どこからでも呼び出し可能
- Playwright、Puppeteer など Chrome DevTools Protocol ベースのフレームワーク との連携をサポートし、リモート GUI(ライブビュー) でリアルタイム監視と制御が可能
- Unikraft unikernel 環境をサポートし、超高速再起動、スナップショット復元、リソース最小化 など高性能に特化した機能を提供
- Docker イメージ と Unikraft unikernel の 2 つのデプロイ方式をサポートし、さまざまなクラウド/コンテナ環境で活用可能
- すべてのコードは 分離された仮想マシン で安全に実行され、リアルタイムの観察およびデバッグツールを提供
What's Kernel?
- Kernel は、サンドボックス化された、すぐに使える Chrome ブラウザ環境 を提供し、このリポジトリは Kernel のホスティングサービス のための基盤コード
- Playwright、Puppeteer など Chrome DevTools ベースのブラウザフレームワーク から簡単に接続可能
Why use Kernel?
- ローカルから本番まで数秒でデプロイ
- 別途設定や本番パイプラインなしで、
bun run dev とほぼ同じ時間でコードをデプロイして実行可能
- すべてのエージェントを API に変換
- プラットフォームに載せたすべてのエージェントが自動的に API として公開され、外部から呼び出し可能
- 並列スケーラビリティ
- 必要に応じて数千のブラウザインスタンスを即座に起動・拡張可能
- 分離性と可観測性の強化
- コードは分離された VM で実行されるためセキュリティが高く、監視およびデバッグツールを提供
- 予測可能でシンプルな料金体系
- 事前のインフラ定義なしで、使用したリソース分だけ課金
主な機能
- 統合ブラウザ環境 : クラウド上でブラウザを即時に生成・制御でき、ワークロード自動化に最適化
- サンドボックス化された Chrome ブラウザ を DevTools ベースの自動化フレームワークから接続して利用可能
- 9222 ポート を通じて Playwright、Puppeteer などと連携
- CDP WebSocket エンドポイントを取得後、リモートクライアントから接続
- 切断/再接続が可能
- セッション状態の維持 : Cookie、認証トークン、履歴などのブラウザセッションを呼び出し間でも継続管理
- 超高速再起動(standby mode) : ブラウザインスタンスを 20ms 以下で即座に再起動
- リモート GUI(ライブビューストリーミング) により、ブラウザ画面をリアルタイムで確認・制御可能
- noVNC: VNC ベース、読み書き対応、WebRTC の無効化が必要
- WebRTC: リアルタイム、読み書き、ウィンドウサイズ変更、コピー/貼り付け、高速性能、
ENABLE_WEBRTC=true が必要
- オーディオストリーミングは未対応、読み取り専用モードは環境変数で設定可能
- ブラウザセッションのビデオリプレイ : 過去のセッションを見返してデバッグや分析が可能(対応予定)
実装とデプロイ
-
Docker コンテナを使用
- headful Chromium を Docker コンテナ で実行可能
cd images/chromium-headful の後、ビルドおよび実行スクリプトを提供
- 環境変数で WebRTC の有効化およびその他の設定が可能
-
Unikraft Unikernel を使用
- Unikraft unikernel ベースで実行すると、Docker ベースより より高速な起動とスタンバイモード を提供
- ネットワークトラフィックがない場合は自動で standby mode に入り、状態のスナップショット/復元をサポート
- Cold start 20ms 未満、セッション状態(Cookie、ファイル、ブラウザ設定など)の維持と復元が可能
- 8GB 以上のメモリが必要
-
デプロイ時の参考事項
- WebRTC ベースのストリーミングを有効化する場合は TURN サーバーが必要
- unikernel デプロイ時は公開 URL が発行され、誰でもアクセス可能なため、機密性の高い作業には使用禁止。利用後はインスタンスの削除が必要
まだコメントはありません。