概要
- クラウドやリモート実行を一切使わず、すべてローカルで完結するAIアシスタント環境の構築体験
- ローカルLLM、コンテナ型コード実行、ヘッドレスブラウザによる自動化を組み合わせた実装事例
- Apple Silicon上での動作、Ollama・assistant-ui・Apple container・Playwright等の活用
- プライバシー重視の設計思想と現状の課題、今後の展望
- Githubリソースや利用方法への案内
すべてローカルで完結するAIアシスタント構築体験
- クラウド非依存・完全ローカル動作 のAIアシスタント環境構築
- 主流LLMチャットアプリ(ChatGPTやClaude等) が提供する機能のローカル実現
- チャット用LLMの利用
- コードの自動生成と実行
- インターネット経由での情報取得
- プライバシー重視 のため、データを外部クラウドに渡さず処理
- LLMによる計画立案からコード実行まで、すべてローカル内で完結
- 画像・動画編集など、個人情報を含む作業も安全に実施可能
技術スタックと構成
- LLM:Ollama (ローカルモデル、プライベートモデル対応)
- フロントエンドUI:assistant-ui
- サンドボックス型VMランタイム:Apple container
- オーケストレーション:coderunner
- ブラウザ自動化:Playwright
- Apple Silicon上での動作確認
- containerによる完全なコード実行隔離
Macアプリ化の試行錯誤
- a0.devによるMacアプリ生成 を試みるも、iOS向けが主用途で断念
- NextJS+Electronによるラッピング も困難で断念
- 結果として、 ローカルWeb版assistant-ui を採用
- シンプルで設定しやすく、実用上問題なし
assistant-uiのカスタマイズ
- 複数LLM切り替え機能 を実装(ai-sdkを利用)
- 初期はローカルモデル中心だが、将来的には高性能なローカルモデルへの移行を想定
- tool-calling対応モデル の必要性
- Ollamaは一部モデルでtool-calling未対応
- モデルごとの対応状況や価格情報が流動的
コンテナ型コード実行環境の構築
- Apple container を利用し、1コンテナ=1VMで完全隔離環境を実現
- Jupyter serverをVM内で起動し、MCP(Model Context Protocol)ツールとして公開
- 例:Claude DesktopやGemini CLIからMCP経由でコード実行可能
- MCP対応ツールとの親和性
- coderunnerのコードは 公開済み・再利用可能
Apple containerの課題
- VMイメージビルド時の不安定さ(Trap errorやハング)
- containerプロセスのkill、buildkitイメージの削除、再ビルドを繰り返す必要
- 安定化には今後の成熟に期待
ヘッドレスブラウザの導入
- Playwrightをcontainer内で起動し、MCPツールとして公開
- オンライン情報収集やツールの自動インストール 等の自動化処理が可能
- 研究用途や最新情報取得の基盤として活用
実現できること(例)
- テーマに関する リサーチ自動化
- CSVから グラフ生成・レンダリング
- ffmpegによる動画編集 (例:「0:10~1:00をカット」)
- 画像編集(リサイズ・トリミング・フォーマット変換)
- GitHubから ツールの自動インストール (container内で安全に実行)
- ヘッドレスブラウザでページ取得・要約
ボリューム・隔離設計
- ホスト(~/.coderunner/assets)とcontainer(/app/uploads)でボリューム共有
- 編集・生成ファイルは安全な共有領域で管理
- 実行コードはホストOSに一切影響なし
現状の制約と今後
- Apple Silicon専用 (macOS 26は任意)
- ツール管理・出力ストリーミング用UIの改善 が必要
- ヘッドレスブラウザは一部サイトで bot判定されやすい
最後に
- クラウド依存ゼロ・プライバシー重視 という新しいコンピューティング思想の体現
- 巨大企業のLLMが最先端を走る一方、 日常作業はローカルツールで十分可能
- 実際に構築・公開済み (coderunner-uiをGithubで配布中)
- フィードバック・課題報告・コントリビューション歓迎
参考リソース
- assistant-ui
- instavm/coderunner
- Apple/container
- instavm/coderunner-ui