ローカルAIコーディングアシスタント比較：OLI vs Kwaak vs Goose

開発者の生産性を向上させるAIツールが急速に普及しています。その中でローカル環境で動作するAIコーディングアシスタントは、コード生成、バグ修正、プロジェクト管理などを効率化する強力なツールとなりそうです。本記事では、Anthropicが提供する**Claude Code**に触発されて開発された3つの要注目のオープンソースプロジェクト「OLI」「Kwaak」「Goose」を比較分析します。

## はじめに

プログラミングの世界では、AIアシスタントが開発者の強力な味方となっています。GitHub Copilotなどの商用ツールが人気を集める一方で、2025年2月にAnthropicからリリースされたClaude Codeは、ターミナル内で動作し自然言語でコーディング支援を行うエージェント型ツールとして大きな注目を集めています。この流れを受け、オープンソースコミュニティでも同様のコンセプトを持つAIコーディングアシスタントの開発が活発化しています。今回は3つのRustベースのオープンソースプロジェクトを紹介します。

## OLI - Open Local Intelligent assistant

https://github.com/amrit110/oli

OLIは「Open Local Intelligent assistant」の略で、シンプルで高速なターミナルベースのAIコーディングアシスタントです。READMEにも明記されているように「Claude Codeのオープンソース代替」として開発され、Rustで構築されています。

### 主な特徴

- **柔軟なTUIインターフェース**: コードと効率的に連携するためのターミナルユーザーインターフェースを提供
- **多様なLLMサポート**: ローカルLLM（vLLMやllama_cpp経由）とクラウドAPI（Anthropic ClaudeやOpenAI GPT4oなど）をサポート
- **エージェント機能**: ファイル検索、編集、コマンド実行などの完全なエージェント機能を提供
- **軽量設計**: シンプルかつ効率的な実装により高速な動作を実現

### 技術スタック

OLIはRustで構築されており、以下の主要なライブラリやツールを使用しています：

- **ratatui**: TUIインターフェース構築用
- **llama_cpp**: ローカルLLMとの連携（Metal高速化対応）
- **openai**: OpenAI APIとの連携
- **crossterm**: ターミナル操作用
- **tokio**: 非同期処理用

### セールスポイント

- シンプルで高速な動作
- ローカルLLMとクラウドAPIの両方に対応
- macOS、Linux、Windowsのマルチプラットフォーム対応
- GPUアクセラレーション（Metal）のサポート
- Apache 2.0ライセンスで完全オープンソース

## Kwaak - 並列AIエージェント

https://github.com/bosun-ai/kwaak

Kwaakは「Burn through tech debt with AI agents!」をモットーに、複数のAIエージェントを並列に実行できるターミナルベースのツールです。

### 主な特徴

- **並列エージェント実行**: 複数のエージェントを同時に実行し、異なるタスクを並行して処理
- **チャット形式のインターフェース**: 直感的なコミュニケーションが可能なターミナルインターフェース
- **安全な実行環境**: Dockerを利用した安全なコード実行サンドボックス
- **多様なLLMサポート**: OpenAI、Ollama、Anthropic、Azure、OpenRouterなど多くのLLMに対応
- **多言語対応**: Python、TypeScript/Javascript、Go、Java、Ruby、Solidity、C、C++、Rustなど

### 技術スタック

Kwaakは以下のテクノロジーを活用しています：

- **swiftide**: 基盤となるAIエージェントフレームワーク
- **ratatui**: TUIインターフェース構築用
- **duckdb**: データベース処理用
- **redb**: インデックスキャッシング用
- **Docker**: 安全なコード実行環境
- **様々なLLMプロバイダーAPI**: OpenAI、Anthropic、Azureなど

### セールスポイント

- 複数のAIエージェントを並列実行する独自機能
- プロジェクトのコードベースを理解し、質問への回答や例の検索が可能
- コードの変更管理やプルリクエスト作成の自動化
- Dockerによる安全なコード実行環境
- MITライセンスのオープンソース

## Goose - 拡張可能なローカルAIエージェント

https://github.com/block/goose

Gooseは「a local, extensible, open source AI agent that automates engineering tasks」をコンセプトに、エンジニアリングタスクを自動化するAIエージェントです。

### 主な特徴

- **ローカル実行**: マシン上で動作する自律型AIエージェント
- **タスク自動化**: 複雑な開発タスクを最初から最後まで自動化
- **拡張可能な設計**: あらゆるLLMと連携可能な柔軟なアーキテクチャ
- **MCP対応**: Model Context Protocol対応APIとのシームレスな統合
- **多機能**: コード生成だけでなく、プロジェクト構築、デバッグ、ワークフロー管理など

### 技術スタック

Gooseの技術スタックには以下が含まれます：

- **MCP-client/MCP-core**: Model Context Protocolの実装
- **Rust ecosystem**: 高性能かつ安全なコード実行
- **Tokio**: 非同期処理
- **様々なクラウドプロバイダAPI**: AWS Bedrock、GCP Vertex AIなど
- **多様な認証システム**: OAuth、JWTなど

### セールスポイント

- コード提案を超えた完全な自律型エージェント
- あらゆるLLMとの連携可能性
- 拡張可能なアーキテクチャ
- ワークフローの自動化と外部APIとの連携
- Apache 2.0ライセンスのオープンソース

## 3つのプロジェクトの比較

これら3つのプロジェクトはそれぞれ異なるアプローチと強みを持っています。ここでは主要な観点から比較を行います。

### 公式説明から見る設計方針

| プロジェクト | 設計方針 | 主な用途 |
|-------------|---------|---------|
| **OLI** | シンプルさと高速性を重視 | コード生成、編集、問い合わせの支援 |
| **Kwaak** | 並列処理と自律性を重視 | 技術負債の解消、複数タスクの並列処理 |
| **Goose** | 拡張性と多機能性を重視 | 複雑な開発タスクの自動化 |

### 技術比較

| 機能 | OLI | Kwaak | Goose |
|------|-----|-------|-------|
| **ローカルLLM対応** | ◯ | ◯ | ◯ |
| **クラウドLLM対応** | ◯ | ◯ | ◯ |
| **MCP対応** | × | × | ◯ |
| **コード変更管理** | △ | ◯ | ◯ |

### 基盤技術

- **OLI**: 直接的なAPIインテグレーション（OpenAI API、llama_cpp）を採用し、Rustベースの軽量なアーキテクチャを特徴としています。

- **Kwaak**: [Swiftide](https://github.com/bosun-ai/swiftide)というRustライブラリをベースに構築されています。Swiftideは「高速なデータの取り込み、変換、インデックス作成を可能にするフレームワーク」であり、RAG（検索拡張生成）機能を提供しています。

- **Goose**: Model Context Protocol (MCP)に基づいて設計されています。

### 技術的な特徴

- **OLI**: シンプルで軽量な設計を採用し、高速な動作を重視。基本的なエージェント機能を提供しながらも、使いやすさを最優先している。OpenAI APIとllama_cppインターフェースに直接対応しているが、MCP連携はサポートしていない。

- **Kwaak**: 複数エージェントの並列実行と自律的なコード理解に焦点。[Swiftide](https://github.com/bosun-ai/swiftide)フレームワークを基盤としており、Swiftideはデータのインデックス作成、クエリ、エージェント機能を備えたRustライブラリ。MCPには現時点で対応していない。

- **Goose**: Model Context Protocol (MCP)を中心に設計されている。リポジトリ内に`mcp-core`と`mcp-client`という専用モジュールが存在し、MCPを活用した拡張性の高いアーキテクチャを採用している。

MCPについては下記もご覧ください

https://qiita.com/yonaka15/items/4c0d2d4153833d6e4ee3

### 想定ユースケース

各プロジェクトが想定しているユースケースは以下の通りです：

- **OLI**: 公式リポジトリで「シンプルかつ高速なコーディングアシスタント」として紹介されており、特にローカルLLMと組み合わせた使用が例示されています。
- **Kwaak**: 「複数のAIエージェントを並列に実行し、技術的負債を解消する」ツールとして位置づけられています。
- **Goose**: 「複雑な開発タスクを自動化」し、「任意のLLMとMCP対応APIとのシームレスな統合」を実現するツールです。

## まとめ

本記事では、Claude Codeの登場に触発されて開発された3つのRustベースのAIコーディングアシスタントを比較しました：

- **OLI**: シンプルさと高速性を重視したClaude Codeのオープンソース代替
- **Kwaak**: Swiftideフレームワークを基盤とした並列AIエージェントの実行環境
- **Goose**: MCPを中心に設計された拡張性の高いAIエージェント

これらのツールはいずれもRustで構築されており、高いパフォーマンスと安全性を提供しています。それぞれに特徴があり、必要に応じて選んでみてください

## 参考リンク

- [OLI GitHub リポジトリ](https://github.com/amrit110/oli)
- [Kwaak GitHub リポジトリ](https://github.com/bosun-ai/kwaak)
- [Goose GitHub リポジトリ](https://github.com/block/goose)
- [Swiftide GitHub リポジトリ](https://github.com/bosun-ai/swiftide)
- [Model Context Protocol](https://modelcontextprotocol.io/)