MacでOllamaとsbxを使ったOpenCodeの設定
Setting up OpenCode with Ollama and sbx on Mac (tensorsandtokens.com)
要約
この記事では、Mac上でローカルLLM開発環境を構築するために、Ollama、Docker Sandbox (sbx)、およびOpenCodeを連携させる方法を解説しています。Apple Silicon搭載MacでQwen 3.8やGemma 4といった大規模モデルを効率的に実行し、Webアプリケーション開発に活用するための具体的な手順が示されています。
全文翻訳
MacでOllamaとOpencodeを実行する。
OllamaのローカルモデルをOpencodeとDocker Sandboxesで実行する方法。
実用的なローカルLLM開発がついに実現しました。Qwen 3.8やGemma4のような強力なモデルを使えば、これらのモデルをWebアプリケーション構築に活用できるようになりました。私はApple Macbook pro m5 48GBモデルを使用しています。これはローカル開発において、適度なコンテキストサイズで30Bモデルを実行できるため、スイートスポットだと考えています。
なぜOllamaを使うのか
率直に言って、簡単だからです。現在mlxに対応しており、Apple Silicon上で高速に動作します。モデルディレクトリもかなり充実しています。また、非常に安定しており、クラッシュしません。
なぜOpencodeを使うのか
このブログでどこから始めるかという点で、Opencodeは素晴らしいハーネス(ツール)です。
私が使用するもう一つのツールは、docker sandboxes、別名 sbx です。私は職場でフロンティアモデルを使用しており、それらのハーネスをサンドボックス化する必要があります。また、ローカルモデルもコンテナ内で実行したいと考えています。なぜなら、意図しない幻覚(hallucination)によって、コンピュータを簡単に台無しにしてしまう可能性があるからです。
ツールのインストール
Docker Sandboxのインストール:
brew trust docker/tap && brew install docker/tap/sbx
Opencodeのインストール:
brew install anomalyco/tap/opencode
Ollamaのインストール:
Ollamaをインストールするには、https://ollama.com/にアクセスし、アプリをダウンロードしてインストールしてください。
モデルのインストール
モデルについては、2つのモデルをプルします。まず、ollamaが実行されていることを確認してください。
Qwen 3.8 27B mxfp8 (32GB): これは優れたワークホースモデルで、ほとんどの長時間実行タスクを処理でき、Opencode内で数時間 undisturbed で実行できます。
ollama pull qwen3.8:27b-mxfp8
Gemma 4 31b mxfp8 (34GB): これは、より大きなモデルが必要な場合に最適な、大きくて高密度のモデルです。
ollama pull gemma4:31b-mxfp8
注意: 48GBのAppleデバイスをお持ちでない場合は、標準モデル qwen3.8:27b-mlx および gemma4:31b-mlx をプルできます。
プロジェクトの設定
このセットアップでは、プロジェクトごとにsbx kitを設定する必要があります。キットはサンドボックスをカスタマイズする方法です。以下のフォルダとファイルを作成します。
./sbx-kit/files/home/.config/opencode-local.json
./sbx-kit/spec.yaml
spec.yaml
schemaVersion: "2"
kind: mixin
name: local-ollama-opencode
version: "0.1.0"
displayName: Local Ollama for OpenCode
description: Configure OpenCode in Docker Sandboxes to use Ollama running on the Mac host.
requires:
agent: opencode
environment:
variables:
OPENCODE_CONFIG: /home/agent/.config/opencode-local.json
permissions:
network:
allow:
- localhost:11434
- localhost:5173
- localhost:4000
agentInstructions:
content: |
Local Ollama runs on the host machine.
Default model:
qwen3.8:27b-mxfp8
Deep file analysis / reasoning:
gemma4:31b-mxfp8
opencode-local.yaml
{
"$schema": "https://opencode.ai/config.json",
"model": "ollama/gemma4:31b-mxfp8",
"small_model": "ollama/gemma4:31b-mxfp8",
"lsp": false,
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Mac Ollama",
"options": {
"baseURL": "http://host.docker.internal:11434/v1"
},
"models": {
"qwen3.8:27b-mxfp8-64K": {
"id": "qwen3.8:27b-mxfp8",
"name": "Qwen 3.8 27B MXFP8 [31 GB] [64K ctx]",
"limit": {
"context": 65536,
"output": 8192
},
"variants": {
"low": {
"reasoningEffort": "low"
},
"medium": {
"reasoningEffort": "medium"
},
"high": {
"reasoningEffort": "high"
},
"xhigh": {
"reasoningEffort": "xhigh"
}
}
},
"gemma4:31b-mxfp8": {
"name": "Gemma 4 31B MXFP8 [33 → ~50 GB] [256K ctx]",
"limit": {
"context": 262144,
"output": 8192
}
}
}
}
}
}
Qwenモデルについては、コンテキストを64kに制限し、システムがメモリ不足でロックアップしないようにします。サンドボックス用に3GBのメモリも必要です。
Opencodeの実行
Opencodeを実行するには、以下を実行します。
sbx run opencode --kit ./sbx-kit/
これにより、Qwenが選択された状態でOpencodeが起動します。/models コマンドを使用して、必ず "low" effort に変更してください。
これで準備完了です。
注意: sbx を実行するにはDockerにログインする必要があります。この機能は開発コミュニティであまり好まれていませんが、他に方法はありません。
[画像: opencode]