NextChatはOpenAI・Claude・Gemini・DeepSeekなど複数のLLMプロバイダーに対応したチャットクライアントです。Next.jsで構築され、Web・PWA・デスクトップ(Tauri)・Dockerなど多様な形態で動かせます。会話データはブラウザ側にローカル保存する設計で、プライバシーを重視しています。
app/api/[provider]配下にOpenAI・Anthropic・Google・Alibaba・ByteDanceなど各社向けのAPIルートがあり、サーバー側でリクエストをプロキシします。app/client/platforms/にはプロバイダーごとのクライアント実装があり、ストリーミング応答をapp/client/api.tsが統一的に扱います。UI側はapp/components/chat.tsxが中心で、Zustandによる状態管理と、mask(プロンプトテンプレート)機能を組み合わせています。app/masks/build.tsはビルド時に実行されるスクリプトで、プロンプト集をあらかじめ生成します。デスクトップアプリはsrc-tauri(Rust側)を介してTauriでパッケージ化され、GitHub Actionsのworkflow(app.yml)でWindows・macOS・Linux向けバイナリを自動ビルドします。MCP(Model Context Protocol)対応はENABLE_MCP=true設定時のみ有効になり、app/mcp/mcp_config.default.jsonが初期設定として使われます。
- STEP 01
リポジトリをcloneしてyarn installを実行すると、依存関係のインストール中に@modelcontextprotocol/sdkやmermaidなど多数のパッケージが入るのが分かります。
- STEP 02
`.env.template`を`.env.local`にコピーし、OPENAI_API_KEYやCODEなど必要な環境変数を設定してからyarn devを起動すると、Next.jsの開発サーバーが立ち上がります。
- STEP 03
ブラウザでlocalhost:3000を開くと、チャット画面とサイドバーのマスク(プロンプトテンプレート)一覧が表示され、モデルを切り替えて会話できます。
- STEP 04
yarn app:buildを試すとTauri経由でデスクトップアプリのビルドが始まりますが、Rustツールチェーンと各OS向けの追加ライブラリ(libgtk-3-devなど)が事前に必要だと分かります。
- STEP 05
Dockerfileを使ってdocker buildすると、ビルド後にnode server.jsで起動するproduction用standaloneサーバーが得られます。
- STEP 06
ENABLE_MCP=trueを設定してビルドすると、app/mcp/mcp_config.jsonが生成され、MCPマーケット機能(app/components/mcp-market.tsx)が有効になります。
手元では、複数のLLMプロバイダーを切り替えて使える自己ホスト型チャットUIが得られます。会話履歴はブラウザのローカルストレージに残り、サーバー側には保存されません。Docker・Vercel・Tauriデスクトップアプリなど、用途に応じた配布形態を選べる点も実際に確認できます。
各プロバイダーのAPIキーを自分で用意する必要があり、キーなしではチャット機能自体が動きません。
デスクトップアプリのビルドにはRustとOSごとのネイティブ依存(libwebkit2gtkなど)が必要で、単純なyarn installだけでは完結しません。
MCP機能はデフォルト無効で、ENABLE_MCP=trueを明示しないと使えない仕様です。
Enterprise Edition(権限管理・監査など)はREADMEで案内されているだけで、ソースコードは本リポジトリに含まれていません。
複数のLLMを1つのUIで使い分けたい個人や小規模チームが、自前でホストしたい場合に向いています。Vercelへのワンクリックデプロイ、Docker、デスクトップアプリと選択肢が広く、ソース構成(app/api・app/client/platforms・app/components)から動作原理を追いやすい点も安心材料です。API連携やビルド設定はファイル内容から具体的に確認できるため、実際に動かさなくても構成の妥当性は判断できます。ただしAPIキー準備やネイティブビルド環境の用意は避けられない前提として理解しておくべきです。