たねやつの木

Photographs, Keyboards and Programming

sst/opencodeをClaude CodeとGemini-CLIの代わりとしてタダで使ってみる

こんにちは、たねやつです。

今回は、sst/opencode というCLIツールを使って、OpenRouter経由で様々なLLMを無料で試す方法について紹介します。claude codegemini-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.devMODEL 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 codeCLAUDE.mdgemini-cliGEMINI.mdのように、プロンプトのコンテキストとして利用できます。

OpenRouterで無償で使えるモデルについて

以下のサイトで、OpenRouterで利用可能かつ無料のモデルを探すことができます。

  • Moonshot Kimi-k2 (dev)
  • DeepSeek R1
  • Qwen3 235B A22B Instruct 2507

など、様々なモデルが無料で提供されています。(2025年7月時点)

適当に上記のように設定してみていろいろ使ってみましょう。

最後に

sst/opencode を使うことで、APIキーさえあれば非常に多くのLLMを手元のCLIから簡単に試すことができました。特にOpenRouterと組み合わせることで、無料で使えるモデルの選択肢が広がるのが大きな魅力です。

ローカルでの開発や、ちょっとしたテキスト生成タスクに役立つツールだと思いますので、ぜひ試してみてください。

もう少し使い進めてみたら実践編の記事を作成しようかと思います。

参考・引用