treg.to について
treg.toは、外部APIカタログとチーム登録のツールをまとめる、エージェント向けのリモートMCPサーバーです。エージェントは単一の接続先からツールを検索・呼び出し、認証情報はサーバー側で注入されます。
主な機能
- 01カタログAPIの検索と呼び出し
- 02単一トークンでのツール利用
- 03サーバー側での認証情報注入とリレー
- 04チームのAPI・CLI・スキル登録
- 05カタログ呼び出しごとの課金
活用シーン
- 01エージェントによる外部APIの検索と利用
- 02チーム認証情報を使ったツールやCLIの共有
- 03ワークフローからWeb・データ・生成サービスを呼び出す
MCP 対応
カタログのエンドポイント、チーム所有のツール、インポートしたスキルを提供するリモートMCPエンドポイントがあります。Claude.aiコネクター用のエンドポイントは、選定されたカタログエンドポイントを公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://treg.to/mcpclaude mcp add --transport http treg-to https://treg.to/mcp{"mcpServers":{"treg-to":{"type":"http","url":"https://treg.to/mcp"}}}Cursor で開く{"servers":{"treg-to":{"type":"http","url":"https://treg.to/mcp"}}}VS Code で開く{"mcpServers":{"treg-to":{"type":"http","url":"https://treg.to/mcp"}}}{"mcpServers":{"treg-to":{"serverUrl":"https://treg.to/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://treg.to/mcp認証が必要ツール
詳細
Treg(ツール向け OpenRouter)

モデルではなく、エージェントツール向けの OpenRouter です。 エージェントを 1 つのベース URL と 1 つのトークンに接続するだけで、タスクを実行できます。多数のプロバイダーにまたがる、厳選された数千のエンドポイントのカタログです。SEO やバックリンク、ソーシャルやトレンド、人物や企業の情報補完、広告、スクレイピング、画像や動画の生成などに対応し、1 回あたり 1 セントからの従量課金で、プロバイダーへの登録は不要です。さらに、チーム独自のキー、スキル、CLI も登録でき、認証情報をサーバーから外に出さずに、チームのメンバー全員のエージェントから呼び出せます。
ツールではなく、タスクを指定してください。 バックリンクデータをどのベンダーが提供しているか知る必要も、アカウントを作成する必要もありません。実行したいことを検索して、料金を確認し、呼び出すだけです。
Superdesign チーム向けに開発され、treg.to で公開中です。誰でもセルフホストできます。
なぜ作られたのか
エージェントが実務で必要とするツールは、1 回使うためだけに契約する人はいないようなサブスクリプション(Semrush は月額 $139、Moz は月額 $99、Crunchbase は月額 $99、Apollo は 1 シートあたり月額 $59)の登録の壁の向こうや、公開 API がない場所(招待制、パートナー限定、アプリ審査制など)にあります。treg はそうしたアカウントを用意し、1 回の呼び出しにつき 1 セント未満の料金を請求します。
2 種類のツールを 1 つのトークンで
- カタログ — treg が独自のキーを使うか、プロバイダーキー不要の検証済み公開ルート経由で提供できる外部エンドポイントです。独自キーを使う呼び出しにはチームの前払い残高が使われ、匿名の呼び出しは無料です。プロバイダーのアカウントは不要です。新たに検証されたアカウントには、対象となるチームを作成した際に、1 回限りの無料 $1.00 分が付与されます。
- 独自のツール — チームメンバーが登録したものなら何でも利用できます。有料 API アカウント、OAuth 接続、ベンダー CLI、
SKILL.mdなどです。常に独自のキーが treg のキーより優先され、これらの呼び出しには従量課金が適用されません。
後半で使う用語:
- ツール = 組織の認証情報を使って、レジストリが代わりに呼び出すものです。次の 2 種類があります。
- エンドポイント — 上流の
base_urlと認証情報のバインディングです(各バインディングは 1 つのシークレットをリクエストに挿入します。リクエストには複数の認証情報を含めることができます。たとえば、OAuth ベアラーとdeveloper-tokenヘッダーの両方など)。 - CLI — 認証情報を挿入して実行するベンダーのバイナリ(
stripe、gh、vercelなど)です。
- エンドポイント — 上流の
- スキル/バンドル = レシピ(
SKILL.md)とそのシークレット、ツールをまとめて登録したものです。
唯一のルール: プロキシは上流の API をそのまま中継し、モデル化はしません。また、認証情報はサーバー側で挿入します。そのため、上流 API の変更に影響されず、呼び出し元がキーを保持する必要もありません。
パート 1 · レジストリの利用
treg.to(Render でホストされています)にアクセスしてください。ダッシュボード、サインイン、以下のすべての URL はここにあります。
クイックスタート
ダッシュボードのはじめにガイドと同じ手順です。
# 1. install the CLI — also points it at the registry
curl -fsSL https://treg.to/install.sh | sh
# 2. sign in (GitHub default · --email for a one-time code · --token for agents/CI)
treg login
# 3. do something useful immediately — no key, nothing registered
treg catalog search "backlinks for a domain" # find a tool by what it DOES
treg call tikhub.tiktok.user.profile --query uniqueId=tiktok
treg balance # exactly what that cost
# (or `treg onboard` for the guided walkthrough)
Fish Audio は S2.1 Pro の音声、公開音声の検索、プライベート音声のクローン作成を提供します。
音声はバイナリで標準出力に出力されるため、ファイルにリダイレクトしてください。検索した音声の _id またはチームの音声 ID は TTS の reference_id になります。treg の Fish アカウントで作成した音声は、チームの永続的なリソースです。
treg call fishaudio.tts.s2-1-pro --method POST --header model=s2.1-pro \
--data '{"text":"Hello from treg","format":"mp3"}' > speech.mp3
treg call fishaudio.voices.discover --query self=false --query licensed=false --query language=en
treg resources list --provider fishaudio --kind voice
独自の Fish キーを使う場合、リクエストは引き続き制限のない、従量課金なしの上流への中継となり、アカウントの管理は Fish が行います。
カタログツールの入力については、treg catalog get <id> で確認できます。strict_query が設定されたツールは、未宣言または重複したクエリパラメーター、サポートされていない値、リクエストボディを拒否します。
すべての呼び出しではトークンで利用者を識別します(X-Treg-Token ヘッダー)。このトークンはすべてのツールで共通です。チームで共有されているものを確認するには treg tool ls を、認証情報の状態を確認するには treg health を実行してください。
Claude Code プラグインとしてインストールすることもできます
/plugin marketplace add superdesigndev/treg
/plugin install treg@treg
トークンや設定は不要でインストールできます。スキルは treg:treg として読み込まれ、初回の実行時にエージェントを案内しながら、CLI、サインイン、続いて treg mcp install を順に進めます。これにより、コマンドラインと treg のツールの両方を利用できるようになります。他のエージェントの場合は、npx skills add superdesigndev/treg -s treg を実行してください(その他については、ワークフロースキルを参照してください)。
docs/CLAUDE-PLUGIN.mdを参照してください。MiniMax Code/MiniMax Agent のユーザーは、同じスキルを MiniMax Plugin Marketplace から利用できます(docs/MINIMAX-PLUGIN.md)。
ワークフロースキル
エージェントが treg を通じて、各呼び出しを最初から最後まで実行するためのすぐに使えるレシピです。
| スキル | エージェントができること |
|---|---|
treg | カタログ内のあらゆるツールと、自分のツールを検索して呼び出す |
web-access | ローカルのスクレイパーを使わずにリアルタイムのウェブを読む:まず無料の検索とページの読み込みを行い、次にソーシャル、店舗、レビュー、地図、論文に適したプラットフォームジョブを実行します。失敗した場合は、treg が次のベンダーにフォールバックします |
lead-signals | 公開シグナル(苦情、転職、採用、資金調達、ツール導入)から購買意欲の高い買い手を見つけ、トピック、競合他社、アカウントリストを監視します(treg.to/leads-signals) |
recruit | LinkedIn の求人投稿から、優先順位付き候補者リストを作成します。投稿に基づく条件、人材検索、理由付きフィルター、各候補者との適合理由を一文で説明し、候補者ごとの費用上限内で根拠(投稿、GitHub、登壇、在職期間、転職)を引用します。その後、確認済みの個人用メールアドレスと電話番号を取得し、候補者ごとの件数、根拠、ベンダーの利用履歴を記録した実行ファイルを作成します |
make-ugc | AI UGC 動画を作成します:トレンドのフック、プレゼンター、トークヘッドクリップ、字幕(treg.to/ugc) |
jev-memory | Claude Code にメモリーを追加します。ターン終了後に Jev が各プロンプトを評価し、長期的な好みを保持する Claude Code の改変機能です。既成のものをインストールすることも、1 つのプロンプトから作成することもできます(改変機能) |
install.sh は、オプトイン方式の jev-memory を除き、これらすべてをインストールします。既存のエージェントに追加するには、以下を実行してください
(skills.sh CLI):
npx skills add superdesigndev/treg # every public skill
npx skills add superdesigndev/treg --skill lead-signals # just one
treg skill bootstrap # same set, with the treg CLI you already have
ワークフロースキルは treg 上で動作するため、まずセットアップしてください(上記のクイックスタートを参照するか、エージェントに treg.to/llms.txtを参照させてください)。
Claude.ai コネクター
Claude Connectors Directory 用のエンドポイントは https://treg.to/mcp/v2/ です。画像、動画、音声の生成を含まない、厳選されたカタログエンドポイントのみを公開します。また、読み取り呼び出しと書き込み呼び出しを分離し、Claude に正確な安全性シグナルを渡します。既存の /mcp/ エンドポイントも、カタログエンドポイント、チーム所有のツール、インポートしたスキル向けに引き続き利用できます。境界と実装についてはMCP と OAuth のアーキテクチャを、リリースの判定基準については提出手順書を参照してください。
キーを持っていないツールを呼び出す
カタログは、エンドポイントの用途別に分類されています。キーワードと順位の追跡、バックリンクとオーソリティ、 AI の可視性、トレンドと発見、ソーシャルメディアへの投稿、人物と企業の情報補完、広告管理とクリエイティブ、 効果測定です。
treg catalog # every platform, busiest first
treg catalog search "find a work email" # by the job, not the vendor
treg catalog search --new # tools added in the last 30 days, newest first
treg catalog get hunter.people.email.find # params, PRICE, example response
treg call hunter.people.email.find --query domain=reddit.com --query full_name="Alexis Ohanian"
カタログに登録された呼び出しの処理方法 — 認証情報の適用順序:
- チームがそのプロバイダー用のツールを登録している場合 → そのツールとそのキー;
- チームがそのプロバイダー用のシークレットを保存している場合 → 仮想ツール経由で注入;
- どちらもなく、エンドポイントに検証済みの公開ルートがある場合 → プロバイダーキー不要、無料;
- それ以外の場合 → treg 自身のキーを使用し、チームのプリペイド残高に請求。
匿名利用時の料金は、呼び出し元がプロバイダーの認証情報ヘッダーを送信しないことを前提としています。忠実なリレーでは呼び出し元のヘッダーがそのまま保持されるため、呼び出し元がプロバイダーのキーを指定すると、そのキーのクレジットを利用できます。お持ちの認証情報は常に treg のものより優先されるため、すでに料金を支払っているキーを接続すれば、これらの呼び出しで残高が使われることはなく、二重請求もありません。treg が公開価格を設定していないエンドポイントは、無料で提供されるのではなく拒否されます。その場合は、独自のキーを接続するよう案内されます。1 つの機能を複数のプロバイダーが提供している場合、treg catalog search で料金を並べて確認できます。選択するのはお客様です。treg がプロバイダーを黙って選んだり、別のプロバイダーに切り替えたりすることはありません。(treg があるプロバイダーの自社アカウントを使い切った場合、treg 所有のリレーアカウントを通じて同じエンドポイントを提供することがあります。その際はレスポンスに明記されます。チームはこの利用をオプトアウトできます。)例外として、オプトインする treg.<capability> のルーティング済みエンドポイントでは、treg がプロバイダーを選び、その名前を提示します。ページのスクレイピング、ウェブ検索、Google の検索結果、メールアドレスの検索など、よくある用途では、名前を覚えているプロバイダーではなく、treg.web.extract や treg.web.search などのルーティング済みエンドポイントから始めてください。treg.people.email.find と treg.people.phone.find では、X-Treg-Route-Verify: true を指定すると、見つかったアドレスまたは電話番号も同じ呼び出し内で検証されます。この検証は別料金で、確認結果も通知されます。
treg balance # credit left, calls in flight, recent spend
treg topup # add funds, or set up automatic top-ups
残高不足の場合、HTTP 402 の error: insufficient_balance が返され、balance_micro、estimated_cost_micro、topup_url が含まれます。そのため、エージェントは説明文を読まずに対処できます。
Enrich Arena はダッシュボードの外にある /enrich-arena で利用できます。各ベンダーの料金と速度を確認しながら情報補完の回答を比較し、ワンクリックで最良の回答に投票したり、順次ウォーターフォールを実行したりできます。機能に対応する非同期プロバイダーも参加でき、Arena が送信とポーリングを内部で処理します。閲覧は公開されていますが、送信にはログインが必要です。料金が発生する試行にはチームのクレジットが使われます。Arena ガイドをご覧ください。
Web Arena では、/web-arena で Web Search、Web Fetch、Sitemap のプロバイダーを比較できます。
Battle では選択したプロバイダーに同じ入力で呼び出しを行い、Waterfall では順番に試します。
ライブランキングは、プロバイダーへの直接呼び出しの成功率と応答時間に、直近 30 日間の
Web Arena の検証済み品質結果を組み合わせたものです。この機能が有効になるとページが表示されます。
Web Arena ガイドをご覧ください。
独自のツールを共有して使う
考える必要のない手順です。プロジェクトを treg に指定すれば、共有できるものを自動で判別します。
treg scan # read-only preview: the keys, skills & CLIs upload would register
treg upload # register them (encrypted server-side); idempotent, --replace to update
treg upload は .env(約 80 の既知のプロバイダーとキーを照合)、すべてのスキルサブディレクトリ、
インストール済みのカタログ CLI をスキャンします。レジストリには 3 種類のものを登録できます。それぞれの共有方法と使用方法は次のとおりです。
1. エンドポイント(HTTP API)
共有 — 保存済みのキーで呼び出せる上流 URL を 1 つ登録する方法、または .env から一括登録する方法です。
treg secret add STRIPE_KEY --value sk_live_123
treg add stripe --base-url https://api.stripe.com --secret STRIPE_KEY
treg upload env --select openai,stripe,resend # or straight from the .env
使用 — エージェントに適した方法です。上流への実際のリクエストを作成し、プロキシの前に付けます。
treg はホスト名からツールを特定し、認証情報を注入して、それ以外はすべて忠実に中継します
(上流側に届く前に X-Treg-Token は削除されます)。
Real request: GET https://api.intercom.io/conversations?per_page=5
Through treg: GET https://treg.to/call/https://api.intercom.io/conversations?per_page=5
header: X-Treg-Token: <your token>
または CLI の短縮形を使えます。監査ログには treg calls を使用します。
treg call intercom conversations --query per_page=5
treg call stripe v1/balance
2. CLI
共有 — 自動で行われます。treg upload がインストール済みのカタログ CLI(stripe、gh、vercel など)を検出して登録します。レシピのみのカタログ CLI スキル(例:stripe-cli)も、自動的に実行可能になります。
使用 — treg run は、組織の認証情報を注入してベンダーの CLI を実行するため、キーを自分で保持したり、ログインしたりする必要はありません。
treg run stripe -- get /v1/balance
treg run gh -- pr list
--local(デフォルト)では、お使いのマシン上で実行されます。サーバー側での CLI 実行(--server)は、全体で無効になっています。
セッション全体で利用するには、treg shell start でサブシェルを開きます。登録済みの CLI にはそれぞれ自動で認証情報が注入されるため、通常どおり stripe、gh などを使えます。exit で元に戻ります。treg runs で監査ログを確認できます。
3. スキル
共有 — スキルは機能一式(SKILL.md のレシピと、そのシークレットおよびツール)です。チーム全体が同じスキルを使えるようにまとめて登録し、1 か所で管理します。
treg upload skills --dir ~/.claude/skills --all # register a folder of skills in one pass
使用 — 共有スキルをエージェントに取り込みます。API 呼び出しはトークンを使って treg 経由で行われるため、キーはサーバー上に保持され、スキル内に保存されることはありません。
treg skill install seo-blog-writer # writes into ./.claude/skills/ (--all for the library)
手動登録 — ヒューリスティクスでツールを判別できない場合
# multi-credential tool (e.g. google-ads: OAuth bearer + a developer-token header)
treg tool add google-ads --base-url https://googleads.googleapis.com \
--bind "secret=<oauth-id>,injector=oauth" \
--bind "secret=<dev-id>,name=developer-token,format={secret}"
# one skill, step by step
treg skill init --dir ./my-skill # drafts treg.json (guesses base_url, finds secrets)
treg skill add --dir ./my-skill # registers recipe + secrets + tool, atomically
# OAuth via the browser (mints the first token, treg holds it and auto-refreshes)
treg oauth connect gsc --client-secret client_secret.json \
--scopes https://www.googleapis.com/auth/webmasters.readonly
各コマンドのすべてのオプションについては、USAGE.md をご覧ください。
treg.to の使用時(引数や認証情報なし)に、CLI は匿名のコマンド使用状況を PostHog に送信します。
TREG_TELEMETRY=0 または DO_NOT_TRACK=1 で無効にできます。
分析の詳細をご覧ください。
チーム
アカウントで所有できるチームは最大 10 チームです。他のチームにメンバーとして参加しても、この上限には含まれません。
すべてのデータは 組織 ごとに管理されます。トークンは (ユーザー, 組織) のメンバーシップに紐づき、すべてのシークレット、ツール、スキルはアクティブな組織に属します。ロールは owner / admin / member / viewer です。
treg org create "Acme" # make a team, become owner
treg org invite [email protected] # invite by email (pick role + tool access)
treg org join <code> --email [email protected] # accept an invite (creates you if new)
treg org ls | use <slug> | members # switch orgs, see the roster
treg org access <member> --tools a,b # per-member tool access (admin+)
チームの所有者は、ダッシュボードの Team → SSO タブからエンタープライズ SSO を有効にできます。WorkOS が会社の ID プロバイダーに接続し、所有者は IT 管理者を招待して設定を完了できます。従業員は、任意のサインイン画面で勤務先メールアドレスを入力するか、チーム専用のサインインリンクを使用できます。treg のチームロールと API キーはそのまま維持されます。Directory Sync プランでは、無効化された従業員のチームアクセスが解除されます。エンタープライズ SSO の設定をご覧ください。
さらに詳しく
-
フィードバック:
treg feedback submit friction "The pagination example is unclear."個人情報を含めずに、問題や提案を共有できます。フィードバックの手順をご覧ください。 -
評価:
treg review CALL_ID useful招待されたカタログ呼び出しの結果を使った後に評価します。not_sureでもかまいません。個人情報は含めず、タスクを続行してください。 -
USAGE.md—tregCLI の完全なリファレンスです。 -
/llms.txt:エージェント向けのエントリーポイントです。llms.txt 形式で、treg の概要、各種エージェントのセットアップ、検索・読み取り・呼び出しの手順とルールをまとめています。それ以外の情報については、運用ガイドの/skill.mdへのリンクをご覧ください。 -
treg.to の ダッシュボード — CRUD 操作、ガイド付きチュートリアル(Help → Tutorial)、エージェント向けのコピー可能なセットアップ手順を利用できます。
-
API — CLI のすべての操作は通常の HTTP で行われます。対話型の OpenAPI ドキュメントは
/docsにあります。プロキシエンドポイントは/call/{...}です。すべてのエンドポイントでX-Treg-Tokenヘッダーが必要です。
パート 2 · セルフホストと開発
ローカルで実行する
1つのコマンドで実行できます(tmux と uv が必要です。仮想環境の同期も自動で行います)。
scripts/dev-local.sh up # server on http://localhost:18790, dev-safe settings
サーバーはホットリロード付きで tmux 内で起動し、専用の sqlite データベース(treg-dev.db)とメール OTP の開発モードを使用します(サインインコードはページに表示されるため、メール送信機能は不要です)。日々の開発には次のコマンドを使います。
scripts/dev-local.sh cli login # sandboxed CLI: never touches your real ~/.treg/config.json
scripts/dev-local.sh logs # server output · status / restart / down
scripts/dev-local.sh reset # wipe the dev DB + CLI sandbox for a fresh start
または、tmux を使わずにサーバーを直接実行します。
bash scripts/build-dashboard.sh # Node 22.12+ and npm; build the Dashboard
uv sync # create the venv from uv.lock (pulls the server deps for dev)
uv run python -m treg upgrade # prepare schema + run idempotent release tasks without serving
uv run python -m treg # serve on 0.0.0.0:18790 (add --reload for dev)
uv run python -m treg keygen # print a fresh Fernet key for TREG_SECRET_KEY
サーバーを実行するためのインストール(ソースから実行しない場合): 基本パッケージに含まれるのは CLI のみ です。レジストリを実行するには、サーバー用エクストラをインストールしてください。
pip install "tools-registry[server]"を実行すると、FastAPI、データベースドライバー、暗号化機能が追加されます。pip install tools-registryだけでは、既存のレジストリと通信するためのtregコマンドのみがインストールされます。
公式のホステッドサービスは treg.to で利用できます。本番環境のトポロジーと稼働中の設定は、非公開の運用手順書で管理されています。
設定
環境変数(プレフィックスは TREG_、.env から読み込まれます):
| 変数 | デフォルト値 | 用途 |
|---|---|---|
TREG_DATABASE_URL | sqlite+aiosqlite:///./treg.db | DB URL(開発環境ではSQLite、本番環境ではPostgres) |
TREG_READ_DATABASE_URL | (empty) | オプションのSQLite/PostgreSQL読み取りデータソースです。空の場合はプライマリを再利用します。利用するには呼び出し元で明示的に有効にする必要があります。既存のクエリは変更されません。読み取りデータソースの設定を参照してください。 |
TREG_SECRET_KEY | (empty) | 保存時のシークレット暗号化に使うFernetキーです。空の場合は一時キーが生成されます(シークレットは再起動後に保持されません)。 |
TREG_PUBLIC_URL | https://treg.to | tregの公開ベースURLです。OAuthコールバックURIの生成に使われます |
TREG_SESSION_SECRET | (empty) | ダッシュボードのセッションCookieに署名します。未設定の場合はTREG_SECRET_KEYにフォールバックします。本番環境では実際の値を設定してください |
TREG_GITHUB_CLIENT_ID / _SECRET | (empty) | GitHub OAuthサインイン(コールバック <public_url>/auth/github/callback)です。空の場合はボタンが非表示になります |
TREG_GOOGLE_CLIENT_ID / _SECRET | (empty) | Google OAuthサインイン(リダイレクト <public_url>/auth/google/callback)です。空の場合はボタンが非表示になります |
TREG_WORKOS_API_KEY / _CLIENT_ID / _WEBHOOK_SECRET | (empty) | WorkOSのエンタープライズSSOです。エンタープライズSSOの設定の説明に従って、コールバックと署名付きディレクトリWebhookを設定してください |
TREG_ENTERPRISE_SSO_BUNDLE_ONLY | true | デフォルトではSSO+Directory Syncプランのみを表示します。両方の月額プランを提供するには、falseに設定してください。 |
TREG_ENTERPRISE_SSO_BUNDLE_PRICE_ID / TREG_ENTERPRISE_SSO_ONLY_PRICE_ID | (empty) | TREG_STRIPE_SECRET_KEYと同じアカウントで使用する、再利用可能な月額Stripe Price IDです。Priceが未設定または利用できない場合、そのプランは非表示になります。表示金額とCheckoutでの請求額はStripeのPriceによって決まります。 |
TREG_ENTERPRISE_SSO_BUNDLE_MIN_PRICE_USD / TREG_ENTERPRISE_SSO_ONLY_MIN_PRICE_USD | 0 | 各月額Stripe Priceに設定する、任意の整数ドル単位の最低価格です。これを下回る価格は非表示になり、Checkoutでも拒否されます。 |
TREG_INSTAGRAM_CLIENT_ID / _SECRET | (empty) | Instagram Login直接接続用のInstagram App IDとシークレット(リダイレクト <public_url>/oauth/callback) |
TREG_META_CLIENT_ID / _SECRET | (empty) | Facebook Pages、Meta Ads、およびオプションのInstagram page-tools用のMetaアプリ認証情報 |
TREG_OAUTH_REVIEW_PENDING | instagram-login,page-messages | 機能を引き続き制限する必要がある、カンマ区切りのレジストリレビューキーです。ホスト側のレビュー状態は非公開で管理されます。 |
TREG_RESEND_API_KEY / TREG_EMAIL_FROM | (empty) | Resend経由のトランザクションメール(OTPコード+招待)です。FromにはResendで検証済みの送信者を指定する必要があります |
TREG_BLOCKED_EMAIL_DOMAINS | (empty) | サインアップ/サインインのすべての窓口とチーム作成で拒否するメールドメインのカンマ区切りリストです(サブドメインを含み、大文字と小文字を区別しません)。空の場合は何もブロックされません。コードにはリストは含まれていません |
TREG_CLIENT_IP_HEADER | (empty) | エッジだけが設定できるヘッダーです。すべてのIPごとの制限でクライアントアドレスとして使用されます(Cloudflareの背後ではcf-connecting-ip) |
TREG_TRUSTED_PROXY_HOPS | 1 | 上記ヘッダーがない場合に、右端から数えて指定したホップ数分のX-Forwarded-Forエントリを使用します(最も近いプロキシが追加したもの)。クライアントが直接接続する場合は0です。最初のエントリはクライアントが記述したもので、決して信頼されません |
TREG_REQUIRED_EXTENSIONS | (empty) | インストールが必須のポリシー拡張機能(treg.extensionsエントリーポイント)のカンマ区切りリストです。未インストールの場合、起動に失敗します。treg.toはこの仕組みで非公開の不正利用対策ポリシー拡張機能を実行しています。制限を設けることのみ可能です(ポリシー拡張機能) |
TREG_TURNSTILE_SITE_KEY / _SECRET | (empty) | すべてのメールサインインフォームで使うCloudflare Turnstileです。どちらかが空の場合は無効になります。サイトキーは/captcha.jsで配信され、シークレットはsiteverifyにのみ送信されます |
TREG_TURNSTILE_MODE | observe | observeは各結果をログに記録するだけで、何も変更しません。enforceはトークンがない場合や無効な場合にコードを拒否し、Cloudflareから応答がない場合はサインアップクレジットを付与しません |
TREG_TURNSTILE_HOSTNAMES | (empty) | トークンの検証時に要求するホストのカンマ区切りリストです。空の場合はTREG_PUBLIC_URLのホスト(および既知のエイリアス)を使います |
TREG_ADMIN_TOKEN | (empty) | テナントをまたぐスーパー管理者のBearerトークンで、すべての/admin/*エンドポイントを認証します。空の場合、環境変数経由のアクセスは無効になり(is_superadminユーザーのみが/adminにアクセスできます)、長く秘密の値を設定してください。 |
TREG_EMAIL_DEV_MODE | false | trueの場合、/auth/email/startは応答にOTPを返します(メール送信者は不要です)。開発環境/ローカル環境専用であり、本番環境では絶対に使用しないでください。 |
TREG_KV_URL | (empty) | 全ワーカーで共有する必要があるカウンター用の共有キーバリューストア(Redisプロトコル)です。現在はチームごとのレビュー招待上限に使われます。空の場合はプロセス内のフォールバックを使用します。ワーカーが1つなら問題ありません |
ローカル開発では .env は不要です。すべての設定に動作するデフォルト値(エフェメラルキー、sqlite)が用意されています。 |
⚠️ 移動または再デプロイする前に、必ずバックアップしてください: Fernet キー(
TREG_SECRET_KEY)と データベース(本番環境では Postgres、ローカルの sqlite 実行ではtreg.db)。Fernet キーを失うと、保存されているすべてのシークレットを復元できなくなります。
アーキテクチャ
/call のリクエストフロー: ツールを解決します(URL のホストと最長の base_url プレフィックス、または名前で解決)→
シークレットを復号します → 各バインディングのインジェクターを適用します → 上流へストリーミングします →
監査レコードを非同期で記録します。インフラのリレーはビジネスロジックを介さず、バイト列をストリーミングします。呼び出しアプリケーションは、精算または所有権の証明に必要なレスポンスを最大 8 MiB までバッファリングします。それを超えるレスポンスは、切り詰められた成功を返す代わりに、課金せず 502 を返します。メディアをインラインで埋め込むエンドポイント(Gemini の画像)は spooled_response を宣言します。その従量課金対象の応答は一時ファイルに読み込まれ、報告された使用量に基づいて精算された後、全体がリレーされます。本文の証明が不要な、認可済みの無料の最終ダウンロードは、独自のキーと独自のツールのレスポンスと同様に、全体をストリーミングします。
モジュール一覧(src/treg/):
| モジュール | 役割 |
|---|---|
proxy.py | relay() — プロダクト全体を担う単一の関数:忠実なストリーミングプロキシ |
injectors.py | 認証形式の境界:env、cli_auth、secret_file、oauth がシークレットをヘッダーまたはクエリに設定します |
oauth.py | トークンの鮮度管理(単一実行のリフレッシュ)+接続フロー(同意 URL、コード交換) |
health.py | 認証情報の健全性:OAuth のリフレッシュ、ツールのプローブ、問題が発生したツールの所有者への Webhook 通知 |
convert.py | スキルディレクトリを登録可能なバンドルマニフェストに変換します |
api.py | API — 唯一の頭脳です。CLI とスキルはその上に構築された薄いクライアントです |
cli.py | treg CLI |
models.py | SQLModel のテーブル:Org、User、Membership、Invite、Secret、Tool、Bundle、PendingOAuth、CallRecord |
crypto.py config.py db.py audit.py | Fernet 暗号化+トークン · 設定 · 非同期 DB · 遅延監査ライター |
4 つの認証形式(バインディングごとの injector):env(プレーン文字列/API キー)· secret_file(JSON トークンファイルからフィールドを取得)· oauth(JSON OAuth トークン。リフレッシュ可能な場合は自動更新)· cli_auth(CLI のキーチェーンから取り出した認証情報)。
忠実なリレーの契約: プロキシが変更するのは次の 3 つだけで、それ以外はすべてそのままです。
- ホップごとのトランスポートヘッダー(各ホップに応じて再生成)、
- treg 独自の制御ヘッダーとエッジ転送ヘッダー(
x-treg-token、x-treg-org、ngrok-skip-browser-warning、x-forwarded-*、via、…)、および treg のセッション Cookie — すべて削除し、上流に漏らしません。 - 注入する認証情報。
OAuth で最初のトークンを取得する 3 つの方法: 手動アップロード(token.json を配置)·
自動リフレッシュ(トークンに refresh_token とクライアント認証情報が含まれていれば、treg が最新の状態を維持するため、再アップロードは不要です)· ホスト型の接続フロー(treg oauth connect → ブラウザーでの同意 → treg がトークンを取得)。
ヘルスチェック: ツールに任意のプローブ({method, path, expect_status})を設定します。定期実行(手動または cron 経由)により、すべての認証情報を検証し、OAuth をリフレッシュし、問題が発生した認証情報の所有者に Webhook を送信します。
設計の詳細は docs/context/(サブシステムごとの断片)をご覧ください。
テスト
uv run --with pytest-xdist pytest -n auto -q # daily local default (same shape as CI)
uv run --frozen python -m pytest -q # serial: debugging one test, or order
カバレッジ:プロキシのウォーキングスケルトン、すべてのインジェクター形式、ユーザーごとの認証+CRUD+監査、スキルコンポーザー、
URL パススルー+忠実なリレー、OAuth のリフレッシュ+接続フロー、ヘルスチェック、treg run/シェル、
アップロード/スキャン、組織+招待、ダッシュボード API、CLI。
コントリビューションとドキュメント
treg/
├── src/treg/ # the package (api, cli, proxy, injectors, oauth, health, convert, models, …)
│ └── web/ # dashboard, landing, tutorial, llms.txt, skill.md, install.sh
├── tests/ # pytest suite (CI + local default: pytest-xdist -n auto)
├── docs/
│ ├── context/ # design fragments (codemap system) + generated index
│ └── ONBOARDING.md # first-time bootstrap
├── USAGE.md # full treg CLI reference
└── pyproject.toml
サブシステムごとの設計ドキュメントは docs/context/ にある断片で、それぞれが対応する
src/treg/* のソースを参照しています。このリポジトリで AI エージェントと作業していますか?/tools-registry-context スキルが
作業対象に適した断片を読み込み、ドキュメントを最新の状態に保ちます。プッシュする前に
/tools-registry-context sync を実行してください。
ロードマップ: MCP サポート · より細かな権限レベル · 保存時の鍵管理の強化 · Loopni との統合の可能性
ライセンス
追加条項付き Apache 2.0(LICENSE):自由に使用できます。商用利用や、
自組織内での利用も含みます(独自のレジストリのセルフホストを推奨します)。制限事項:書面による
許可([email protected])なしに、競合するホスト型/マネージド型レジストリサービスとしてコードを
第三者に再配布することは禁止されています。自社製品内でホスト型の treg.to APIを使用することは、
X-Treg-Meta と usage/by-tag によるパススルー課金を含め、許可なしで可能です。
これは当社の API を呼び出すことであり、当社のソフトウェアを再配布することではありません。
固定された顧客読み取りスコープ
制限付きの顧客エージェントでは、treg org agent-new bot --pin customer=cust_A によって帰属が強制され、
呼び出し/実行履歴、アーカイブ済みの結果、共有プロバイダーの非同期所有権がそのピンにスコープされます。
別の顧客に属する ID、または帰属情報のない ID は 404 を返します。ピンが設定されていないオペレーターは、
組織全体のビューと共有残高を引き続き利用できます。BYOK アカウントへのアクセスと公開メディア URL は、
既存の権限を維持します。複数のピン、移行、再実行の動作については、
マルチテナンシー契約を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。