こんにちは、たねやつです。
今回は、sst/opencode というCLIツールを使って、OpenRouter経由で様々なLLMを無料で試す方法について紹介します。claude code や gemini-cli のような感覚で、ローカル環境から手軽にAIモデルを利用できる便利なツールです。
この記事でできること
sst/opencodeのインストールと基本的な設定方法がわかる- OpenRouterのAPIキーを設定して、
opencodeと連携できるようになる - OpenRouterで提供されている無償のLLMモデルを追加して、実際に試すことができる
事前に必要なもの
作業を始める前に、以下のツールをインストールしておく必要があります。
bun
JavaScriptのランタイムおよびツールキットです。以下のコマンドでインストールできます。
curl -fsSL https://bun.sh/install | bash
Golang
バージョン1.24.xが必要です。公式サイトからダウンロードし、展開・設定します。
wget https://go.dev/dl/go1.24.5.linux-amd64.tar.gz tar -C /usr/local -xzf go1.24.5.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin # .bashrcなどに追記
手順
opencodeのインストール
公式の手順に従って、以下のコマンドを実行するだけでインストールは完了です。
curl -fsSL https://opencode.ai/install | bash
OpenRouterの設定
opencodeは様々なLLMプロバイダーに対応していますが、今回は無料で使えるモデルが豊富なOpenRouterを利用します。
APIキーの取得と設定
opencodeを初めて起動すると、プロバイダーの選択とAPIキーの設定を求められます。OpenRouterを選択し、事前に取得しておいたAPIキーを入力してください。
モデルの追加
デフォルトで認識されないモデルを使いたい場合は、~/.config/opencode/opencode.jsonファイルにモデル定義を追記する必要があります。以下のようなエラーが発生する場合があります。
AI_APICallError: No endpoints found that support tool use. To learn more about provider routing, visit: https://openrouter.ai/docs/provider-routing
例えば、MoonshotAIのモデルを追加する場合は、以下のように記述します。models.devのMODEL IDをmodels直下のキーとして設定します。(moonshotai/kimi-k2:free)
{ "$schema": "https://opencode.ai/config.json", "provider": { "openrouter": { "options": { "name": "OpenRouter" }, "models": { "moonshotai/kimi-k2:free": { "name": "MoonshotAI: Kimi K2 (free) - Chutes", "reasoning": true, "tool_call": true, "limit": { "context": 60000, "output": 60000 } } } } } }
"reasoning"や"tool_call"の可否は、モデルの仕様に合わせて設定してください。
DeepSeek R1を使用する場合は、以下のようにします。models.devだとツールコールがYESになっているが、falseにしないと動作しません。。。
{ "$schema": "https://opencode.ai/config.json", "provider": { "openrouter": { "options": { "name": "OpenRouter" }, "models": { "moonshotai/kimi-k2:free": { "name": "MoonshotAI: Kimi K2 (free) - Chutes", "reasoning": true, "tool_call": true, "limit": { "context": 60000, "output": 60000 } }, "tngtech/deepseek-r1t2-chimera:free": { "name": "DeepSeek R1T2 Chimera (free)", "reasoning": true, "tool_call": false } } } } }
動作テスト
設定が完了したら、実際に動かしてみましょう。
opencode .
/models ← モデルを選択(MoonshotAI: Kimi K2 (free) - Chutes)
write fizz buzz in go ← プロンプト内容
taneyats (01:56 PM)
package main
import "fmt"
func main() {
for i := 1; i <= 100; i++ {
switch {
case i%15 == 0:
fmt.Println("FizzBuzz")
case i%3 == 0:
fmt.Println("Fizz")
case i%5 == 0:
fmt.Println("Buzz")
default:
fmt.Println(i)
}
}
}
tngtech/deepseek-r1t2-chimera:free (01:56 PM)
また、AGENT.mdというファイルを作成することで、claude codeのCLAUDE.mdやgemini-cliのGEMINI.mdのように、プロンプトのコンテキストとして利用できます。
OpenRouterで無償で使えるモデルについて
以下のサイトで、OpenRouterで利用可能かつ無料のモデルを探すことができます。
- Moonshot Kimi-k2 (dev)
- DeepSeek R1
- Qwen3 235B A22B Instruct 2507
など、様々なモデルが無料で提供されています。(2025年7月時点)
適当に上記のように設定してみていろいろ使ってみましょう。
最後に
sst/opencode を使うことで、APIキーさえあれば非常に多くのLLMを手元のCLIから簡単に試すことができました。特にOpenRouterと組み合わせることで、無料で使えるモデルの選択肢が広がるのが大きな魅力です。
ローカルでの開発や、ちょっとしたテキスト生成タスクに役立つツールだと思いますので、ぜひ試してみてください。
もう少し使い進めてみたら実践編の記事を作成しようかと思います。