はじめに
みなさんこんにちは。株式会社インプルの岩崎です。
今回は、AIがリクエスト内容を判断し、最適なモデルを選択して使用する、ClawRouterについてです。
ClawRouterとは
ClawRouterはAIエージェント向けに設計されたオープンソースのLLMルーターです。人間向けのOpenRouterやLiteLLMとは異なり、AIエージェントが人間の介入なしに自律的に動作することを前提に設計されています。
最大の特徴は、リクエスト内容を15次元でスコアリングし、そのタスクを処理できる「最も安価なモデル」に1ms以内で自動振り分けする点です。公称では最大92%のAPIコスト削減が可能とされています。MITライセンスのOSSで、商用利用も可能です。
使ってみよう
それでは早速使ってみましょう。
ちなみに、あらかじめ紹介しておくと、今回はCursorを使ってチャットで検証しようと思いましたが、それだとすでに備わっているモデルが動作してしまうため、ClawRouterの役割を発揮させることができませんでした。
つまり、その状態では人間がモデルを選択する = AIエージェントがモデルを選択しない状態なので、セットしても意味のない状態になっています。そのため、今回はターミナルで実行した様子をお伝えします。
ClawRouterのリポジトリー
今回はこちらのリポジトリーに記載されているREADMEを参考に実施してみました。
ClawRouterのセットアップ
ClawRouterは、Node.js v18以上で起動します。今回はv22.20.0で確認しました。
バージョンが確認できたら、下記コマンドでパッケージをインストールしましょう。
初回はパッケージのインストール確認が出るので y を入力してください。その後、[ClawRouter] のログがいくつか表示され、一番最後にReady - Ctrl+C to stop が表示されれば起動成功です。
npx @blockrun/clawrouter
ターミナルで動作確認
起動が成功したら、新しいターミナルで動作確認してみましょう。
ターミナルから直接APIを叩く方法で検証してみます。下記をターミナルに入力し実行してみてください。
curl http://localhost:8402/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer x402" \
-d '{
"model": "blockrun/auto",
"messages": [{"role": "user", "content": "日本語で「テスト成功」と答えてください"}]
}'
すると、下記のようなレスポンスが帰ってきました。
{
"model": "free/gpt-oss-120b",
"choices": [{
"message": {
"content": "⚠️ Wallet empty — using free model.\n\nテスト成功"
}
}]
}
このレスポンスには、contentに下記のような意味合いが含まれています。
⚠️ Wallet empty — using free model.
→ウォレット残高が$0であることの警告メッセージ。フリーモデルを使用することが記載。
テスト成功
→今回の期待していた返答。日本語で「テスト成功」と正しく返答。
裏側での動作ログ
さて、上記のように正しく動作がされていましたが、この時、ClawRouterを起動した時のターミナルでは、下記のようなログが流れていました。
[SIMPLE] google/gemini-2.5-flash $0.0102 (saved 90%)
Wallet empty ($0.00), falling back to free model: free/gpt-oss-120b
Trying model 1/1: free/gpt-oss-120b
Success with model: free/gpt-oss-120b
[SIMPLE] free/gpt-oss-120b $0.0010 (saved 99%)
翻訳タスクが SIMPLE に分類され、最安モデルへ自動振り分けされています。ウォレット残高が$0のため有料モデルへは繋がらず無料モデルで代替されましたが、難易度判定→モデル選択のロジック自体は正常に機能していることを確認できました。つまり、15次元の分類が、問題なく動作しているわけです。
なお一部リクエストで Invalid character in header content ["x-clawrouter-reasoning"] というエラーが発生しており、レスポンス返却が不安定な場面もありました。これはClawRouter側のバグと思われます。
複雑なタスクの依頼
さて、上記のタスクではシンプルなモデルが動作したので、少し複雑なタスクで性能のいいモデルも振り分けるのか、動かしてみたいですよね。しかし、クレジットは今回チャージしていないので、ログで振り分けが[simple]以外になることをみてみたいと思います。
curl -s http://localhost:8402/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer x402" \
-d '{"model":"blockrun/auto","messages":[{"role":"user","content":"この契約書の法的リスクを 分析してください。第3条:甲は乙に対し、成果物の著作権を無償で譲渡するものとする。"}]}'
上記の法的ドキュメントを解析させてみましょう。すると、下記のような結果に。
**⚠️ Wallet empty** — using free model. Send USDC to `0xc366f88b0d460C2daafEd7bda3481267598aE291`.\n\n## 契約書第3条「甲は乙に対し、成果物の著作権を無償で譲渡するものとする」‐ 法的リスク分析\n\n以下では、**日本法(民法・著作権法)**を前提に、本条文が抱える主なリスクを整理し、リスク緩和のための条文修正例・実務上の留意点を提示します。 \n(※実際の契約は個別事情(業務内容、成果物の性質、当事者間の関係性等)に応じて調整が必要です。弁護士等の専門家の最終チェックを必ず行ってください。)\n\n---\n\n### 1. 著作権譲渡の法的要件とリスク\n\n| 項目 | 法的要件 / 判例 | 具体的リスク |\n|------|----------------|--------------|\n| **譲渡の有効性** | <u>著作権法第27条</u>により、著作権(思想・感情を表現したものに対する権利)は**「契約により譲渡」**できる。譲渡は**書面**で行う必要はないが、証拠保全の観点から**書面化が実務上必須**。 | • 曖昧な口頭・メールでの合意は将来的に「譲渡がなかった」主張されやすい。<br>• 書面が不備(譲渡対象の範囲が不明確)だと、部分的に甲が権利を保持したままとなるリスク。 |\n| **譲渡対象の範囲** | 著作権は**複製権・公衆送信権・翻案権等**を含む**全部の権利**が対象となる。条文で「著作権」とだけ記載した場合、**隣接権、人格権(氏名表示権・同一性保持権)**は自動的に譲渡されない。 | • 甲が「氏名表示権」や「同一性保持権」を主張し続け、乙が成果物を改変できないケース。<br>• 隣接権(実演家権、録音権等)が必要な場合、別途譲渡契約が必要になる。 |\n| **無償譲渡の有効性** | 民法上、債務不履行・不当利得の防止のために「**対価が全くない譲渡は無効**」という規定はない。したがって**無償譲渡は原則有効**。ただし、**贈与税・所得税**等の税務上の問題が生じ得る。 | • 乙に対して**贈与税(受贈者側)**が課される可能性。<br>• 甲が事業所得として計上できない(対価がないため)ため、税務上の損金算入ができない。 |\n| **譲渡後の保証(瑕疵担保)** | 民法上、**知的財産権の譲渡には瑕疵担保責任**が伴う(第570条)。甲は「*第三者の権利を侵害しないこと*」や「*著作権が自由に譲渡できる状態であること*」を保証すべき。 | • 甲が既に第三者に権利を譲渡していた/使用許諾していた場合、乙が訴訟リスクを負う。<br>• 甲が著作者でない(例えば、派遣社員が作成した作品)場合、**著作権者が別にいる**ため譲渡が無効になるリスク。 |\n\n---\n\n### 2. 実務上の主なリスクシナリオ\n\n1. **権利範囲が不明確** \n - 条文が「成果物の著作権」だけで、**「複製権・翻案権・公衆送信権」**等が含まれるか明示しないと、後日「翻案権は含まれない」と甲が主張し、乙が二次利用できないケースが発生。\n\n2. **人格権の残存** \n - 著作者人格権は**譲渡不能**(著作権法第20条)。甲が「氏名表示権」や「同一性保持権」を行使し続け、乙の利用が制限される恐れ。特に**ブランド・クリエイターが関わる場合**は顕著。\n\n3. **第三者権利侵害** \n - 甲が内部の別プロジェクトで同様のコードやデザインを既に使用していた/第三者と共同著作した場合、乙がその成果物を自由に利用できず、訴訟や損害賠償請求が生じる。\n\n4. **税務リスク** \n - 無償譲渡は**寄付的性格**があるため、受贈者(乙)に対し**贈与税**が課される。贈与税の基礎控除(2024年現在210万円)を超える場合、乙側の税務申告義務が発生。甲側も**所得税の計上漏れ**がないか確認が必要。\n\n5. **譲渡の対象外が残る** \n - **プログラムの場合**は、**ソースコードと実行プログラム(著作物)**だけでなく、**API仕様書や設計書**など**データベース権(著作権法第53条)**が発生し得る。これらが譲渡対象に入っているか明示しないと、乙が利用できない部分が残る。\n\n6. **将来の契約変更・終了時の権利処理** \n - 契約終了後に**成果物の改変や再配布**が必要になるケースで、甲が人格権を行使して阻害する可能性がある。譲渡後の**保証期間・再譲渡の可否**が未定義だと、乙が二次利用計画を立てられない。\n\n---\n\n### 3. リスク緩和のための条文修正・追加例\n\n| 目的 | 推奨条文(例) | ポイント |\n|------|----------------|-----------|\n| **譲渡範囲の明確化** | 「甲は本成果物に係る**全部の著作権(複製権、頒布権、公衆送信権、翻案権、展示権、二次的著作物の創作権等)**を、対価を支払うことなく乙に**譲渡し、**乙はこれを無制限に利用できるものとする。**」 | 権利の具体的列挙で解釈の余地を排除。 |\n| **人格権の取扱い** | 「甲は本成果物に係る**著作者人格権(氏名表示権・同一性保持権)**について、乙に対し**行使しないことを永続的に保証する。**」 | 法律上は譲渡できないが、行使しない旨の**放棄(権利行使の不履行)**を明示的に約束させる。 |\n| **譲渡対象の限定・包括** | 「本条における『成果物』は、(1)著作物(ソフトウェアのソースコード・実行ファイル・ドキュメント等)、(2)著作権法第53条に規定する**データベース権**、及び(3)本契約に明示的に付随する**隣接権**(必要に応じて)を含むものとする。」 | データベース権等、著作権以外の知的財産権も抜け漏れなくカバー。 |\n| **保証条項(瑕疵担保)** | 「甲は、譲渡する著作権が第三者の権利に基づく制限を受けていないこと、及び本成果物が**第三者の著作権・特許権・商標権等**を侵害しないことを表明し、保証する。万一侵害が判明した場合、甲は自己の費用と責任でこれを解決し、乙に一切の損害を賠償するものとする。」 | 従来の瑕疵担保(第570条)に加えて、**侵害保証**を盛り込むことで乙のリスクを低減。 |\n| **税務に関する確認**(※別条項でも可) | 「本譲渡は無償であるが、甲乙双方は本取引に係る税務上の義務(贈与税、所得税等)を各自で適切に履行するものとし、相手方に対して一切の税負担を転嫁しない。」 | 税務リスクの所在を明確化し、争点化を回避。 |\n| **譲渡後の利用・改変に関する条項** | 「乙は譲渡後、自己の裁量により本成果物を改変、二次的著作物の作成、再配布、販売等を行うことができる。甲は本件に関し、いかなる権利も行使しない。」 | 改変・二次利用の自由度を明示し、将来の事業展開に支障が出ないようにする。 |\n| **終了・解除時の権利処理** | 「本契約が解除または終了した場合でも、本条に基づく著作権譲渡は**遡及的に無効化されない**ものとし、乙は引き続き本成果物を自由に利用できる。」 | 契約終了後に甲が権利回復を主張できないようにする。 |\n\n---\n\n### 4. 契約書全体で留意すべきポイント\n\n| 項目 | 留意点 |\n|------|--------|\n| **成果物の定義** | 「成果物」の範囲を**具体的に列挙**(例:ソースコード、実行バイナリ、マニュアル、設計図、テストデータ、UIデザイン等)し、**除外項目**(例:既存素材、第三者提供素材)も明示。 |\n| **著作者の帰属** | 著作者が**甲に属していない**(例:派遣社員・業務委託先が著作者)の場合、**著作者から乙への直接譲渡**が必要。甲が単に「権利を取得」できるか検証する。 |\n| **秘密保持・競業禁止** | 著作権譲渡と同時に「**守秘義務**」や「**競業禁止**」が設定される場合、譲渡後の情報流出リスクを防止。 |\n| **再利用・サブライセンス** | 乙が第三者へサブライセンスを付与できるか、**サブライセンスの範囲**を明示。 |\n| **保証・免責** | 甲が**全リスクを負う保証**としつつ、**不可抗力・第三者の権利侵害**に対する免責項目は慎重に設計。 |\n| **紛争解決** | 著作権紛争は**裁判だけでなく、仲裁や調停**も検討できるよう、**管轄裁判所や仲裁機関**を明記。 |\n| **記録保存** | 契約締結時に**著作権譲渡登記(任意)**や**著作権譲渡証書**を作成し、**版本管理システム上に保存**して証拠保全を徹底する。 |\n\n---\n\n### 5. 実務的チェックリスト(甲・乙双方向け)\n\n| No. | 項目 | 確認すべきこと |\n|-----|------|----------------|\n| 1 | **譲渡対象の明示** | 成果物リスト、権利範囲(著作権・隣接権・データベース権) |\n| 2 | **著作者の確定** | 甲が著作者、または著作者から適切な譲渡権限を取得しているか |\n| 3 | **人格権の取扱い** | 氏名表示権・同一性保持権の放棄・不行使の合意 |\n| 4 | **第三者権利の有無** | 既存ライブラリ・素材が第三者権利に触れないか |\n| 5 | **税務確認** | 贈与税・所得税の負担者・申告手続き |\n| 6 | **保証内容** | 無侵害保証・瑕疵担保の範囲 |\n| 7 | **利用制限の有無** | 改変・サブライセンスの可否 |\n| 8 | **契約終了後の権利** | 譲渡の永続性・解除後の権利帰属 |\n| 9 | **記録・証拠保全** | 譲渡証書・付随文書の保存方法 |\n|10 | **紛争解決手段** | 管轄裁判所・仲裁条項の設定 |\n\n---\n\n## 6. まとめ\n\n- **第3条単体では、**「著作権を無償で譲渡」**という基本的な合意は有効ですが、**「譲渡対象の範囲」**、「**人格権の取扱い」**、「**第三者権利の有無」**、**「税務上の取扱い」**が不明確・未規定であると、後々の訴訟・税務リスクが顕在化します。 \n- **リスク緩和策としては、** \n 1. **譲渡範囲の具体的列挙**(複製権・翻案権等) \n 2. **著作者人格権の行使禁止の明示** \n 3. **第三者権利侵害保証**と**瑕疵担保**の規定 \n 4. **税務上の負担者を明示** \n 5. **成果物の定義と除外項目の明示** \n を条文に盛り込むことが重要です。 \n- **実務上は、**譲渡証書の作成・署名・日付、関係者(開発者・外部ライセンサー)からの同意取得、そして**社内のIP管理フロー**に組み込むことで、契約後の争点化を防止できます。\n\n> **最終的な提案**:本条を上記修正例に合わせて**条文全体(第3条+付随条項)**として再構築し、当事者双方が**“譲渡の範囲・条件・保証”**について相互に合意していることを文書化することを強く推奨します。 \n\n--- \n\n**ご質問や、他条項との整合性についてのご相談があれば遠慮なくお知らせください。** \n(※本回答は一般的な法的情報提供であり、個別案件に対する法的助言ではありません。
少し複雑そうに見える内容ですが、なんとシンプルに分類され、ウォレット空で無料モデル(gpt-oss-120b)に流れました。しかし、無料モデルと言っても、著作権法第27条・第20条の引用、人格権の扱い、税務リスク、条文修正例まで、かなり本格的な法的分析が返ってきています。
しかし、契約書の法的リスク分析が [SIMPLE] と判定されているのは、ClawRouterの分類精度の限界を示しているのかもしれません。
さいごに
いかがだったでしょうか?
AIエージェント向けのルーター、ClawRouterを紹介しました。ClawRouterはOSSとして十分動作することを確認できました。コスト削減の仕組みとしての基本的なポテンシャルは高いが、分類精度の課題と一部バグが残っているので、本格運用までは考える必要がありそうです。
ご覧いただきありがとうございました!