freellmpool について
freellmpool は、複数の LLM プロバイダーの無料ルートをまとめ、OpenAI 互換の単一エンドポイントで提供する MCP サーバーです。コマンドライン、Python ライブラリ、ローカルプロキシとして利用でき、無料モデルを自動的に切り替えたい開発者に向いています。ローカルの日次利用量を記録し、ルートが制限または停止した場合はフェイルオーバーします。
主な機能
- 01OpenAI 互換のローカルプロキシエンドポイント
- 02フェイルオーバーを伴う自動ルーティング
- 03有効かつアクセス可能なルートのみを使用
- 04ローカルでの日次利用量の追跡
- 05キーレスルートによる認証情報なしの開始
- 06コマンドライン、Python ライブラリ、MCP ツール
活用シーン
- 01Claude Code などのコーディングエージェントを無料モデルに接続
- 02コマンドラインで複数モデルに素早く質問
- 03OpenAI 互換アプリケーションの無料バックエンドとして利用
MCP 対応
freellmpool は freellmpool mcp コマンドを通じて、MCP クライアントに向けたツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
13掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| task | enum | いいえ | 品質に応じたルーティングに使う任意のタスクヒントです。auto はローカルで分類します。auto | general | grounded-reading |
| model | string | いいえ | 任意のモデル名または provider/model(例:groq/llama-3.3-70b-versatile)。デフォルト:auto。 |
| prompt | string | はい | 質問またはタスク。 |
| system | string | いいえ | 任意のシステム指示。 |
| routing | enum | いいえ | モデルの選択方法:agent(クォータを分散しながら、正常な最上位ティアを選択)、quality(プロンプトに能力を合わせる)、spread(プール全体に分散)、fast(最小レイテンシ)、fair(プロバイダー間で均等化)、または auto(サーバーのデフォルト)。auto | agent | spread | fast | quality | fair |
| provider | string | いいえ | 対象を限定する任意のプロバイダー ID(例:groq、cerebras)。 |
| max_tokens | integer | いいえ | 最大出力トークン数(デフォルト 1024)。 |
詳細
freellmpool
freellmpoolは、継続的な無料枠、キー不要のエンドポイント、利用回数に上限のある試用版、ピン留め専用ルート、無効な候補など、異なるグループに分類した23社のLLMプロバイダーをカタログ化しています。有効なチャットルート178件とカタログ化されたチャットモデル443件を公開し、アクセス可能な有効ルートのみを1つのOpenAI互換エンドポイントの背後で自動的にプールします。CLI、Pythonライブラリ、またはローカルプロキシとして利用できます。有効なキー不要ルートがある場合は、認証情報なしで起動できます。
FAQ:プロンプトの送信先、利用規約への対応、フェイルオーバー、利用禁止、比較について。
リリースと配布の状況
-
最新リリース:0.13.0。 GitHubリリースとPyPIパッケージはどちらも 0.13.0です。
pip install freellmpoolとuvx freellmpoolでは、監査済みの プロバイダーカタログ、制限付きストリーミングとセンチネルの堅牢化、Hermesプロファイル、 プロキシのレディネス/プロバイダーAPI、spreadルーティング、 OpenCodeレジストリのレディネス強化がインストールされます。 -
レジストリ公開状況:保留中。
opencode-freellmpoolとopencode-freellmpool-tuiはテスト済みですが、2026-08-29時点ではnpmに公開されていません。 当面は、リポジトリ内のインストール手順を使用してください。
30秒で始める
APIキーが不要なプロバイダーが稼働している場合、APIキーなしで、クリーンなLinux/Python 3.12環境に新規インストールして最初の無料モデルの応答を得るまでの実測時間は、30秒の目標に対して約19秒です:
# One command when uv is installed; no checkout or manually managed virtualenv:
uvx freellmpool ask --max-tokens 32 "Reply with one short sentence: freellmpool is ready."
ポータブルな仮想環境を使う方法:
python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install freellmpool
freellmpool ask --max-tokens 32 "Reply with one short sentence: freellmpool is ready."
CIでは、このチェックアウトから FREELLMPOOL_QUICKSTART_PACKAGE=. scripts/quickstart-test.sh を実行し、同じ手順をテストします。
カタログには、プロバイダーが運営する無料枠、キー不要のルート、明示的に利用回数に上限のある試用版や無効な候補がいくつか含まれています。利用条件と上限はプロバイダーによって異なります。freellmpoolはアクセス可能な有効ルートのみを自動で使用し、レート制限中または停止中のルートからフェイルオーバーし、ローカルで1日あたりの使用量を追跡します。
複数のプロバイダー(Pollinations、OVHcloud、Kilo Gateway)はAPIキーが不要で、LLM7もAPIキーなしで動作するため、キー不要のプロバイダーが利用可能であれば、サインアップせずにクイックスタートで応答を得られます。
ツールを接続する前に、ローカルのプロバイダーキー、エージェントCLI、プロキシ設定、Tailscaleの状態を確認するには、表示のみの初期化ウィザードを実行してください:
freellmpool init --yes
freellmpool init --yes --agent opencode
freellmpool init --yes --agent metaswarm --tailnet
他のプロバイダーのキーを追加すると、さらに多くのモデルと高い上限を利用できます。
ローカルランタイム(明示的、ピン留め専用)
LM Studio、Ollama、llama.cppは、LANやプロセスをスキャンせず、固定されたリテラルのループバックエンドポイント一覧からプレビューできます:
freellmpool local discover
freellmpool local discover --name lm_studio
freellmpool local import --name lm_studio --yes
freellmpool ask --providers local_lm_studio --model "<model-from-discover>" "hello"
検出は読み取り専用です。インポートは別途、明示的な操作として行われ、認証情報は書き込まれず、インポートしたモデルはすべて自動ルーティングの対象外になります(auto = false)。freellmpool local remove local_lm_studio --yes を実行すると、インポーターが管理するブロックのみが解除されます。カスタムエンドポイントには、http://127.0.0.1:1234/v1 のような正規形式のリテラルループバックURLを指定する必要があります。ホスト名、LANアドレス、リダイレクト、広範なネットワークスキャンは拒否されます。
freellmpool init を使った初回セットアップ
freellmpool init は、プロバイダーキー、インストール済みのエージェントCLI、Tailscaleの状態、プロキシ設定を調べ、ファイルを編集せずに、コピーしてすぐ実行できる次の手順を1つ表示します。まずは検出のみで実行してください:
freellmpool init --yes
--json を指定すると、同じ検出結果がスクリプトやエージェント向けにバージョン付きJSONで出力されます。
Tailnet/リモートエージェントゲートウェイ
生成した API キーを使って、Tailscale の 100.x アドレスでプロキシを提供します。
freellmpool tailnet serve --port 8080
リモートマシンから:
freellmpool tailnet connect <tailnet-ip> --port 8080
生成されたトークンを使わず、キーを固定したい場合は、どちらの側でも --api-key <shared-secret> を指定できます。Tailnet での公開では、デフォルトで認証が必要です。ループバック以外のインターフェースで認証なしのまま実行しないでください。
Metaswarm エージェントレーン
このプロジェクトでは、Umans/Kimi K2.7 のワーカーレーンを1つ、MiniMax M3 のレーンを1つ使用し、エスカレーションには Codex を、出荷前の最終レビューにのみ Claude Opus を使用します。インストール可能な Metaswarm プロファイルもこの方針に沿っており、ローカルプロキシ経由の無料または低コストのワーカーレーンを1つ、より大規模な freellmpool のレビュアーレーンを1つ、そして明示的にユーザーが所有する有料のエスカレーション/最終レビューレーンとして Codex/Opus を設定します(通知なしで実行されることはありません)。
freellmpool init --yes --agent metaswarm --tailnet
freellmpool profile install metaswarm
freellmpool tailnet serve --port 8080
freellmpool profile doctor metaswarm --dry-run
無料モデルでコーディングエージェントを実行する
freellmpool のプロキシは OpenAI API に対応しており、実験的な Anthropic 互換パスも含まれているため、プロキシを指定するだけで、コーディングエージェントをプールされた無料ティアで実行できます。
freellmpool proxy # starts http://localhost:8080
freellmpool code claude # prints the one-line setup for Claude Code
freellmpool profile list # richer installable profiles
freellmpool profile show metaswarm # Tailnet-aware Metaswarm profile
freellmpool profile install hermes # Hermes custom-endpoint config
# (also: codex, aider, cline, continue, cursor, hermes, opencode, metaswarm)
Hermes プロファイルは、次の対応カスタムエンドポイント設定ブロックを表示します(書き込みは行いません)。hermes model を使えば、同等の操作を対話形式で行えます。
model:
provider: custom
default: quality
base_url: http://localhost:8080/v1
api_key: anything
Claude Code ゲートウェイモードも直接起動できます。
ANTHROPIC_BASE_URL=http://localhost:8080 \
ANTHROPIC_AUTH_TOKEN=dummy \
ANTHROPIC_API_KEY=dummy \
ANTHROPIC_MODEL=auto \
ANTHROPIC_SMALL_FAST_MODEL=auto \
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 \
claude
既存の OpenAI 互換アプリも同じ方法で使えます。OPENAI_BASE_URL=http://localhost:8080/v1 を設定すれば、コードを変更する必要はありません。Anthropic 互換ツールでは、実験的なブリッジを ANTHROPIC_BASE_URL=http://localhost:8080 で利用できます。
テキストのみの /v1/responses および /v1/messages リクエストは、選択したプロバイダーから逐次ストリーミングされます。ツール呼び出しや、よりリッチなコンテンツは、意図的にバッファリングされた互換パスを使用します。ブラウザーダッシュボードとプレイグラウンドは、データを含まない1つの共通シェルを使用します。プロキシ認証が有効な場合、ベアラートークンの入力を求め、そのトークンはページのメモリ内にのみ保持されます。一方、保護されたステータス、インベントリ、モデル、バトルの各呼び出しでは引き続き Authorization ヘッダーが必要です。
OpenCode には 0.12.0 で、より深い統合が追加されます。エディター内でリアルタイムに表示されるダッシュボード(ルーティングモード、推定節約額、無料で提供されたトークン数、プロバイダーの競合、レイテンシ)、モデルピッカーによるリクエストごとのエージェントルーティング(freellmpool/agent|spread|auto|fast|quality|fair)、および freellmpool_status/freellmpool_models ツールが含まれます。integrations/opencode-tui とガイドを参照してください。プラグインは、対応する OpenCode のバージョンで、ユーザー設定を書き換えることなくルーティング用エイリアスを自動登録します。OpenCode を再起動して、opencode models freellmpool を確認してください。
パッケージの tarball は CI で検証されていますが、npm での公開はまだ保留中です。リンク先のローカルファイルを使った手順が、引き続き動作するインストール方法です。
0.11 の新機能: 容量ツールです。freellmpool capacity status では、現在利用可能な無料ティアを確認できます。freellmpool providers health では、それらをリアルタイムでプローブできます。また、freellmpool keys add を使うと、追加の設定を順に進められます(容量とプロバイダーの健全性およびdocs/CAPACITY.mdを参照)。
0.10 の新機能: 非同期 API(AsyncPool)、MCP サーバー(freellmpool mcp)、freellmpool benchmark によるレイテンシ対応ルーティング、オブザーバビリティフック、カスタムプロバイダー用のプラグインシステムです。変更履歴を参照してください。
インストール
pip install freellmpool # or: pipx install freellmpool
依存関係は httpx のみです。Python 3.11 以降が必要です。
Docker と Open WebUI
公開されているコンテナでは、ローカルプロキシが非特権ユーザーとして実行されます。割り当て枠、統計、ルートの正常性、キャッシュ、設定の状態は、名前付きボリュームに永続化してください。
docker volume create freellmpool-data
docker run --rm -p 127.0.0.1:8080:8080 \
--volume freellmpool-data:/home/freellmpool/.config/freellmpool \
--env GROQ_API_KEY \
ghcr.io/0xzr/freellmpool:0.13.0
認証情報なしで起動したい場合は、--env GROQ_API_KEY を省略してください。プロキシが応答できるのは、有効なキー不要のルートが利用可能な場合のみです。公開ポートはループバックに限定してください。意図的に外部へ公開する場合は、FREELLMPOOL_PROXY_KEY を設定し、クライアントにその Bearer トークンを要求してください。
同梱の Open WebUI スタックを使う場合は、プロバイダーの認証情報を .env に配置して、docker compose up -d を実行してください。Compose はプロキシのヘルスチェックを待機し、freellmpool と Open WebUI の両方の状態を名前付きボリュームに保持します。両方のサービスが正常になったら、http://localhost:3000 を開いてください。
コマンドライン
freellmpool ask "Write a haiku about sqlite"
git diff | freellmpool ask "Write a commit message for this"
freellmpool tokenmax "Hardest question you've got" # 🌈 blast models, print answers, optional synthesis
freellmpool providers # which providers are configured
freellmpool models # cataloged provider/model ids
freellmpool stats # lifetime tokens served free + estimated cost avoided
freellmpool badge -o badge.svg # a shareable SVG badge of that total
freellmpool badge --summary -o summary.svg # a larger usage summary card
freellmpool tokenmax は、冗談めかして名付けられた最大限の処理モードです。利用可能な多数のモデルにプロンプトを一斉に送り、それぞれの回答を表示します。CLI は --no-synthesize を指定しない限り、デフォルトで統合した判定を追加します。MCP ツールは、呼び出し元のエージェントが統合できるよう、モデルの回答を返します。(docs/MCP.md を参照してください。)
freellmpool stats は、稼働中の永続的な累計値です(再起動やアップグレード後も保持されます)。README に freellmpool badge を埋め込むか、トークン数、リクエスト数、推定節約額、プロバイダーの内訳を含む大きめのカードには freellmpool badge --summary -o summary.svg を使ってください。FREELLMPOOL_PUBLIC_BADGE=1 を設定して公開バッジを埋め込み可能にすると、プロキシから /badge.svg と /summary.svg の両方をリアルタイムで配信できます。
プロバイダーまたはモデルを指定できます。一般的な OpenAI/Anthropic のモデル名は無料の同等モデルに割り当てられるため、既存のスクリプトをそのまま使えます。
freellmpool ask -m groq/openai/gpt-oss-20b "hi"
freellmpool ask -p cerebras,groq "hi"
freellmpool ask -m gpt-4o-mini "hi" # routed to a free model
ロール
freellmpool roles は、質問用ロールのプリセット(coder、critic、summarizer、grounded-reader、long-context、cheap、fast、second-opinion など)を一覧表示します。各ロールは、別のルーティングエンジンを新たに作ることなく、ルーティング、トークン予算、temperature、タスクの意図、システムプロンプトのヒントを設定します。明示的に指定したフラグ(--model、--providers、--routing、--task、--max-tokens)は、ロールのデフォルト設定より優先されます。
freellmpool ask --role coder "write a pytest for this function"
freellmpool ask --role grounded-reader "read this Markdown file"
freellmpool ask --routing quality --task general "ignore automatic task classification"
FREELLMPOOL_MODE=wise freellmpool ask --role cheap "summarize this patch"
プロキシとして使う
OpenAI API に対応するローカルサーバーを起動し、OpenAI 互換のツールをそのサーバーに接続します。ループバックでは、FREELLMPOOL_PROXY_KEY を設定するか --api-key を指定していない限り、任意のプレースホルダー API キーを使用できます。Tailnet/LAN での提供には、デフォルトで実際のプロキシベアラートークンが必要です。
freellmpool proxy
export OPENAI_BASE_URL=http://localhost:8080/v1
export OPENAI_API_KEY=unused
from openai import OpenAI
client = OpenAI()
print(client.chat.completions.create(
model="auto",
messages=[{"role": "user", "content": "hi"}],
).choices[0].message.content)
# audio → text (Whisper), same client:
print(client.audio.transcriptions.create(
model="auto", file=open("audio.mp3", "rb"),
).text)
または、curl を使う場合(マルチパートアップロード):
curl -s http://localhost:8080/v1/audio/transcriptions \
-F [email protected] -F model=auto
このプロキシは、OpenAI Responses API(Codex CLI 用)と、実験的な Anthropic Messages API パス(Claude Code 用)にも対応しているため、コーディングエージェントでも無料モデルを利用できます。freellmpool code <agent> を実行すると正確な設定が表示されます。また、freellmpool profile install <agent> を実行すると、サードパーティの設定を変更せずにコピーして貼り付けられる、より詳細なプロファイルが表示されます。
freellmpool code aider # also: claude, codex, cline, continue, cursor, hermes, opencode
freellmpool profile show opencode
freellmpool profile doctor opencode --dry-run
リリース 0.12.0 のプロキシが提供するエンドポイント:
/v1/chat/completions— OpenAI 互換のチャット、トークンストリーミング、ツール呼び出し。/v1/responses— インクリメンタルなテキストストリーミングに対応する Responses API の互換レイヤー。ツールとリッチコンテンツにはバッファリングされた互換パスを使用します。/v1/messages— 実験的な Anthropic 互換の Messages パス。インクリメンタルなテキストとバッファリングされたツールの分岐は同じです。/v1/embeddingsと/v1/audio/transcriptions— OpenAI 互換の埋め込みと、Whisper 形式のマルチパート文字起こし。/v1/models— ルーティング用エイリアスと、具体的なprovider/modelID。/v1/models?ready=true— 同じ形式で、ローカルで準備完了しているターゲットに限定した一覧。/v1/providers— 認証が必要な、シークレットを含まないプロバイダー/モデルの準備状況の詳細。/freellmpool/battleと/playground— ブラウザー/JSON で実行できる、上限付きのモデル比較。/healthzと/livez— プロセスの稼働状態を示す公開エイリアス。/readyz— ローカル容量に関する公開の参考情報(少なくとも 1 つのプロバイダーが準備完了なら 200、そうでなければ 503)。上流へのライブプローブは行いません。/dashboard、/status、/badge.svg、/summary.svg— ローカル運用向けの画面。
/、/dashboard、/playground は、データを含まない共通の公開シェルを提供します。プロキシキーが設定されている場合、シェルでキーの入力を求め、ページのメモリ内にのみ保持します。ステータス、プロバイダー/モデルの一覧、battle、モデル API の呼び出しには引き続きヘッダー認証が必要です。稼働状態と準備状態はオーケストレーターのプローブ用に公開されます。準備状態が示すのはローカルのクォータ/クールダウンのスナップショットであり、上流の健全性を保証するものではありません。特定のツール向けの設定例は docs/INTEGRATIONS.md と docs/AGENTS.md にあります。このリポジトリには、freellmpool を外部ツールのレビュアー/セカンドオピニオンとして使うための実験的なmetaswarm レビューアダプターも含まれています。freellmpool profile show metaswarm では、無料/低価格のワーカーレーン、大規模なレビュアーレーン、Tailnet クライアントの設定、およびユーザー自身が明示的に選択するエスカレーション手段としての有料 Codex/Opus レーンについて説明しています。
ライブラリとして使う
from freellmpool import Pool
pool = Pool.from_default_config()
reply = pool.ask("Summarize the plot of Hamlet in 20 words.")
print(reply.text, "—", reply.provider_id)
vectors = pool.embed(["first document", "second document"]).vectors
with open("audio.mp3", "rb") as f:
text = pool.transcribe(f.read(), "audio.mp3").text # Whisper, failover across providers
非同期処理でも、await を使う以外は同じ API です。
from freellmpool import AsyncPool
async with AsyncPool.from_default_config() as pool:
reply = await pool.aask("Summarize the plot of Hamlet in 20 words.")
どちらのプールにも on_event=... を渡すと、ログ記録やトレース用に構造化されたルーティング/キャッシュイベント(attempt/success/error/cooldown/cache_hit/cache_miss/exhausted)を受け取れます。register_provider(...) で独自のエンドポイントを追加するか、register_adapter(name, fn) で新しいリクエスト形式を追加できます。
プロバイダーをベンチマークする
freellmpool benchmark は、設定済みの各プロバイダーに対して 1 回ずつ呼び出しを行い、レイテンシーと成功状況を表示します。これにより、現在どの無料枠が最速かを確認できます。ルーターは実行中、実際のトラフィックから同じレイテンシー/成功シグナルを学習します。デフォルトの使用頻度が最も低いものを優先する方式ではなく、レイテンシーが最も低いプロバイダーを優先するには、FREELLMPOOL_ROUTING=fast を設定します。
$ freellmpool benchmark
provider/model status latency note
cerebras/gpt-oss-120b ok 180 ms 6 tok
groq/openai/gpt-oss-20b ok 240 ms 6 tok
ovh/Meta-Llama-3_3-70B-Instruct FAIL - HTTP 429
容量とプロバイダーの健全性
無料枠の状況は日中に変動します。キーの期限切れ、プロバイダーの停止、1 日あたりの上限到達などが発生します。次のコマンドを使えば、現時点で利用できるものと、次に設定すべきものを確認できます。
freellmpool capacity status --target 5 # who's healthy / near quota / missing a key
freellmpool capacity status --refresh # explicitly refresh advisory provider metadata
freellmpool quota-wise status # local headroom + recommended mode
freellmpool providers health # send one tiny request to each, time it
freellmpool keys checklist --target 5 # which keys to add to reach N healthy providers
freellmpool keys add groq # configure a key (and record metadata)
プロトコルのサポート状況は、基本的なプロバイダーの健全性とは別に検証されます。freellmpool conformance run を実行すると、制限付きの合成リクエストを使って、チャット、ストリーミング、ツール、JSON オブジェクト/スキーマ、ビジョン、Responses、Anthropic Messages を確認できます。その後、freellmpool conformance status --json でサニタイズされた証跡を調べます。機能に応じた自動ルーティングでは、検証済みのターゲットのみが使われます。プロバイダー/モデルを厳密に指定する方法が、明示的なオーバーライドです。運用とプライバシーに関する契約の全容は、docs/PROTOCOL_CONFORMANCE.md をご覧ください。
capacity status はオフラインで動作し、キャッシュを優先します。カタログ、環境、日ごとのクォータカウンターを読み取り、各プロバイダーを healthy、low_quota、exhausted、invalid_key、missing のいずれかとして表示します。参考情報として、外部カタログ(mnfst/awesome-free-llm-apis)のキャッシュ済みメタデータから、追加候補の無料プロバイダーが提案されることがあります。このメタデータの取得にネットワークを使うのは、明示的に freellmpool capacity status --refresh または freellmpool catalog sync を実行した場合のみです。あくまで参考情報であり、ルーティングの信頼できる情報源は引き続き providers.toml です。keys add <name> を使うと、そのカタログから提案されたプロバイダーをインポートするか、OpenAI 互換のひな形を作成してモデルを自動検出できます。プロキシの /dashboard でも、同じ容量情報を一覧できます。詳しくは、docs/CAPACITY.md をご覧ください。
FREELLMPOOL_MODE=wise は、クォータを慎重に使うモードです。ask では既定の出力予算が少なくなり、分散ルーティングが使われます。tokenmax では既定の並列実行数が少なくなり、--yes を指定しない限り、幅広いマルチモデル呼び出しに確認が必要です。コマンドごとの --mode normal|wise は環境変数より優先されます。また、config.toml では [settings] mode = "wise" を使用できます。conserve ロールは、少量の出力を複数のプロバイダーに分散して得る、クォータを意識した簡易設定です。
tokenmax で一斉に実行する代わりに、対象を絞ったセカンドオピニオンを得るには、次のようにします。
freellmpool ask --second-opinion --opinions 3 "is this implementation plan sound?"
freellmpool ask --role second-opinion --synthesize "which release note is clearer?"
共有パネルでは、いくつかの多様なプロバイダーに問い合わせ、個別の失敗も表示したままにします。--synthesize を渡すと、エラーが発生しても処理を中断せずに要約を追加できます。
ターミナルまたはローカルブラウザーで確認できる、並べて比較する形式の場合は、次のようにします。
freellmpool battle "which changelog entry is clearer?" --synthesize
freellmpool proxy --port 8080
freellmpool playground --port 8080
同梱のレシピは、一般的なワークフローを、内容を確認して実行できる JSON ファイルにまとめたものです。
freellmpool recipe list
freellmpool recipe run second-opinion "is this launch plan clear?" --synthesize
freellmpool recipe run pr-review --input patch.diff
freellmpool recipe run repo-summary --path 'src/freellmpool/*.py'
freellmpool recipe run metaswarm-worker-review --input worker.md --validation-output-file validation.txt
レシピでは、ask や battle と同じロールプリセットと共有パネルヘルパーを使います。個別のルーティングエンジンはありません。
ローカルのフォアグラウンドジョブキュー
ライブセッションを妨げない、時間がかかるクォータ対応の作業には、設定ディレクトリ配下の追記専用 JSONL ログにジョブをキューイングします(FREELLMPOOL_JOBS_PATH で変更できます)。このキューはフォアグラウンド専用です。jobs run は一度に 1 件ずつジョブを処理し、開始、完了、失敗、キャンセルの各イベントを記録します。完了した ask ジョブの出力はジョブログに保存されます。完了したレシピジョブは、freellmpool report と同じレポートヘルパーを使い、実行記録と Markdown レポートも書き出します。
# queue a recipe job
freellmpool jobs add --recipe pr-review --input patch.diff
# queue an ask job with a role preset
freellmpool jobs add --role summarizer "summarize the latest changelog"
freellmpool jobs list # replayed state (idempotent across restarts)
freellmpool jobs watch # one-shot refresh render, no daemon
freellmpool jobs run --dry-run # print execution order, mutate nothing
freellmpool jobs run --max-failures 2 # halt after N consecutive failures
freellmpool jobs cancel <job-id> # append a cancel tombstone, not a mutation
freellmpool report list
freellmpool report last --markdown
freellmpool report last --html --path
freellmpool cost show <run-id>
キャンセルは新しいトゥームストーンイベントであり、先にキューに追加されたレコードを書き換えるものではありません。jobs run が終了する前にクラッシュしても、キューは引き続き再生できます。また、キャンセル済みのジョブは再起動後もキャンセル状態のままです。重複して送信した場合は別々のジョブが作成されます。同じレシピまたはロールのジョブが保留中の場合に再送信を拒否するには、--dedupe を渡します。
MCP サーバーとして
freellmpool mcp は、改行区切りの JSON-RPC stdio を介して Model Context Protocol サーバーを実行します。これにより、Claude Desktop、Claude Code、Cursor から無料モデルにサブタスクを委任できます。ask、パネル/セカンドオピニオン、battle、レシピ、ロール、Tailnet 情報、クォータ重視、ルートプレビュー、モデル、クォータ、統計、tokenmax の各ツールを公開します。詳しくは docs/MCP.md をご覧ください。MCP registry 用の server.json が含まれています。
Simon Willison の llm CLI での使用方法
プラグインがあります:llm install llm-freellmpool → llm -m freellmpool "..."。
有効なキー不要ルートが利用可能な間は、API キーなしで回答できます。
ソース:plugins/llm-freellmpool。
プロバイダーキー
freellmpool は環境変数からキーを読み取り、設定されているものを使用します。有効なキー不要ルートが利用可能な間はキーは不要です。認証情報を設定すると、利用できるルートが増えます。検証や支払い方法に関する注意事項を含む、登録手順へのリンクは docs/ACCOUNTS.md にあります。
| プロバイダー | 環境変数 | 備考 |
|---|---|---|
| Pollinations | — | キー不要 |
| OVHcloud | — | キー不要(匿名ティア) |
| Kilo Gateway | — | キー不要 |
| LLM7 | LLM7_API_KEY | 任意 |
| Groq | GROQ_API_KEY | 現在の無料プランのルート。正確な上限はモデルによって異なります |
| Cerebras | CEREBRAS_API_KEY | 有限の 5 ドル分のトライアル。現在のルートは明示的に固定されており、自動的に継続利用できる枠ではありません |
| NVIDIA NIM | NVIDIA_API_KEY | |
| OpenRouter | OPENROUTER_API_KEY | 無料モデル |
| Requesty | REQUESTY_API_KEY | 価格がゼロのモデルのみ。アカウントあたり 1 日 200 リクエスト、カード不要 |
| Google Gemini | GEMINI_API_KEY | |
| Cloudflare | CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID | |
| Hugging Face router | HF_TOKEN | router の無料ティア |
| OpenCode Zen | — | カタログに登録済み。明示的なオプトインを待つため、デフォルトでは無効 |
| Aion Labs | AION_API_KEY | 1 日あたり 20K の無料トークン、カード不要 |
| ModelScope API Inference | MODELSCOPE_API_KEY | 1 日あたり 2,000 回の無料呼び出し |
| Morph | MORPH_API_KEY | 現在の有料エイリアスは、今後の明示的な確認に備えて無効のまま保持されます |
| Vercel AI Gateway | AI_GATEWAY_API_KEY | 自動ルーティングの対象は、公開価格情報でゼロ価格が確認された Poolside ルートに限られます。他のルートは固定指定のみ、または無効です。ゲートウェイ側で予算を設定してください |
| SiliconFlow | SILICONFLOW_API_KEY | 無料モデル。本人確認が必要です |
| Mistral, Cohere, SambaNova, Z.ai, Ollama Cloud | .env.example を参照 |
環境変数の代わりに、config.toml(config.toml.example を参照)にキー、モデルエイリアス、設定を記述できます。
ローカル診断と運用
freellmpool doctor を実行すると、ネットワークに接続せずに、パッケージのバージョン、設定パス、設定済みプロバイダー数、ルーティングモード、クォータ/キャッシュの保存場所、外部カタログのキャッシュ経過時間、同梱カタログの有効性を確認できます。
レスポンスキャッシュは、FREELLMPOOL_CACHE_TTL(秒単位)または[settings] cache_ttlが正の値でない限り無効です。有効にすると、キャッシュ行は WAL モードと TTL によるプルーニングを用いて SQLite に保存されます。FREELLMPOOL_CACHE_MAX_ENTRIES で保持する行数を制限できます(デフォルトは 10000、0 に設定するとサイズによるプルーニングが無効になります)。
クォータカウンターは、デフォルトでは即時に書き込まれます。長時間稼働するプロキシ/MCP プロセスでは、FREELLMPOOL_QUOTA_FLUSH_EVERY=N を設定すると、最大 N 件の成功したリクエストをまとめてから書き込むため、ファイルの更新頻度を抑えられます。終了時の処理と quota.snapshot() では保留中のカウントが書き込まれるため、ダッシュボードやプロセス終了時にも最新の合計値を確認できます。
ルートごとの最近のヘルス情報は
~/.config/freellmpool/route_health.json に永続化されます(FREELLMPOOL_HEALTH_FILE で変更できます)。上限付きのアトミックな状態には、ルート名、所要時間、カウンター、正規化された失敗クラスのみが含まれます。プロンプト、レスポンス、ヘッダー、認証情報は含まれません。/status では、有効な各ルートのサーキット状態、サンプルの経過時間、リセット時刻が報告されます。
ルーティングの仕組み
リクエストごとに、freellmpool は利用可能な (provider, model) の組み合わせの一覧を作成し、プロバイダーを使用頻度の低い順に並べたうえで、そのプロバイダー内から使用頻度の最も低いモデルを選びます。これにより、NVIDIA のようにカタログが大きいプロバイダーが、公開しているモデル数が多いというだけでより多くのトラフィックを受け取ることを防ぎます。429 を返したプロバイダーは、通知された Retry-After またはレート制限のリセット期間が過ぎるまで保留されます。可用性の障害が繰り返されると、ルートごとのサーキットが開きます。クールダウン後に半開状態のプローブを 1 回行い、ルートを復旧できます。日次カウントは ~/.config/freellmpool/quota.json に保存され、UTC の午前 0 時にリセットされます。
各呼び出しでは、モデルのターゲットごとにレイテンシーと成功の有無が記録されます。ターゲットで現在障害が発生しているプロバイダーは、自動的に優先順位が下がります。FREELLMPOOL_ROUTING=fast を設定すると、測定された速度が最も速いプロバイダーが最初になります。FREELLMPOOL_ROUTING=fair は、日次クォータを維持できるよう、プロバイダー間でリクエストを分散します。freellmpool benchmark を実行すると、必要に応じてこれらのメトリクスを事前に測定できます。従来のモデルごとの負荷分散動作に戻すには、FREELLMPOOL_ROUTING=legacy または FREELLMPOOL_ROUTING=model を設定します(従来のモデルごとの最速優先の順序にするには FREELLMPOOL_ROUTING=model-fast を設定します)。
品質ベースのルーティング(FREELLMPOOL_ROUTING=quality)。 無料プランでは、最も高性能なモデルの日次上限が最も低いため、単純なプールでは日が進むにつれて性能が低下します。品質ベースのルーティングは、各プロンプトの難易度と各モデルの能力を照合します。難しいプロンプト(入力が長いもの、コード、推論を示す表現)は利用可能な最も高性能なモデルに、簡単なものは軽量モデルに振り分けます。これにより、貴重な高性能モデルのクォータを節約し、プールの性能をより長く保てます。また、信頼度の高い、根拠に基づく Markdown の読解・抽出リクエストをローカルで認識します。バージョン管理されたサニタイズ済みフィクスチャに、候補モデルの正確なモデル ID に関する反復的なエビデンスがある場合は、上限のあるタスク適合度の項が品質の順位付けに影響します。未測定のモデルも引き続き利用でき、現在のエビデンスを持つ候補がない場合、順位は変わりません。能力の判断には推測したモデル名ではなく、実際のベンチマークデータを使用します。ベンチマークに掲載されていないモデルは、モデル名に基づくヒューリスティックにフォールバックします。
意図を指定するには --task grounded-reading を、ローカルでの自動分類を抑制するには --task general を、ローカルで分類するには --task auto を使用します。OpenAI 互換、Responses、Anthropic のプロキシクライアントは、リクエスト本文の拡張 "task": "grounded-reading" または X-Freellmpool-Task ヘッダーを送信できます。明示的な意図は自動分類より優先されます。タスクのエビデンスには、集計した合格数、フィクスチャのハッシュ、スコアのみが保存され、プロンプト、ドキュメント、応答、プロバイダーのシークレットは保存されません。
同梱されているオフラインスコアは、LMArena Elo(MIT ライセンスのスナップショット)と Aider のコード編集リーダーボード(Apache-2.0)から取得し、共通のパーセンタイル尺度に正規化したものです。対象モデルを大幅に広げるには、無料の Artificial Analysis API キー(FREELLMPOOL_AA_API_KEY)を設定して freellmpool capability sync を実行してください。Intelligence Index は、現在のモデルとオープンウェイトモデルの大半を網羅し、他のデータより優先されます。取得した AA データは、利用者自身のキーに関連付けてローカルにキャッシュされます(AA の規約により、同梱されることはありません)。現在の対象範囲は freellmpool capability status で確認できます。スコアは LMArena と Aider に基づきます。キーが設定されている場合、インテリジェンスインデックスは Artificial Analysis に基づきます。
コンテキストウィンドウ。 無料モデルのコンテキストウィンドウは小さいことがよくあります。freellmpool は入力を切り詰めません。代わりに、モデルがリクエストを長すぎるとして拒否すると、そのモデルの上限を学習し、それより大きいリクエストをそのモデルにルーティングしなくなります。より大きなウィンドウを持つモデルへの切り替えは、必要な場合にのみ行います。適合するモデルがない場合は、一般的なエラーではなく、入力サイズの推定値を含む明確な ContextWindowExceeded を返します。プロキシ経由の場合は 413 が返されます。providers.toml で context = N を指定すると、モデルのウィンドウサイズを宣言して、適合しない場合に事前に除外できます。
アーキテクチャに関する説明:docs/ARCHITECTURE.md。
制限事項
- 無料枠のモデルは最先端モデルより小規模です。下書き作成、要約、分類、トリアージ、日常的なコーディングには適していますが、難しい問題に対する GPT クラスの推論を置き換えるものではありません。
- 高い上限の枠が使い切られるため、品質と容量は時間帯によって変動します。freellmpool のローカルの日次カウンターは UTC の午前0時にリセットされます。上流のプロバイダーは、それぞれ独自の制限とリセット時間帯を使用します。
- 無料枠は予告なく変更されます。モデル ID や制限が古くなった場合は、
providers.tomlへの1行の PR で全員に修正が反映されます。 - このプロキシはローカル/単一ユーザーでの使用を想定しています。デフォルトでは
127.0.0.1にバインドされます。外部に公開する場合は、キーを設定してください(--api-key)。 - Claude Code/Anthropic の経路は実験的です(テキストとツールの使用に対応し、画像認識には対応していません)。
- これらは全員で共有する無料枠です。悪用しないでください。
- 上流のプロバイダーはリクエストを受け取り、プロンプトのタイトル付けやモデレーションを行う場合があります。機密性の高いプロンプトを送信する前に、FAQ のプライバシー表と各プロバイダーの最新の利用規約を確認してください。
- 無料枠の利用可否、モデル ID、レート制限は予告なく変動します。freellmpool はプロバイダーの制限を回避したり、アカウントをローテーションしたり、クォータを回避したりするものではありません。
比較
比較スナップショット:2026-07-19。競合の各行には、記載内容の根拠として使用した正確な README コミットへのリンクがあります。対象範囲はすぐに変わるため、恒久的なランキングではなく、日付時点の比較としてご覧ください。
| ツール | キーなしで開始 | プロバイダー数 | フェイルオーバー | MCP サーバー | CLI | 文字起こし | ローカル/セルフホスト | ライセンス |
|---|---|---|---|---|---|---|---|---|
| freellmpool | はい。設定済みのキー不要プロバイダーが利用可能な場合 | ローカルにカタログ化されたチャットプロバイダーは23 | はい:再試行可能なプロバイダーエラー、空の応答、トランスポートエラー | はい:freellmpool mcp | 単発実行 CLI に加え、プロファイル、ライブラリ、プロキシコマンド | はい:フェイルオーバー対応の /v1/audio/transcriptions | はい:小規模な Python パッケージとローカルプロキシ | MIT |
| OpenRouter free models | いいえ:ホスト型 API の利用にはアカウント/キーが必要です | ホスト型ルーター。リンク先の無料ルーターには、スナップショット時点で22モデルが掲載されています | はい:ホスト型のプロバイダー/モデルのフォールバック | はい:ホスト型のリモート MCP サーバー | ホスト型 API/SDK とエージェント SDK。ローカルゲートウェイ CLI はありません | マルチモーダルチャットを介した音声入力/文字起こし | いいえ:ホスト型サービス | プロプライエタリサービス |
| LiteLLM | いいえ:プロバイダーまたはホスト型ゲートウェイの認証情報が必要です | README では100以上の LLM/プロバイダーをうたっています | はい:ルーターの再試行/フォールバック | はい:AI Gateway に MCP Gateway が含まれます | Python SDK とプロキシ/ゲートウェイ CLI | はい:/audio/transcriptions | はい:セルフホスト可能なプロキシ、またはホスト型プラン | MIT のコア部分。エンタープライズ機能は商用 |
| OmniRoute | はい:セットアップ手順に、認証不要の OpenCode オプションが記載されています | README では268の統合/プロバイダーと90以上の無料オプションをうたっています | はい:多層フォールバック/サーキットブレーカーによるルーティング | はい:MCP および A2A のコントロールプレーン | 幅広い管理 CLI と、ワンコマンドでのエージェントセットアップ | 音声翻訳が記載されています。その他のメディア機能はプロバイダーによって異なります | はい:ダッシュボード、Docker、デスクトップ/PWA の各方法に対応した Node アプリケーション | MIT |
| FreeLLMAPI | Docker のワンライナーでサーバーを起動できます。推論能力はその後に設定します | README では28の無料 LLM プロバイダーと339のエンドポイントをうたっています | はい:プロバイダー/キーのルーティングとフォールバック | はい:MCP(Streamable HTTP) | ダッシュボード/サーバーとデスクトップアプリ | 記載なし。音声の音声合成/TTS には対応しています | はい:Node/Docker サーバーとデスクトップアプリ | MIT |
FreeLLMAPI は本プロジェクトより先に登場しており、機能の重なりは、正当な無料枠を活用した独立した収束です。OmniRoute は幅広いコントロールプレーンと多数のプロトコルを重視し、FreeLLMAPI はダッシュボード中心のセルフホスト可能なルーターと暗号化されたキー管理を重視します。一方、freellmpool は、キーなしでも最初の応答を得られる、小規模な Python/CLI/ライブラリの利用経路を重視しています。これらは製品の対象範囲の選択であり、あらゆるデプロイでいずれかのツールが最適だと主張するものではありません。
FAQ
無料でOpenAI互換のLLM APIゲートウェイはありますか? はい。freellmpoolは、アクセス可能な有効化済みルートを1つのOpenAI互換エンドポイントで公開する、無料のMITライセンスのゲートウェイです。カタログに登録された23のプロバイダーグループには、継続的に利用できる無料枠、キー不要のエンドポイント、期間限定のトライアル、ピン留めのみのルート、無効化された候補が含まれます。pip install freellmpool を実行し、OpenAIクライアントをローカルプロキシに向けてください。
複数の無料LLM APIを同時に使うにはどうすればよいですか? freellmpoolがそれらをプールします。各リクエストはアクセス可能なプロバイダーに送られ、そのプロバイダーがレート制限に達しているかダウンしている場合は次のプロバイダーにフェイルオーバーし、1日ごとの使用量を追跡して、各無料枠に負荷を分散します。
無料モデルでClaude CodeやCodexを実行できますか? はい。このプロキシはOpenAI APIに対応し、実験的なAnthropic互換パスも備えています。OpenAI互換ツールには OPENAI_BASE_URL=http://localhost:8080/v1 を、Anthropic互換ツールには ANTHROPIC_BASE_URL=http://localhost:8080 を設定してから、Codex、Claude Code、aider、Cline、Continue、Cursorをプールされた無料枠に接続して実行してください。Claude Codeでは、Anthropicブリッジ経由で /v1/models を検出できるよう、CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 を設定してください。freellmpool code <agent> を参照してください。(Claude Codeのパスは実験的です。テキストとツールに対応し、ビジョンには対応していません。)
APIキーは必要ですか? キー不要のルートが有効な間は必要ありません。Pollinations、OVHcloud、Kilo Gatewayはキー不要のルートを公開しており、LLM7はAPIキーが任意です。より多くのルートや容量を利用するには、該当する無料枠またはトライアルの認証情報を追加してください。利用可否や条件はプロバイダーによって異なります。
無料でオープンソースですか? はい。MITライセンスです。詳しくはプロジェクトページをご覧ください。
掲載情報
- コミュニティ動画(スペイン語、lytohlg AI作成):"1つのコマンドで無料のAIモデル18個にアクセス"および"APIキーなしで30秒で無料のAIを18個試す"(以前のカタログに基づくものです。現在、freellmpoolは23のプロバイダーをカタログに登録しています)。
- ディレクトリ:MCP MarketのFreeLLM Pool。
コントリビューション
新しいプロバイダーの追加や古くなった制限の修正は、特に有用なコントリビューションです。どちらも通常は providers.toml への小さな変更で済みます。CONTRIBUTING.mdを参照してください。メンテナーが対応しやすい初学者向けタスクはdocs/GOOD_FIRST_ISSUES.mdにまとめられています。テストはネットワーク接続なしで実行できます:
python -m pip install -e ".[dev]" && ruff check . && pytest
このリポジトリでのソース優先の検証では、まず編集可能なインストールを行わなくても pytest でチェックアウトをテストできるよう、PYTHONPATH=src を使用します。CIでも同じ設定で実行されます。リリース準備状況の確認には PYTHONPATH=src python3 scripts/check_release_ready.py を使用します。セキュリティスキャナー、重大度ゲート、期限付き例外プロセス、ローカルでの再現、SBOM、来歴の検証については、SECURITY.mdに記載されています。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。