はじめに:Claude CodeはローカルLLMでも動かせるのか
Claude Codeを使いたいものの、APIの従量課金や利用上限が気になる。あるいは、機密性の高いソースコードを外部の生成AIサービスへ送りたくない。すでにOllamaなどでモデルを動かしているなら、「このモデルをClaude Codeのファイル編集やテスト実行にも使えないか」と考えるのは自然です。
結論から言えば、Claude Codeは通常Claudeモデルを利用しますが、接続先をAnthropic互換APIを提供するローカルサーバーへ変更すれば、ローカルLLMをバックエンドとして動かせます。2026年7月時点では、LM Studio、Jan、OllamaがそれぞれClaude Code向けの公式手順を公開しています。
ただし、接続できることと、コーディングエージェントとして実用になることは別問題です。Tool Use、コンテキスト長、指示追従性能が不足するモデルでは、チャットはできてもファイル編集やテストの反復に失敗します。また、Anthropicは第三者ゲートウェイ製品を保証せず、非Claudeモデルへのルーティングをサポートしていません。互換構成は各ツール側の対応に依存すると理解したうえで試してください。Anthropicのゲートウェイに関する説明
1. Claude Code本体とClaudeモデルは別の要素
1-1. Claude Codeとは何か
Claude Codeは、コードベースを読み、ファイルを編集し、コマンドを実行できるエージェント型コーディングツールです。Claude Code公式概要
通常のチャットUIと異なり、回答を一度生成して終わるとは限りません。ユーザーの指示をLLMへ送り、LLMが選んだツールをClaude Codeが実行し、その結果を再びLLMへ返します。モデルは結果を見て、追加の読み取り、修正、テスト、完了報告のいずれが必要かを判断します。
flowchart TD
accTitle: Claude Codeのエージェントループ
accDescr: ユーザーの指示を受けたLLMがツールを選び、Claude Codeがファイルの読み取り、編集、テストを実行し、その結果をLLMへ返して再修正または完了を判断する循環を示す。
A[ユーザーの指示] --> B[LLMが次の操作を判断]
B --> C[Claude Codeがツールを実行]
C --> D[ファイル読み取り・編集・テスト]
D --> E[実行結果をLLMへ返す]
E --> F{完了条件を満たしたか}
F -- いいえ --> B
F -- はい --> G[結果を報告]Claude Codeのエージェントループ
1-2. Claudeモデルとは何か
Claude Codeの制御部分と、判断を担当するLLMは分けて考えられます。
- Claude Code:会話、権限確認、ツール実行、結果の受け渡しを管理するエージェント実行環境
- Claudeモデル:次に何をするかを判断し、コードや説明文を生成するLLM
通常はOpus、Sonnet、HaikuなどのClaudeモデルが判断部分を担います。ローカル構成では、この部分を別のモデルへ置き換えます。Claude Codeの画面やツール機構を使えるからといって、Claudeモデルの推論能力まで再現されるわけではありません。
1-3. GGUFを直接読み込むわけではない
Claude Code自体には、GGUFやモデルの重みをロードして推論する機能はありません。LM Studio、Jan、OllamaがモデルをメモリへロードしてHTTPサーバーを提供し、Claude CodeはそのAPIへリクエストを送ります。
2. Claude CodeとローカルLLMを接続する仕組み
Claude Codeが利用するAnthropic Messages形式にローカルサーバーが対応していれば、接続先を変更できます。中心となるエンドポイントはPOST /v1/messagesです。
flowchart LR
accTitle: Claude CodeとローカルLLMの接続構成
accDescr: ユーザーの指示を受けたClaude CodeがAnthropic Messages API形式でLM Studio、Jan、またはOllamaへ要求を送り、各サーバーがローカルLLMで推論する構成を示す。
U[ユーザー] --> C[Claude Code]
C -->|Anthropic Messages API| S{ローカルモデルサーバー}
S --> L[LM Studio]
S --> J[Jan]
S --> O[Ollama]
L --> M[ローカルLLM]
J --> M
O --> MローカルLLMへの接続構成
2-1. Anthropic互換APIとは
互換APIとは、本来のサービスと同じURL構造やリクエスト形式を別のサーバーが受け付ける仕組みです。Claude Codeが期待するMessages API形式をローカルサーバーが解釈できれば、モデルの重みがどこで実行されるかをClaude Code側で管理する必要はありません。
主に使う環境変数は次の2つです。
export ANTHROPIC_BASE_URL=http://localhost:<PORT>
export ANTHROPIC_AUTH_TOKEN=<TOKEN_OR_DUMMY_VALUE>ANTHROPIC_BASE_URLは推論リクエストの送信先、ANTHROPIC_AUTH_TOKENはBearerトークンです。認証を無効にしたローカルサーバーでは、クライアントの要件を満たすためのダミー値を使う場合があります。認証を有効にした場合は実際のトークンを設定します。
2-2. 公式サポートとの境界
LM Studio、Jan、Ollamaが公開しているのは、各製品からClaude Codeを利用するための連携手順です。一方、Anthropicは非Claudeモデルへのルーティングをサポートしていません。また、Claude Codeに新しいヘッダー、APIフィールド、ツール形式が追加されると、互換サーバーが追従するまで一部機能が壊れる可能性があります。
問題が起きたら、モデルだけでなく、Claude Codeとローカルサーバー双方のバージョン、/v1/messagesのログ、Tool Useの応答形式を確認してください。
3. 事前準備
Claude Codeが実行できることを確認します。
claude --version最初から重要なリポジトリを使うのは避け、次のような小さなPythonプロジェクトを用意します。
local-claude-test/
├── calculator.py
└── test_calculator.py編集内容を戻せるよう、Git管理下で始めます。
git init
git add .
git commit -m "Initial commit".env、秘密鍵、クラウド認証情報は置かないでください。モデルサーバーも、特別な理由がなければ外部インターフェースへ公開せず、localhostにバインドします。
4. 方法1:LM Studioから接続する
4-1. モデルとサーバーを準備する
LM Studioでコーディング向けモデルをダウンロードし、メモリへロードします。モデルカードでTool Use対応を確認し、コンテキスト長を設定してください。LM Studioの公式手順は約25Kを超えるコンテキストを推奨しています。LM StudioのClaude Code連携手順
GUIのDeveloper画面からサーバーを起動するか、CLIを使います。
lms server start --port 1234既定のポートは1234で、Claude Code向けにAnthropic互換のPOST /v1/messagesが公開されます。
4-2. APIを単独で確認する
Claude Codeを起動する前に、LM Studioに表示されたモデルIDを使って疎通を確認できます。
curl http://localhost:1234/v1/messages \
-H "Content-Type: application/json" \
-H "Authorization: Bearer lmstudio" \
-d '{
"model": "<LM_STUDIO_MODEL_ID>",
"max_tokens": 64,
"messages": [{"role": "user", "content": "Reply with OK."}]
}'HTTPエラーになった場合は、サーバーの起動状態、モデルID、認証設定を先に直します。単純な応答に成功してもTool Useの成功までは保証されないため、後述の実践テストが必要です。
4-3. Claude Codeを起動する
LM Studio公式手順に従って環境変数を設定します。
export ANTHROPIC_BASE_URL=http://localhost:1234
export ANTHROPIC_AUTH_TOKEN=lmstudio
export CLAUDE_CODE_ATTRIBUTION_HEADER=0
claude --model <LM_STUDIO_MODEL_ID>CLAUDE_CODE_ATTRIBUTION_HEADER=0は、Claude Codeがシステムプロンプトへ付加する帰属情報を省きます。LM StudioでRequire Authenticationを有効にした場合、lmstudioというダミー値ではなく、発行したAPIトークンをANTHROPIC_AUTH_TOKENへ設定してください。
LM Studioは、モデルのロード状態、GPU Offload、コンテキスト長、APIログをGUIで確認しやすいのが強みです。初めて互換APIの挙動を調べる場合や、複数の量子化・モデル設定を比較する場合に向いています。
5. 方法2:Janから接続する
5-1. GUIのIntegrationsを使う
Jan Desktopで次の画面を開きます。
Settings → Integrations → Claude Codeインストール済みモデルを、次の3階層へ割り当てられます。
- Large Model:Opus相当。複雑な計画や推論向け
- Medium Model:Sonnet相当。通常作業向け
- Small Model:Haiku相当。軽量な処理向け
モデルを選び、Save & Enableを押すと、JanがClaude Codeのローカルバックエンドになります。JanのClaude Code連携手順
割り当てはパラメータ数だけで決めないでください。小さくてもツール形式を安定して返すモデルは軽作業に適しますが、大きくてもTool Useを崩すモデルはエージェント用途で不安定です。PCのメモリに3モデルを同時常駐できるとも限らないため、最初は同じ実用モデルを複数階層へ割り当てても構いません。
5-2. CLIから起動する
Jan CLIは、モデルサーバーの起動とClaude Code向け環境変数の設定をまとめて行います。Claude Code本体は事前にインストールしておきます。
jan launch claudeモデルを直接指定する場合は次のとおりです。
jan launch claude --model <MODEL_ID>Jan CLIの既定サーバーポートは6767です。完全なログを確認したい場合は-vも利用できます。モデルの推論設定はJan Desktop側で調整します。Jan CLI公式ドキュメント
JanはClaude Code専用の統合画面とモデル階層の割り当てを持つため、環境変数を手動管理したくない場合や、用途別モデル構成を試したい場合に便利です。
6. 方法3:Ollamaから接続する
6-1. モデルを準備して起動する
ローカルモデルを取得します。
ollama pull <MODEL_NAME>最も簡単な起動方法は次のコマンドです。
ollama launch claudeモデルを固定する場合は明示します。
ollama launch claude --model <MODEL_NAME>非対話で実行する場合は、--以降にClaude Codeの引数を渡します。
ollama launch claude \
--model <MODEL_NAME> \
--yes \
-- -p "このリポジトリの構成を説明してください"--yesは選択画面を省略し、必要ならモデルを取得します。そのため--modelが必要です。OllamaのClaude Code連携手順
6-2. 環境変数で手動接続する
仕組みを確認したい場合は、Ollama公式ドキュメントの手動設定を使えます。
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model <MODEL_NAME>ANTHROPIC_API_KEYを空にするのは、保存済みのAnthropic APIキーよりローカル接続用トークンを明確に使わせるためです。
注意したいのは、Ollamaがローカルモデルだけでなくクラウドモデルも扱うことです。ollama launch claudeを実行したという事実だけでは完全ローカルを証明できません。ローカルにダウンロードしたモデルを選び、Ollamaのログとネットワーク接続先を確認してください。公式ドキュメントはローカルモデルに64K以上のコンテキストを設定し、大きなリポジトリでも同等以上を使うよう案内しています。
7. Claude Code向けローカルモデルの選び方
7-1. Tool Use対応はほぼ必須
Claude Codeでは、モデルが文章を生成するだけでなく、「ファイルを読む」「編集する」「シェルコマンドを実行する」といったツールと引数を正しい形式で選ぶ必要があります。
Tool Use非対応または不安定なモデルでは、次の症状が現れます。
- ツールを呼ばず、実行したふりを文章で返す
- ツール名やJSON引数を壊す
- 読み取りだけで停止し、編集へ進まない
- 同じコマンドを繰り返す
- テストが失敗しているのに完了を宣言する
「チャットでコードを書ける」ことは必要条件の一つにすぎません。実際のClaude Codeセッションで、読み取り、編集、コマンド実行、失敗からの再試行まで確認してください。
7-2. コンテキスト長を確保する
Claude Codeのコンテキストには、システムプロンプト、ツール定義、会話履歴、読み取ったファイル、コマンド出力、エラーログ、変更後のコードが含まれます。モデルはリクエスト間で自動的に記憶を保持しないため、Claude Codeは必要な履歴を再送します。Claude Codeのプロンプトキャッシュ解説
不足すると、初期要件を忘れる、同じファイルを何度も読む、長いログを処理できない、修正方針が揺れる、といった問題が起きます。
LM Studioの「約25K超」は動作確認の下限に近い目安、Ollamaの「64K以上」はエージェント作業の現実的な目標として捉えるとよいでしょう。ただし、設定値を増やすほどKVキャッシュなどのメモリ消費も増えます。手元のMacBookやWindows PCでは、モデルサイズ、量子化、コンテキスト長のバランスを取り、まず小さなリポジトリで測定してください。
7-3. モデル階層を割り当てる
Claude Codeのモデルエイリアスに対応するモデルIDは、環境変数で変更できます。Claude Codeのモデル設定
export ANTHROPIC_DEFAULT_OPUS_MODEL=<LARGE_MODEL>
export ANTHROPIC_DEFAULT_SONNET_MODEL=<MEDIUM_MODEL>
export ANTHROPIC_DEFAULT_HAIKU_MODEL=<SMALL_MODEL>Janでは同等の割り当てをGUIから設定できます。LM StudioやOllamaでは、サーバーが認識できる正確なモデルIDを指定します。Claude Codeの更新によりモデル設定やエイリアスの動作が変わり得るため、固定運用では公式のモデル設定ページも確認してください。
7-4. エージェント能力で評価する
コード生成ベンチマークだけでモデルを決めるべきではありません。実務では、次の能力が重要です。
- Tool Use形式を崩さない
- 指定範囲だけを編集する
- コマンド出力と終了コードを解釈する
- エラーから修正方針を立て直す
- 不明な仕様を勝手に作らない
- 複数ステップを通じて完了条件を維持する
モデル名や量子化が同じでも、ランタイム、コンテキスト設定、プロンプト形式で挙動が変わります。自分の代表的なタスクを小さく再現した評価セットを持つのが確実です。
8. 実践:ファイル編集とテスト実行を試す
3方式のどれかで接続したら、同じ課題を順番に実行します。いきなり自動修正を依頼せず、読み取り専用タスクから始めます。
8-1. コードを説明させる
このプロジェクトの構成とcalculator.pyの役割を説明してください。
ファイルは変更しないでください。ファイルを実際に読んだか、存在しない構成を捏造していないか、編集禁止を守ったかを確認します。
8-2. 最小限の修正を依頼する
calculator.pyの不具合を調査してください。
原因を説明したあと、必要最小限の修正を行ってください。対象ファイルを正しく選び、仕様を作り足さず、小さな差分で直せるかを見ます。作業後は人間がgit diffを確認します。
8-3. テストと再修正を依頼する
テストを実行し、失敗した場合は原因を調査して修正してください。
すべて成功したら変更内容をまとめてください。正しいテストコマンドを選べるか、エラーを理解できるか、修正後に再実行するか、成功条件を誤認しないかを確認します。
結果は次の表へ記録すると、モデルやランタイムを公平に比較できます。数値は実測値のみを入れてください。
モデル | 量子化 | コンテキスト長 | 初回応答 | メモリ使用量 | Tool Use成功率 | 読み取り | 編集 | テスト修正 | 途中停止 |
|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
| 成功/失敗 | 成功/失敗 | 成功/失敗 | あり/なし |
成功率を出す場合は、同じ初期状態とプロンプトで複数回試し、試行回数も併記します。一度の成功をモデル固有の性能として一般化しないことが重要です。
9. 小型モデルへ実行権限を与えるリスク
ローカルで動くことと、安全に動くことは同義ではありません。モデルは外部へコードを送信しなくても、許可された範囲でローカルファイルやコマンドを操作できます。
小型モデルやツール使用が不安定なモデルは、指示範囲外のファイルを変更する、テストを通すためにテスト自体を弱める、エラーを隠す、危険なコマンドを提案する、未完了なのに成功を宣言する、といった失敗を起こし得ます。
最初は次の制約を維持してください。
- Claude Codeの実行確認を省略しない
--dangerously-skip-permissionsを使わない- Git管理した使い捨てのサンプルで試す
.env、SSH鍵、クラウド資格情報を置かない- 必要に応じてDocker、Dev Container、VMで隔離する
- 差分とテスト結果を人間が確認してからコミットする
Ollamaの連携文書も、権限確認を省略するフラグは隔離環境で利用するよう案内しています。ファイルの読み取り、編集、ネットワーク、シェル実行を一括で信頼せず、タスクに必要な最小権限だけを与えます。
10. 完全ローカルになっているか確認する
「ローカル」には少なくとも2つの意味があります。
- モデル推論が手元のPCで実行されている
- Claude Codeを含むプロセスから外部通信が一切発生しない
1を満たしても、更新確認、メトリクス、エラーレポート、WebFetch、Web検索、MCP、プラグインなどが外部通信を行う可能性があります。
10-1. モデルサーバーのログを確認する
LM Studio、Jan、Ollamaのログを開き、Claude Codeの操作ごとにlocalhostのMessages APIへリクエストが届いていることを確認します。モデル名も確認し、クラウドモデルや別の上流サービスへ転送されていないことを確かめます。
10-2. 非必須通信を抑制する
Claude Codeの非必須通信をまとめて抑制するには、次を設定します。
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1Anthropicのデータ使用文書によると、この設定は利用メトリクス、条件付きエラーレポート、フィードバック調査などを無効化します。ただし、すべての通信を止めるスイッチではありません。たとえばWebFetchのドメイン安全性確認と公式プラグインマーケットプレイスの自動インストールには別設定が必要です。Claude Codeのデータ使用と通信設定
また、Claude Codeはセッション再開のため、既定ではローカルの~/.claude/projects/へ会話記録を平文で保存します。外部送信とは別の論点ですが、共有PCや規制対象データでは保存期間とアクセス権も確認してください。
10-3. OS側から接続先を観察する
- macOS:
nettop、lsof -i - Linux:
ss -tpn、lsof -i - Windows:リソースモニター、TCPView
- 厳密な検証:送信先を制限したファイアウォール、VM、隔離コンテナ
localhost:1234、localhost:6767、localhost:11434などの想定ポートへ接続していることと、外部IPへコードを含む通信が送られていないことの両方を確認します。Web検索、WebFetch、MCPなどネットワークを使うツールを呼べば、推論がローカルでも通信は発生します。
11. LM Studio・Jan・Ollamaはどれを選ぶべきか
項目 | LM Studio | Jan | Ollama |
|---|---|---|---|
主な設定 | GUI+環境変数 | 専用Integration/CLI | CLI/環境変数 |
GUI | 充実 | 充実 | 基本はCLI中心 |
CLI起動 |
|
|
|
モデル階層の割り当て | 環境変数 | GUIでLarge・Medium・Small | 環境変数 |
APIログ確認 | 分かりやすい |
| Ollamaログ |
コンテキスト調整 | GUIで確認しやすい | Desktop側で調整 | モデル設定で調整 |
向いている人 | 状態を見ながら試したい人 | 階層別モデルを簡単に設定したい人 | ターミナルや自動化を重視する人 |
初めて仕組みを確認するならLM Studio、複数のモデル階層をGUIで管理するならJan、CLIやスクリプト中心ならOllamaが分かりやすい選択です。
ただし、生成品質を大きく左右するのはフロントエンドの違いより、モデル、量子化、コンテキスト長、プロンプト互換性、メモリ帯域、GPUまたはCPU性能です。同じモデルと同等の設定で比較してください。
12. クラウド版Claudeとの品質差
ローカルモデルには、推論データを手元に置きやすい、API従量課金を気にせず反復できる、オフライン運用を構成できる、モデルを自由に比較できるという利点があります。
一方、クラウド版Claudeは一般に、長時間のエージェント作業、大規模リポジトリの理解、複雑なリファクタリング、Tool Useの安定性、エラーからの立て直し、長い指示の維持で有利になりやすい構成です。実際の差は選ぶローカルモデルとハードウェアに依存するため、名前やパラメータ数だけで断定はできません。
現実的な使い分けは、コード説明、定型変換、小さなバグ修正、機密コードの一次調査をローカルへ寄せ、難しい設計判断や大規模変更はクラウド版Claudeへ任せる方法です。クラウドへ切り替える場合は、送信可能なコードかどうかを改めて判断します。
まとめ
Claude CodeとClaudeモデルは別の要素です。LM Studio、Jan、OllamaがAnthropic互換APIとしてモデルを提供すれば、Claude Codeの接続先をローカルLLMへ変更できます。
ただし、APIへ接続できるだけでは十分ではありません。Tool Useの安定性、25K超から64K以上を視野に入れたコンテキスト、指示追従性能、PCのメモリ容量を実タスクで評価する必要があります。最初から強い実行権限を与えず、Git管理した隔離環境で差分とテスト結果を確認してください。
完全ローカルを要件とするなら、モデル名やlocalhostのログだけでなく、Claude Codeの非必須通信、Web系ツール、MCP、OSの外向き接続まで検証します。品質と安全性を測ったうえで、ローカルLLMとクラウド版Claudeをタスクごとに使い分けるのが実践的です。