知識ベースのセクション ▾
ナビゲーション
▸ ここから始める 役割別カテゴリー
- Cursor + Gonka AI — コーディングのための安価な LLM
- Claude Code + Gonka AI — ターミナルのための LLM
- OpenClaw + Gonka AI — 利用しやすい AI エージェント
- OpenCode:ターミナルで独自のモデルを
- Continue.dev + Gonka AI — VS Code/JetBrains のための AI
- Cline + Gonka AI — VS Code の AI エージェント
- Aider + Gonka AI — AI とのペアプログラミング
- LangChain + Gonka AI — ごくわずかなコストの AI アプリケーション
- n8n + Gonka AI — 安価な AI による自動化
- Open WebUI + Gonka AI — 独自の ChatGPT
- LibreChat + Gonka AI — オープンソースのChatGPT
- Gonkaネットワーク上のHermes Agent + DeepSeek — 超低コスト自律エージェント
- Kilo Code + Gonka AI — VS Code内のAIエージェント
- Roo Code + Gonka AI — VS Code内の自律型AIエージェント
- LlamaIndex + Gonka AI — 超低コストの RAG アプリケーション
- PydanticAI + Gonka — 超低コストのタイプ付き AI エージェント
- Vercel AI SDK + Gonka AI — TypeScript での超低コスト AI アプリケーション
- TanStack AI + Gonka — TypeScript での超低コスト AI アプリケーション
- APIクイックスタート — curl, Python, TypeScript
- JoinGonka Gateway — 完全な概要
- マネジメントキー — Gonka 上の SaaS
- 最安AI API:2026年プロバイダー比較
- AIトークンとAPIキーの購入方法:2026年の3つの手段
- Cursor Proのクエリ制限が終了 — 原因分析と安価な代替案
- Claude Codeがより安く — 請求額の内訳と切り替え
- Clineのコスト高騰 — なぜエージェントがこれほど消費するのか
- OpenClawは高くつく — なぜエージェントはトークンを浪費するのか、どう節約すべきか
- OpenRouter:安価な代替手段 — JoinGonka Gatewayとの比較
- 2026年コーディングに最適なAIモデル:比較と価格
- GitHub Copilot の低コスト代替ツール:制限なし
- クレジット制限なし!Windsurfの安価な代替手段
- 2026年、AIエージェントのための最も安価なAPI
- ZCode:GLM Coding Planの代わりに使える格安GLM推論
- JetBrains IDE + JoinGonka Gateway — クレジットの代わりに独自endpointを利用
- GitHub Copilot BYOK — クォータの代わりに独自モデルを利用
- Zed + JoinGonka Gateway — エディタ内での安価な推論
- Pi + JoinGonka Gateway — 安価なインファレンス上のターミナルエージェント
- Codex CLI:サブスクリプションの代わりに独自のキーを使用
- DeepSeek Harness: JoinGonka Gateway経由の独自プロバイダー
- MiniMax Code: Gonka経由で独自キーを使うMiniMaxエージェント
- Warp + JoinGonka Gateway — エンドポイントでのターミナルエージェント
- Trae + JoinGonka Gateway — AI-IDEでGonkaネットワークモデルを利用
- Cherry Studio + JoinGonka Gateway — デスクトップAIクライアント
- omp (Oh My Pi) + JoinGonka Gateway: モデルロールを備えたエージェント
- OpenHands + JoinGonka Gateway: カスタムエンドポイント上のエージェント
- qwen-oauth終了後のQwen Code:JoinGonka Gateway経由の利用
- Goose + JoinGonka Gateway: プロバイダーとキーをキーリングで管理
- Crush + JoinGonka Gateway: Gonkaネットワークモデル上のCharmエージェント
- Zoo Code + JoinGonka Gateway: Roo CodeからGonkaモデルへの移行
- Kimi Code CLI: Gonka経由で専用キーを使うMoonshot AIエージェント
- Factory Droid + JoinGonka Gateway: GonkaネットワークモデルでのBYOK
- MiMo Code + JoinGonka Gateway: Gonkaネットワークモデル上のXiaomiエージェント
ツール
Crush + JoinGonka Gateway: Gonkaネットワークモデル上のCharmエージェント
CrushはCharmによるターミナルコーディングエージェントです。Charmは数万のプログラムで採用されているコンソールインターフェースライブラリの開発チームです。プロジェクトファイルの読み書き、コマンド実行、言語サーバーからのコンテキスト取得(LSP)、MCP経由での外部ツール接続、セッション途中のモデル切り替え(コンテキスト維持)に対応しています。macOS、Linux、Windows、Android、BSDで動作し、ライセンスはFSL-1.1-MITです。プロジェクトの背景は明確で、アーカイブされた opencode-ai/opencode リポジトリはCrushに直結しており、最初の作者とCharmチームがプロジェクトを引き継ぎました。
CrushはOpenAI互換とAnthropic互換の2種類のサードパーティプロバイダーを受け入れます。JoinGonka Gatewayは openai-compat として接続可能です。インストーラーコマンドを実行するか、設定ファイルを数行記述するだけで済みます。これにより、DeepSeek V4 Flash、GLM-5.3 Flash、MiniMax M2.7といったGonkaの分散ネットワークモデルを、入力100万トークンあたり$0.0069という均一価格で利用できます。
Crushを初めて使う前に知っておくべき2つの特徴があります。モデルはlargeとsmallの2つのスロットに配置されること、そしてインターフェースで選択したモデルは設定よりも優先される別の状態ファイルに保存されることです。これらについては別のセクションで詳しく説明します。以下のコマンドとメッセージは、2026年9月23日にゲートウェイ経由でCrush 0.96.1を実際に実行して検証済みです。アドレスを確認すると、3Mの無料トークンがアカウントに付与されます。これを使えば、すべて自分で試すことができます。
クイックスタート:インストールとコマンド実行
ステップ1:Crushをインストールする。公式の方法はプロジェクトのREADMEに記載されています:
# Homebrew
brew install charmbracelet/tap/crush
# npm
npm install -g @charmland/crush
# Arch Linux
yay -S crush-bin
# Windows
winget install charmbracelet.crush
# Go
go install github.com/charmbracelet/crush@latest同じページにはDebian、Ubuntu、Fedora、RHEL、Nix、Scoop用のパッケージリポジトリの説明もあり、リリースページにはビルド済みバイナリが用意されています。確認はcrush --versionで、crush version v0.96.1のような文字列が返ってきます。
ステップ2:キーを取得する。gate.joingonka.ai/registerで登録し、アドレスを確認して、「APIキー」セクションでjg-プレフィックスのキーを作成します。1つのキーと1つの残高が、ネットワーク上のすべてのモデルで有効です。
ステップ3:インストーラーを実行する。
npx @joingonka/setup --tool crushインストーラーはキーの入力を求めます — シェル履歴に残らないよう、コマンドライン引数では渡しません — そして4つの処理を行います:
- プロバイダー
joingonkaを~/.config/crush/crush.jsonに書き込みます:タイプはopenai-compat、ゲートウェイのアドレス、リテラル形式のキー、そしてコンテキストウィンドウ・応答上限・100万トークンあたりの価格を持つ3つのネットワークモデル。これらの価格はインストール時にゲートウェイからリアルタイムで取得し、Crushはそれに基づいてセッションのコストを計算します。ファイルのパーミッションは600になります。 - モデルを割り当てます:largeスロットにはDeepSeek V4 Flash、smallにはMiniMax M2.7、GLM-5.3 Flashは手動選択用のリストに残ります。これはlargeスロットが空か、ネットワークから外れた当社のモデルを指している場合にのみ実行されます。他の選択はそのまま残り、出力に切り替え方法のヒントが表示されます。
- 選択が有効になることを確認します:Crushのインターフェースで選んだモデルは状態ファイルに保持され、それが設定を上書きするためです — これについてはlargeとsmallのセクションで説明しています。
- バックアップを作成し、他のプロバイダーと設定はそのままにして、ゲートウェイへの実際のリクエストで終了します。これにより、キー・アドレス・モデルをすぐに検証できます。
別のモデルは--modelフラグで指定します。省略形はdeepseek、glm、minimaxです。明示的に指定されたモデルは常に書き込まれます。非標準のディレクトリは、Crush本体と同じようにインストーラーも考慮します:設定にはCRUSH_GLOBAL_CONFIG、状態ファイルにはCRUSH_GLOBAL_DATA、さらにXDG_CONFIG_HOMEとXDG_DATA_HOMEです。サーバーやスクリプト向けに対話なしモードがあり、そこではキーを環境変数から取得します:
JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool crush --model glm --non-interactiveCrushの主要フォーマットは現在crushrcになりましたが、インストーラーはcrush.jsonを書き込みます:これはすべてのバージョンで認識されます。crushrcがすでにある場合、Crushは両方のファイルをマージし、キーが重複する場合はcrushrcが優先されますが、インストーラー自体はそれに触れません。
手動設定: crush.json または crushrc
インストーラーがやっていることは、すべて手書きで再現できます。以下が実際に動作する ~/.config/crush/crush.json です — このファイルを私たちはゲートウェイ経由で実行しました:
{
"$schema": "https://charm.land/crush.json",
"providers": {
"joingonka": {
"name": "JoinGonka (Gonka)",
"type": "openai-compat",
"base_url": "https://gate.joingonka.ai/v1",
"api_key": "jg-your-key",
"models": [
{ "id": "deepseek-ai/DeepSeek-V4-Flash-0731", "name": "DeepSeek V4 Flash (Gonka)",
"context_window": 380000, "default_max_tokens": 32768,
"can_reason": true, "supports_attachments": false },
{ "id": "MiniMaxAI/MiniMax-M2.7", "name": "MiniMax M2.7 (Gonka)",
"context_window": 200000, "default_max_tokens": 8192,
"can_reason": false, "supports_attachments": false },
{ "id": "zai-org/GLM-5.3-Flash", "name": "GLM-5.3 Flash (Gonka)",
"context_window": 390000, "default_max_tokens": 8192,
"can_reason": true, "supports_attachments": false }
]
}
},
"models": {
"large": { "provider": "joingonka", "model": "deepseek-ai/DeepSeek-V4-Flash-0731" },
"small": { "provider": "joingonka", "model": "MiniMaxAI/MiniMax-M2.7" }
}
}| フィールド | 値 | 押さえておきたい点 |
|---|---|---|
type | openai-compat | OpenAI互換APIを提供する外部サービス向けのタイプ。Crushのドキュメントでは、openai タイプはOpenAI本体経由のリクエスト用とされています |
base_url | https://gate.joingonka.ai/v1 | 末尾に /v1 を付ける:/chat/completions のパスはCrushが自動で補います |
api_key | あなたのキー jg-… | Crushは値をシェル置換に通すため、キーの代わりに $JOINGONKA_API_KEY と書くこともできます。その場合はCrushを起動する環境で変数をエクスポートしておく必要があります |
context_window | モデルのコンテキストウィンドウ | Crushはこれを使ってコンテキストの使用率を表示し、履歴を圧縮するタイミングを判断します |
default_max_tokens | 応答の上限 | 各リクエストに max_tokens として送信されます。推論モデルの場合、この予算には推論も含まれます |
Crushは厳格なJSONのみを受け付けます。コメントや末尾のカンマが1つあるだけで起動しません。価格フィールド(cost_per_1m_in、cost_per_1m_out、およびキャッシュ用の2フィールド)はコストカウンター専用です。インストーラーはそこにゲートウェイの実際の価格を書き込みますが、これらがなくてもCrushは動作し、ゼロと表示されます — $schema のスキーマを持つエディタだけが、これらを必須としてハイライトするでしょう。
同じプロバイダーを crushrc 形式で書くとこうなります。これはCrushの組み込みコマンドが使える通常のBashです。ファイル ~/.config/crush/crushrc:
provider add joingonka \
--name "JoinGonka (Gonka)" \
--type openai-compat \
--base-url "https://gate.joingonka.ai/v1" \
--api-key "${JOINGONKA_API_KEY:?set JOINGONKA_API_KEY}"
model add joingonka/deepseek-ai/DeepSeek-V4-Flash-0731 \
--name "DeepSeek V4 Flash (Gonka)" \
--context-window 380000 --default-max-tokens 32768 --can-reason true
model add joingonka/MiniMaxAI/MiniMax-M2.7 \
--name "MiniMax M2.7 (Gonka)" \
--context-window 200000 --default-max-tokens 8192
model add joingonka/zai-org/GLM-5.3-Flash \
--name "GLM-5.3 Flash (Gonka)" \
--context-window 390000 --default-max-tokens 8192 --can-reason true
model large joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
model small joingonka/MiniMaxAI/MiniMax-M2.7ここでモデルは provider/model-id の形式で指定します。最初のスラッシュより前がプロバイダー名、それ以降はネットワーク上のIDをそのまま書きます。${JOINGONKA_API_KEY:?…} の形式ならキーをファイルの外に置けますが、変数がエクスポートされていないとCrushは起動しません — 空のキーでリクエストを送るより、起動時にエラーになるほうがましです。
largeおよびsmallモデルと状態ファイル
Crushのモデルは全体で1つではなく、以下の2つのスロットに対してそれぞれ選択されます:
| スロット | 実行内容 | インストーラーのデフォルト設定 | 変更方法 |
|---|---|---|---|
large | メインエージェント:ファイルの読み書き、編集、コマンド実行を伴うすべての動作 | DeepSeek V4 Flash: 380Kのコンテキストウィンドウと、ネットワーク上で最大の応答上限32768 | インターフェースで ctrl+l、crush run に -m、設定ファイルで models.large |
small | 補助タスク:セッション名作成、ウェブ検索やウェブページ閲覧を行うサブエージェント。もし小規模モデルがセッション名作成に失敗した場合、Crushは大規模モデルに対して再度リクエストを行います | MiniMax M2.7: ネットワーク上で最大のキャパシティを持つ | crush run に --small-model、設定ファイルで models.small、crushrc で model small |
推論モデルであるGLM-5.3 Flashは、複雑なロジックのために選択されます。ただし、応答上限が8192であり、その一部が推論プロセスに使用される点に注意してください。詳細はモデルの概要を参照してください。1回の実行に対してモデルを指定する場合は、完全な名前を使用します:crush run -m joingonka/zai-org/GLM-5.3-Flash "…"。利用可能なすべての名前は crush models joingonka で表示されます。
状態ファイル。 インターフェースで ctrl+l を使用して選択されたモデルは、crush.json ではなく、マシン固有の状態ファイル(~/.local/share/crush/crush.json、Windowsの場合は %LOCALAPPDATA%\crush\crush.json)に書き込まれます。このファイルはユーザー設定や crushrc よりも優先されます。Crushは /etc/crush/crush.json → ~/.config/crush/crush.json → ~/.config/crush/crushrc → 状態ファイル の順に読み込み、後続の設定が以前の設定を上書きします。プロジェクトディレクトリ内の crush.json または crushrc が最も高い優先順位を持ちます。ご自身のマシン上のファイル配置は crush dirs で確認できます。
今回の実行では、モデル選択画面を開き、「JoinGonka (Gonka)」プロバイダーが「✓ Configured」とマークされていることを確認した上で、MiniMax M2.7を選択しました。Crushは「Large model changed to MiniMax M2.7 (Gonka)」と応答し、状態ファイルに以下のように書き込みました:
{"models":{"large":{"model":"MiniMaxAI/MiniMax-M2.7","provider":"joingonka","max_tokens":8192}}, …}現在、このモデルは crush.json に記述されている内容よりも優先されます。インストーラーはこの状況を認識し、次のように動作します:
--modelを指定しない場合: 状態ファイルには変更を加えません(ユーザーの選択を尊重するため)。ただし、Crushが実際にどのモデルで起動されるかを警告します:Heads-up: Crush will still start with joingonka/MiniMaxAI/MiniMax-M2.7, not joingonka/deepseek-ai/DeepSeek-V4-Flash-0731。インターフェースでGLM-5.3 Flashや他のプロバイダーのモデルが選択されている場合も同様です。--modelを明示的に指定した場合: 状態ファイル内のmodels.largeエントリのみを修正し、事前にバックアップを保存した上で、変更前後の状態を出力します。そうしないと、フラグが反映されないためです。この実行後、Crushはフラグで指定されたモデルで起動しました。
検証:期待される挙動
まず、Crushがプロバイダーを認識しているか確認します:
crush models joingonka応答は3行です:
joingonka/MiniMaxAI/MiniMax-M2.7
joingonka/deepseek-ai/DeepSeek-V4-Flash-0731
joingonka/zai-org/GLM-5.3-Flash次に、インターフェースなしで一度実行してみます。プロジェクトのディレクトリに明らかなバグを含むファイルを置き、それを見つけるよう指示します:
crush run -q "Read calc.py and tell me in one sentence whether it has a bug."エージェントは自分でファイル読み取りツールを呼び出し、行番号を挙げて本質的に答えるはずです。私たちの実行では、ネットワーク上の3つのモデルすべてがバグを見つけ、タスクにかかった時間は20〜40秒でした。-qフラグは待機インジケーターを非表示にします。crush runモードではすべてのツール呼び出しが自動承認されるため、自分のプロジェクトで実行してください。通常のインターフェース(crushコマンド)では、アクティブなモデルがステータス行に表示されます:◇ DeepSeek V4 Flash (Gonka) via JoinGonka (Gonka)。セッションとログはCrushがプロジェクトの.crushディレクトリに保存し、専用の.gitignoreでgitから保護されています。ログはcrush logsで表示できます。ゲートウェイ側では、リクエストは管理画面で確認できます:「使用状況」セクションの「モデル別」と「キー別」の内訳です。
何か問題が発生した場合、診断は通常メッセージから直接読み取れます:
| 表示される内容 | 意味 | 対処法 |
|---|---|---|
unauthorized: Invalid API key. | ゲートウェイがキーを受け付けなかった | api_keyを確認してください:キー全体を、空白なしで。変数への参照の場合、その変数がこのシェルでエクスポートされている必要があります |
invalid JSON in config file …/crush.json | ファイルにコメント、末尾のカンマ、またはタイポがある | Crushは厳密なJSONのみ受け付けます:ファイルを修正してください。インストーラーはコメントを自動で除去しませんが警告を出し、まったく解析できないファイルには手を付けず原因を報告します |
failed to load shell config …/crushrc: … exit status 1 | crushrcのエラー。多くは${…:?}形式のキー変数が設定されていない | 起動前に変数をエクスポートするか、スクリプトが失敗する行を修正してください |
Failed to override models: large model "…" not found | -mフラグのモデル名のタイポ | crush models joingonkaの出力から名前をコピーしてください |
too many requests: Model "…" is currently overloaded in the Gonka network (rate limit) | ピーク時にモデルのネットワーク容量が不足した | Crushは増加する間隔でリクエストを再試行し(私たちの実行では約1分)、それからようやく諦めます。ctrl+lまたは-mで別のモデルに切り替えるか、待ってください。状態はステータスページで確認できます |
| Crushがインストーラーが通知したのとは違うモデルで開いた | インターフェースからの選択は状態ファイルに保存され、設定を上書きする | ctrl+lでモデルを選択するか、--modelを付けてインストールをやり直してください |
402 | 残高が不足している | 「請求」セクションでチャージしてください。キー自体は有効です |
コストについて
エージェントはチャットとは異なるトークン消費をします。Crushはすべての入力にシステムプロンプトとツール記述を追加し、タスクには通常複数回のやり取りが必要です。今回のテストでは、モデルへの各リクエストで約11,500入力トークンを消費し、「ファイルを読んでエラーを探す」タスクには2〜3のリクエストで23,000〜35,000トークンを要しました(ほとんどが入力)。そのため、ここでのトークン単価が重要になります。
JoinGonka Gatewayを通じたトークン料金は、入力100万トークンあたり$0.0069、出力100万トークンあたり$0.021です。この価格はネットワーク内のすべてのモデルで共通で、このページではライブソースから動的に取得されます。
| シナリオ | 消費量 | Gateway経由の料金 |
|---|---|---|
| ワンショットタスク:ファイル読み込み、エラー特定 | 23-35K トークン | 1セントの数分の一 |
| 1日のアクティブな作業 | 3-7M トークン | 数セント |
| 1ヶ月のアクティブな開発 | ~150M トークン | 約1ドル |
右側の推定値は2026年9月時点の価格に基づいています。比較として、Crushでの一般的な支払い方法は以下の通りです:
| 方法 | 課金モデル | 制限事項 |
|---|---|---|
| Hyper — Charm公式プロバイダー | サブスクリプション(無料枠あり) | Charm側の料金条件に準拠 |
| ベンダーのキーを直接利用 | ベンダーの価格表に基づくトークン課金 | セッションの長さに応じて請求額が増加;モデルにより価格が異なる |
| JoinGonka Gateway | プリペイド残高によるトークン課金 | ダッシュボードで使用状況を監視可能;サブスクリプションや月間クォータなし |
Crushインターフェース内のコストカウンターは、設定ファイル内の価格フィールドに基づいています。ここにはインストール時点のゲートウェイ価格が格納されますが、ネットワーク内のドル単価はGNKレートに応じて変動するため、カウンターはあくまで目安です。正確な消費量と残高は、ダッシュボードの「使用状況」および「課金」セクションで確認してください。デフォルトでlargeスロットにDeepSeek V4 Flashが設定される理由は、モデルの概要で詳しく解説しています。
作業時の注意点
パーミッション。Crushのインターフェースでは、デフォルトでツール呼び出しの前に許可を求めます。フラグ--yoloはすべての確認を一括で無効にし、個別に信頼するツールは設定ファイルで指定します:
# crushrc
permissions allow view ls grep
# crush.json
"permissions": { "allowed_tools": ["view", "ls", "grep"] }なお、crush runはすべてを自動承認します。これはCrush側の仕様であり、モデルプロバイダーには依存しません。
リクエストタイムアウト。Crushは、モデルから応答の断片が長時間届かない場合にリクエストを切断します。バージョン0.96.1では2分間の無応答が基準です(ドキュメントには60秒と記載されていますが、コードおよび当社の検証では2分です)。ゲートウェイが接続を維持するために送るキープアライブpingはこのカウンターをリセットしません — ローカル環境で確認済みです。また、ゲートウェイは負荷の高い時間帯にはネットワークからの最初のトークンを最大150秒待つため、余裕を持たせるべきです:
# crushrc
option request-timeout 300
# crush.json
"options": { "request_timeout": 300 }コミットの署名。Crushが作成するコミットとプルリクエストには、デフォルトでAssisted-by: Crush:<model>という行と「Generated with Crush」という注記が付きます。不要な場合:
# crushrc
option attribution-trailer-style none
option attribution-generated-with false
# crush.json
"options": { "attribution": { "trailer_style": "none", "generated_with": false } }メトリクス。Crushは開発者に仮名化された利用統計を送信します — メタデータのみで、プロンプトや応答は含まれません。CRUSH_DISABLE_METRICS=1またはDO_NOT_TRACK=1で無効化できます。ゲートウェイ側もプロンプトや応答の内容を保存せず、統計には消費量の集計値のみが残ります。
設定はコードである。crushrcとcrush.jsonの両方をCrushはあなたのシェルの権限で実行します。キーフィールド内の$(…)は読み込み時に実行され、プロジェクトのcrushrcはそのディレクトリでCrushを開いた時点で作動します。他人のリポジトリで設定を読まずにエージェントを実行しないでください。
npx @joingonka/setup --tool crushという1つのコマンド、または~/.config/crush/crush.json内のproviders.joingonkaブロックでJoinGonka Gatewayに接続できます。タイプはopenai-compat、アドレスはhttps://gate.joingonka.ai/v1、キーはjg-…、モデルには正確なcontext_windowとdefault_max_tokensを指定します。同様の設定をcrushrc内のprovider addおよびmodel addコマンドで複数行で記述することも可能です。largeスロットにはDeepSeek V4 Flash、smallスロットにはMiniMax M2.7、複雑なロジックにはGLM-5.3 Flashが割り当てられています。最大の落とし穴は状態ファイルです。ctrl+lで選択されたモデルが設定ファイルよりも優先されるため、明示的な--modelフラグを指定したインストーラーはそれも修正します。確認にはcrush models joingonkaおよびcrush runを使用してください。リクエストタイムアウトは300秒に引き上げることを推奨します。