Cheaplane について
Cheaplaneは、メインのエージェントにdelegateツールを追加し、LiteLLMプロキシ経由で定型作業を低コストモデルへ委任するMCPサーバーです。タスク内容に応じてモデルを振り分け、委任処理とメインスレッドのサブスクリプション認証情報を分離します。
主な機能
- 01delegateによるタスク委任
- 02タスク内容に応じた自動ルーティング
- 03モデルエイリアスの指定
- 04利用量と節約額の推定記録
- 05ターンごとのリマインダー
活用シーン
- 01ボイラープレートの生成やコード整形
- 02長文書の要約と情報抽出
- 03テキスト翻訳や定型文の作成
- 04委任呼び出しの利用記録の確認
MCP 対応
MCPサーバーはメインエージェントにdelegateツールを公開し、ローカルのLiteLLMプロキシが提供するモデルエンドポイントに接続します。委任プロセスはメインスレッドのサブスクリプション認証情報から分離されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx cheaplaneDELEGATE_BASE_URLOpenAI-compatible endpoint serving the cheap models — usually a local LiteLLM proxy.DELEGATE_API_KEYシークレットKey for that endpoint. A local proxy ignores it; set a real one for a hosted endpoint.DELEGATE_TIMEOUTPer-call timeout in seconds. Raise it for long documents.DELEGATE_MODEL_MAPJSON remapping the built-in aliases to your proxy's model names, e.g. {"deepseek": "deepseek-v4"}.DELEGATE_NO_LOGSet to 1 to disable the local savings ledger (metadata only, never task content).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
3掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| task | string | はい | |
| model | string | いいえ | |
| max_tokens | integer | いいえ |
詳細
Cheaplane 🛣️
プレミアムサブスクリプションはメインスレッドで使い続けましょう。面倒な作業は安価なモデルに任せられます。Cheaplane が適切なモデルを選んでくれます。定型作業にプレミアムトークンを浪費するのはやめましょう。
Cheaplane は、単一ファイルの小さな MCP サーバー(約 250 行、標準ライブラリと mcp のみ)で、メインエージェント(たとえば、Max サブスクリプションの Claude Code)に、追加のツール delegate を提供します。エージェントは思考(計画、アーキテクチャ、最終レビュー)を続けながら、代替可能な面倒な作業(定型コード、書式設定、翻訳、長いドキュメントの要約)を、ローカルの LiteLLM プロキシ経由で安価なモデル(DeepSeek、Kimi、Qwen など)に任せます。これは、プレミアムエージェントのための安価なインターンのようなものです。退屈な作業をこなしてもらいながら、あなたは考えることに集中できます。
これを安全にする仕組みは、委任した呼び出しとサブスクリプションが、物理的に別のプロセスで動作し、認証情報を共有しないことです。(重要な理由 ⬇️)
これを手間なく使えるようにする仕組みは、自動ルーティングです。delegate(task) はタスクの内容から適切な安価なモデルを選びます。コードなら DeepSeek、長いドキュメントなら Kimi、中国語なら Qwen です。(仕組み ⬇️)
これを継続して使えるようにする仕組みは、エージェントがツールの存在を忘れないための、ターンごとのリマインダーフックです。これは多くの「delegate」ツールが省いている部分です。また、節約記録でクォータの消費をどれだけ抑えたかを確認できます。
動作を確認 — エージェントが作業を任せ、自動ルーティングで安価なコードモデルに送ります。
delegate("convert to a TypeScript interface: {id, name, email, isAdmin, roles[]}")
interface User {
id: number;
name: string;
email: string;
isAdmin: boolean;
roles: string[];
}
↑ 実際の呼び出し結果です。モックアップではなく、モデルを手動で選んでもいません。このトークンコストはプレミアムモデルの 約 90 分の 1 で、サブスクリプションのクォータはまったく減っていません。
問題点
プレミアムモデルの価値が発揮されるのは難しい問題ですが、トークンはすべてプランの利用量に加算されます。そして、JSON の再フォーマット、UI 文字列の翻訳、一度読めば済むドキュメントの要約といった単純作業でクォータを消費してしまいます。よくある「安価なモデルを使えばいい」という構成では、次のような不本意な選択を迫られます。
- エージェント全体をダウングレードする → 本当に重要な作業で、メインスレッドの品質が低下します。
- すべてを API キー経由でルーティングする → すでに料金を支払っているサブスクリプションを使わなくなります。
Cheaplane は理想的なバランスを保ちます。判断にはプレミアムモデルをメインスレッドで使い、単純作業には安価なモデルを使い、請求が物理的に混ざらないようにします。
Cheaplane との比較
2026年によく見られる方法は、エージェント全体を安価なモデル(DeepClaude 方式)に切り替えることです。コストを大幅に抑えられますが、実際に思考に使うスレッドの性能を落とし、ほかの MCP ツールを壊してしまいます。また、Pro/Max サブスクリプションを利用している場合は適用できません。Cheaplane はその逆を目指します。
| エージェント全体を安価なモデルに切り替え → (DeepClaude 方式) | すべてを1つの API キー経由にする | Cheaplane | |
|---|---|---|---|
| メインスレッド | ⬇️ 性能が低下 | ⬇️ サブスクリプションが使えなくなる | ✅ プレミアムのまま |
| ほかの MCP ツール | ❌ 壊れる | ✅ | ✅ (MCP サーバーそのものです) |
| Pro/Max サブスクリプションで動作 | ❌ API キー専用 | ❌ 置き換える | ✅ そのために作られています |
| 安価なモデルを自動選択 | ❌ すべての作業に1つのモデル | ❌ | ✅ auto ルーティング |
| 節約額を表示 | ❌ | ❌ | ✅ savings 台帳 |
| 課金 | 1つに統合 | トークンごとに課金 | 🔒 サブスクリプションと安価なモデルを分離 |
この比較は、2026年半ばに公開された報告に基づき、バックエンド切り替え方式(DeepClaude 方式)がどのように動作したかを示しています。詳細はツールによって異なり、変更される場合があります。
「安価」とはどの程度?
単純作業は簡単な仕事です。そこにプレミアム料金を払うのは、まったくの無駄です。100万トークンあたりの料金(2026年半ばの公開価格):
| モデル | 入力 | 出力 | 最適な用途 |
|---|---|---|---|
| Claude Opus (参考:API) | $5.00 | $25.00 | 手元に残しておく判断を要する作業 |
| DeepSeek V4 Flash | $0.14 | $0.28 | コード/書式設定 |
| Kimi K2 | $0.60–0.95 | $2.50–4.00 | 長文ドキュメント(非常に大きなコンテキスト) |
| Qwen | $0.05–0.40 | $0.20–1.20 | 中国語の文章 |
Opus の出力トークン1つに約$25かかるのに対し、DeepSeek では約$0.28です。高度な知能が不要な作業に約90倍もかかります。 サブスクリプションを利用している場合、この$25を直接支払うわけではありません。メインスレッドが消費するのは金額ではなく、利用枠です。これが重要なポイントです。定型作業を委任するたびに、難しい問題のためにプレミアム利用枠を残せます。(DeepSeek Flash で40ページのドキュメントを要約しても、約$0.005です。利用枠には気づかれないほどです。)
価格は2026年半ばの公開価格で、料金プランやキャッシュ利用によって異なります。各プロバイダーにご確認ください。重要なのは正確な節約額ではなく、桁違いの価格差です。
課金の分離(これが重要です)
「節約」をうたう方法の多くは、請求をひとまとめにしてしまいます。Cheaplane では、請求が物理的に分離されています。
flowchart LR
A["Main agent<br/>premium subscription"] -->|"delegate(task)"| B["Cheaplane MCP<br/>own process, own key"]
B -->|HTTP| C["LiteLLM proxy<br/>localhost:4000"]
C --> D["DeepSeek / Kimi / Qwen<br/>cheap, pay-per-use"]
Cheaplane のプロセスは、サブスクリプションプロバイダーの SDK をインポートせず、認証情報を読み取らず、OAuth トークンにも触れません。 知っているのは、HTTP エンドポイント(プロキシ)とそのキーだけです。メインスレッドはサブスクリプションに課金され、委任された呼び出しは安価なプロキシに課金されます。2つが混ざることはありません。ポリシーによるものではなく、アーキテクチャによって分離されています。
クイックスタート
最速の方法 — Claude Code なら、スクリプトを 1 つ実行するだけです:
git clone https://github.com/millennialdreamer/cheaplane && cd cheaplane
cp litellm.yaml.example litellm.yaml # then: export DEEPSEEK_API_KEY=sk-...
litellm --config litellm.yaml & # start the cheap-model proxy on :4000
bash setup.sh # deps + register MCP + reminder hook + verify
setup.sh は冪等性があり(何度実行しても安全です)、依存関係をインストールし、Claude Code に delegate MCP サーバーを登録し、ターンごとのリマインダーフックをインストールして、チェーン全体が正常に動作することをエンドツーエンドで検証します。あとは Claude Code の新しいセッションを開始すれば完了です。

パッケージを使いたいですか? Cheaplane は PyPI で公開されています。クローンも、パスのハードコードも不要です:
pip install cheaplane # or: uvx cheaplane / pipx install cheaplane
claude mcp add delegate cheaplane
それでも手順 1 のプロキシは必要です。また、リマインダーフックも便利です。ただし、こちらにはリポジトリが必要です。
手動セットアップ/setup.sh の内部処理
1. 安価なモデル用の OpenAI 互換エンドポイントを用意します。 多くの人は、DeepSeek / Kimi / Qwen の前段にプロキシとして LiteLLM をローカルで実行しています。最小限の設定は約 5 行です:
# litellm.yaml — exposes DeepSeek under the model_name "deepseek"
model_list:
- model_name: deepseek
litellm_params:
model: deepseek/deepseek-chat # swap for any provider/model LiteLLM supports
api_key: os.environ/DEEPSEEK_API_KEY
pip install 'litellm[proxy]'
litellm --config litellm.yaml # serves http://localhost:4000
この model_name: deepseek は Cheaplane のデフォルトエイリアスに対応しているため、すぐに動作します。(deepseek は LiteLLM に組み込まれたプロバイダーなので、api_base は不要です。カスタムまたはセルフホストのエンドポイントを使う場合にのみ追加します。)すでに OpenAI 互換エンドポイント(LiteLLM、OpenRouter、Ollama、vLLM など)をお持ちの場合は、この手順を省略して DELEGATE_BASE_URL をそのエンドポイントに設定してください。
2. Cheaplane をインストールします — PyPI から、またはリマインダーフックと probe.py も使う場合はクローンからインストールします:
pip install cheaplane # installs a `cheaplane` command; that's the whole install
git clone https://github.com/millennialdreamer/cheaplane && cd cheaplane
uv sync # or: python -m venv .venv && .venv/bin/pip install mcp
3. MCP クライアントに登録します。 PyPI からインストールした場合は、コマンドがすでに PATH に追加されています:
{
"mcpServers": {
"delegate": { "command": "cheaplane" }
}
}
クローンから使う場合は、.mcp.json.example をリポジトリのルートに .mcp.json としてコピーして、パスを修正します(または claude mcp add を使います):
{
"mcpServers": {
"delegate": {
"command": "uv",
"args": ["run", "--directory", "/ABSOLUTE/PATH/TO/cheaplane", "python", "server.py"]
}
}
}
4. エンドツーエンドで検証します — 手順 1 のプロキシを実行した状態で確認します(ハンドシェイク → ツール一覧の取得 → 実際の委任呼び出し):
uv run python probe.py
# ✅ chain works (main → MCP → cheap model → back)
delegate を使う
エージェントから delegate(task) を使えるようになりました。ルーティングは自動で行われます。変更するのは、必要な場合だけです:
delegate("convert this JSON to a TypeScript interface: …") # auto → deepseek (code)
delegate("summarize this 40-page contract: …") # auto → kimi (very long input)
delegate("…Chinese text in the task auto-routes here…") # auto → qwen (Chinese copy)
delegate("translate these UI strings to Japanese", "flash") # explicit alias still wins
| エイリアス | 適した用途 |
|---|---|
auto | デフォルト — タスクの内容から、以下のいずれかを選びます |
deepseek | コード/バランス重視 |
mimo | 推論/複数ステップのタスク |
flash | 高速処理/フォーマット/翻訳 |
kimi | 長文書(非常に大きなコンテキスト) |
qwen | 中国語のコピーライティング |
エイリアスは LiteLLM の model_name に対応します。コードを編集せずにプロキシの接続先を指定できます。DELEGATE_MODEL_MAP 環境変数(JSON オブジェクト)を設定するか、~/.claude/delegate-model-map.json を作成してください(ホットリロードされるため再起動は不要です)。server.py の MODEL_ALIASES を編集する方法もあります。
委任する作業と自分で行う作業の目安
委任する(安価なモデルに任せる):
- 明確な仕様に基づく定型コード/ひな形の作成
- 機械的なリファクタリング、フォーマット、Lint の修正
- 翻訳、長いドキュメントの要約や事実の抽出
- 定型的な文章:変更履歴、docstring、コミットメッセージ
自分で行う:
- 計画、アーキテクチャ、技術的なトレードオフ
- 委任した出力の最終レビュー — 必ず自分で行う
- ユーザーとのやり取り、判断が必要なこと
- わずかな誤りでも大きな損失につながる作業
委任先のモデルに見えるのは、あなたの task 文字列だけです。会話にはアクセスできません。タスクはそれだけで完結するようにしてください。仕様、実際の入力、希望する正確な出力形式を含めます。
節約額を確認する
委任呼び出しのたびに、**メタデータのみ(タスクの内容は記録されません)**が ~/.cheaplane/usage.jsonl に 1 行追記されます。いつでもエージェントに savings を尋ねられます(出力例):
Cheaplane savings — all time
delegated calls : 184
tokens offloaded: ~412,300 in / ~365,800 out
premium cost avoided (Opus list): ~$11.21
actually spent (DeepSeek-class) : ~$0.16 (≈70× cheaper, in+out blended)
last 7 days : 31 calls, ~$2.04 avoided
数値は公開されている定価に基づく推定値です。本当のメリットは、サブスクリプションのプレミアムクォータを消費せずに済むことです。記録されるのはトークン数とモデル名だけです。ファイルはいつでも削除できます。また、DELEGATE_NO_LOG=1 を設定すると、ログ記録を完全に無効にできます。
エージェントに実際に使わせる
「安価なモデルに委任する」ツールの誰もが知っている秘密があります。難しいのはインストールではなく、エージェントに実際に使わせることです。 エージェントにツールを追加しても、実際のタスクを数ターン進めるうちにツールの存在を忘れ、プレミアムトークンを使って面倒な作業まで自分でこなしてしまいます。指示はコンテキストの奥に沈み、注意は別のことに移ります。
Cheaplane には、その解決策が最初から用意されています。組み合わせて使える次の 3 つのレイヤーです。
- スキル(
SKILL.md)— いつ委任すべきかをエージェントに教えます。どのクライアントでも使えますが、受動的な方法なので、基本として考えてください。 CLAUDE.md/システムプロンプトに追加する1 行のデフォルト指示:「自分で代替可能な面倒な作業をする前に、委任してください。」 より効果的ですが、静的な指示は長い会話の中でやはり埋もれていきます。- ターンごとにリマインドするフック — 信頼性の高い方法です(Claude Code)。すべてのプロンプトにリマインダーを再挿入するため、習慣が視界から消えることはありません。これによって、ツールがインストールされている状態から、使われている状態に変わります。
他の MCP クライアント(UserPromptSubmit フックの仕組みがない場合)では、レイヤー 1〜2 を使い、クライアントがサポートするシステムプロンプトに 1 行の指示を組み込んでください。
フックをインストールします。安全で冪等です(設定をバックアップし、上書きではなくマージし、再実行時には重複を除去します)。
bash install-hook.sh # registers hooks/delegate-reminder.sh as a UserPromptSubmit hook
# verify it's wired up:
python3 -c "import json,os;s=json.load(open(os.path.expanduser('~/.claude/settings.json')));print([h['command'] for e in s.get('hooks',{}).get('UserPromptSubmit',[]) for h in e.get('hooks',[])])"
新しいセッションを開始すると、エージェントは毎ターン、自分で確認します。「これは代替可能な面倒な作業か? → 委任しよう。」
リマインダーのコストは 1 ターンあたり約 60 トークンです。委任を 1 回忘れただけで消費する数百のプレミアムトークンに比べれば、取るに足りません。このフックは Claude Code の UserPromptSubmit の仕組みを使用します。
設定
| 環境変数 | デフォルト | 意味 |
|---|---|---|
DELEGATE_BASE_URL | http://localhost:4000 | OpenAI 互換エンドポイント(プロキシ) |
DELEGATE_API_KEY | sk-litellm | そのエンドポイントのキー |
DELEGATE_TIMEOUT | 120 | 呼び出しごとのタイムアウト(秒) |
DELEGATE_MODEL_MAP | (なし) | エイリアスを置き換える JSON。例:{"deepseek":"deepseek-v4-flash"} — デフォルトを上書きし、コードの編集は不要です |
DELEGATE_LOG | ~/.cheaplane/usage.jsonl | 節約記録の保存先 |
DELEGATE_NO_LOG | (未設定) | 1 に設定すると、記録を完全に無効にします |
FAQ
サブスクリプションの認証情報が漏れることはありますか?
いいえ。delegate ツールは独立したプロセスで動作し、ご自身で設定したエンドポイントに通常の HTTP リクエストを送るだけです。サブスクリプションの SDK をインポートすることも、その認証情報を参照することもありません。課金の分離をご覧ください。
節約記録には具体的に何が記録されますか?
呼び出しごとに 1 行の JSON が記録されます。タイムスタンプ、エイリアス、モデル名、トークン数/文字数です。タスクのテキストも、モデルの出力も記録されません。 ~/.cheaplane/usage.jsonl はいつでも削除できます。または、DELEGATE_NO_LOG=1 を設定してください。
auto はどのように使用するモデルを決めますか?
server.py の小規模な決定論的ヒューリスティック(_pick_model。読んで調整できる約 20 行)で判断します。コードに関する兆候があれば deepseek、入力が非常に長ければ kimi、中国語の比重が高ければ qwen、複数ステップの言語タスクなら mimo、短く機械的な作業なら flash を選びます。明示的なエイリアスを指定した場合は、常にそちらが優先されます。
すべてに 1 つの API キーを使う方法とは何が違いますか? API キーを 1 つだけ使う場合、サブスクリプションをまったく使わなくなり、難しい作業も含むすべての作業でトークンごとに料金を支払うことになります。Cheaplane はサブスクリプションをプレミアムなメインスレッドとして維持し、安価で代替可能な反復作業だけを別の場所に送ります。
Claude Code 以外でも使えますか? はい。Cursor、Cline、Windsurf など、MCP 互換のクライアントであれば使えます。メインエージェントが MCP ツールをサポートしている必要があります。汎用の JSON 設定については、手動セットアップをご覧ください。
DeepSeek/Kimi/Qwen を使う必要がありますか?
いいえ。OpenAI 互換エンドポイント経由でアクセスできるものであれば何でも使えます。エイリアスは便宜上のラベルにすぎず、DELEGATE_MODEL_MAP で置き換えられます。
プロバイダーに直接接続せず、プロキシを使うのはなぜですか? エンドポイントとキーを 1 つにまとめられ、利用状況の記録やモデルの切り替えも簡単になります。また、プロバイダーのキーを MCP サーバーに一切置かずに済みます。
ロードマップとアイデア(協力者募集中)
Cheaplane のコアは意図的に小さく保っていますが、そこから広がる可能性は大きいです。これまでに実装済みのもの:✅ 自動ルーティング(v0.2)、✅ 節約額の記録(v0.2)。今後も取り組む価値のあるものがあります。提案や PR を歓迎します。多くは初めて取り組むのにちょうどよい、小規模な課題です。
- よりスマートなルーティング — 現在のルーターは読みやすいヒューリスティックです。より優れたシグナル(または学習型ルーター)は、自由に試せる領域です。
- より充実した節約額ダッシュボード — 記録はプレーンな JSONL です。
cheaplane statsで表示できる HTML ビューがあると便利です。 - 結果キャッシュ — 同一のタスクを再委任せずに済むようにします。
- 自動レビュー — 戻ってきたコードを、信頼する前に lint/テストします。
- バッチ/並列委任 — 1 回の呼び出しで複数の作業を委任します。
- ほかのクライアント向け導入レシピ — リマインダーフックは Claude Code の
UserPromptSubmitを対象にしています。Cursor/Cline などにも、それぞれに合った促し方が必要です。
設計ルール:コアは単一ファイルで、依存関係を軽く保ちます。これがすべての肝です。 拡張機能はオプトイン方式で追加し、5 分で読めるものは、これからも 5 分で読めるようにしましょう。
貢献
Issue や PR を歓迎します。重い依存関係のない、約 250 行の単一ファイルの Python なので、簡単に手を加えられます。役立つモデルの別名、ルーティングシグナル、またはクライアント向け導入レシピを追加して、送ってください。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。