- ローカル LLM 実行とコードサンドボックス環境を使い、クラウド依存なしでAIワークスペースを構成する方法
- OllamaでローカルLLMを起動し、Apple Containerを使って分離されたVMでコードを実行、Playwrightでヘッドレスブラウザーを用いた自動化とインターネットアクセスを可能にする
- UIは
assistant-uiをベースにし、モデル選択ドロップダウンとai-sdk統合、**MCP(Model Context Protocol)**を介した安全なコード実行環境を実装
- MCPで接続したCoderunner VM内でJupyterサーバーとブラウザーを実行し、チャート生成・画像/動画編集・GitHubツールのインストール・Web検索などをプライバシー保護状態で処理可能
- 現在はApple Silicon 専用で、UI改善やブラウザー検知回避、ツール管理機能強化が将来の課題
要件と背景
- 目標: クラウドおよびリモートコード実行なしで、すべてをローカルで実行すること
- 既存のLLMチャットアプリ(例: ChatGPT、Claude)は、クラウドベースのLLMチャット、クラウド/ローカルコード実行、インターネットアクセス機能を提供する
- オープンソースLLMの普及拡大により、これらすべてを完全にローカルで実行できるかを検討
- ローカルLLMだけでは不十分なため、分離された環境でコードを実行する必要があり、ブラウザー経由でコンテンツにアクセスすることも必要
アイデアの構想
- LLMを完全にローカル環境で実行
- 軽量VM(仮想マシン)内でのみコード実行を処理し、ホストシステムのリスクを遮断
- ヘッドレスブラウザーを追加し、自動化と新規情報・ツール探索をサポート
- AIの企画立案からコード実行まで完全にローカルで行われるプライバシー保護中心のワークフローを構築
- 外部サービスへデータを提供せず、ローカルで画像編集、動画編集など多様な作業を可能に
技術スタック
- LLM: Ollama(ローカルモデルおよび一部外部モデルに対応)
- UI:
assistant-ui + ai-sdk(モデル選択機能を追加)
- VM ランタイム: Apple
container(分離されたVM環境を提供)
- オーケストレーション:
instavm/coderunner(MCP経由でJupyterサーバーを接続)
- ブラウザー自動化: Playwright(MCPツールとして公開)
Macアプリの試行と切り替え
a0.devを使ってネイティブMacアプリ開発を試みたが、iOS中心で難航
- Electron + NextJSによるラッピングも試したが複雑性の問題で断念
- 最終的にローカルWebベースの
assistant-uiへ切り替え
Assistant-UIのカスタマイズ
- モデル選択ドロップダウンなど複数LLM対応機能を提供するものとして期待されたが、限定的だった
- サンプルを参照後、ai-sdkでマルチモデル選択機能を自前で実装
- 初期はOpenAI/Anthropicのようなクラウドモデルもサポートし、段階的にローカル化へ誘導する戦略
Tool-callingとモデル対応の課題
- Tool-callingをサポートするモデルが必要だったが、Ollamaなど一部は実際には未対応
- 公式ドキュメントでツール対応が明記されていても、実装が不足しているケースが多い
- オープンソースエコシステムの変化が速いため、ツール対応状況やトークン単価などの変動が大きい
コンテナベースの隔離コード実行
- AppleのContainerツールを使用すると、Dockerと比べてコンテナごとに完全な分離VM環境を提供するため、AI生成コードをより安全に実行できる
- VM環境にJupyterサーバーをデプロイし、Model Context Protocol(MCP)で公開して、さまざまなツール(Claude Desktop、Gemini CLIなど)からすぐに利用可能
coderunner MCPサーバーコードを公開し、外部ツールと連携するサンプルを提供
- Apple Containerツールはまだ不安定で、ビルド/イメージの問題時には再試行が必要になることがある
- 実際の動画編集テストなどでUI + LLM + Coderunner構成の正常動作を確認
ヘッドレスブラウザー統合
- コンテナ内にPlaywrightベースのヘッドレスブラウザーをデプロイし、MCPツールとして公開
- 新規ツール・情報探索、Githubの使い方検索、リサーチの自動化などの活用を想定
- 基本ワークフロー: ローカルLLM + サンドボックスコード実行 + ヘッドレスブラウザーの組み合わせを構築完了
可能な作業例
- 特定テーマの調査と要約
- 自然言語コマンドでCSVチャート作成とレンダリング
- ffmpegを使った動画編集(区間のトリミングなど)
- 画像のリサイズ、トリミング、形式変換
- Githubツールのコンテナ内インストール
- ヘッドレスブラウザーによるウェブページクローリングと要約など
ファイルボリュームのマウントと隔離
- ホストの
~/.coderunner/assetsをコンテナの/app/uploadsにマッピングし、ファイルを安全な共有領域に保管
- 実行されたコードはホストシステムに直接アクセス不可とし、セキュリティを確保
制約と今後の課題
- Apple Silicon環境でのみ動作、macOS 26はオプション
- ツール管理、出力ストリーミングなどUI改善が必要
- ヘッドレスブラウザーが一部サイトでボット検知によりブロックされる問題が存在
結論
- 本プロジェクトは単なる実験を超え、コンピューティング主権およびプライバシー保護を重視したモデルである
- クラウドやリモートサーバー依存なしで、個人ローカルマシン上でデータを安全に処理する体験を提供する
- 最高性能のLLMは大規模クラウドに留まる可能性があるが、個人プライバシーを守ることができるローカルAIツールの発展を志向する
- オープンソースの
coderunner-uiはGitHubで利用可能で、フィードバックとコラボレーションを歓迎
関連リソース
まだコメントはありません。