Skip to main content
Glama

Bench Studio

ラッパーを借りるのをやめよう。クリエイティブレイヤーを手に入れよう。

画像、動画、ウェブサイト、デザイン済みPDF、AIエージェントワークフローのためのローカルファーストのクリエイティブスタジオ。

MIT License Node 22.5+ 73 model routes 5 providers MCP ready

クイックスタート · ヒント · 詳細な仕組み · 変更点と理由 · セキュリティ

Bench Studio model catalog

Bench Studio は、5つのプロバイダーにわたる73の厳選された画像・動画ルート、プロンプトの洗練、機能認識型コントロール、ローカルファイルの管理、透明なコスト台帳を1つのインターフェースにまとめています。同じシステムは、MCPを通じてClaude、Codex、Cursor、その他の互換性のあるクライアントから利用可能です。

あなたのキーはサーバーサイド(あなたのマシン上)に残ります。プロンプトは、費用を支払う前に編集可能です。出力はローカルにミラーリングされます。コストは、謎のクレジットに消えるのではなく、実際の単位で記録されます。

[!NOTE] これはサニタイズされた公開用配布物です。生成履歴、アップロード、プライベートデータベース、個人のパス、認証情報、ローカルのビルド成果物は含まれていません。あなたのアーカイブは空の状態から始まります。

📖 使用ガイド

完全なガイド(ランディングページ+ステップバイステップ):https://inematds.github.io/bench-studio-en/guia/

Related MCP server: omnicinema-mcp

なぜこれが存在するのか

ほとんどのクリエイティブAI製品は、モデルアクセス、プロンプトの洗練、ルーティング、ストレージ、課金という5つの便利な要素を組み合わせ、その継ぎ目を月額プランの背後に隠します。Benchは、利便性を維持しつつ、すべての継ぎ目を検査可能にします。

代わりに…

Benchが提供するもの…

一つのプロバイダーのモデルロードマップ

追加や置き換えが可能な厳選されたレジストリ

一般的なアップロードボックス

各エンドポイントが受け入れる入力から導き出されたコントロール

見えないプロンプトの書き換え

送信前の編集可能なモデル固有のドラフト

抽象的なクレジット

事前見積もりと記録された支出メタデータ

アカウントギャラリーに閉じ込められた出力

ローカルにミラーリングされたファイルと永続的なメタデータ

UIのみのワークフロー

UIとMCPの両方を通じて同じ機能

次の機能を待つ

検査、変更、拡張可能なソース

Benchは、基礎となるモデルを所有していません。あなたのアイデア、ツール、プロバイダー、ファイル、コストを接続するポータブルレイヤーの所有権をあなたに与えます。

3分で実行

必要なもの

必須

  • Node.js 22.5+。Node 24推奨(Benchはnode:sqliteを使用するため)。

  • npm。

これだけです。 すべてのプロバイダーはオプションであり、それぞれ個別に機能低下します。キーがない場合、該当するモデルは利用不可として表示され、理由と修正方法が示されます — スタジオは起動します。何かを生成するには、少なくとも以下のいずれかが必要です。

プロバイダー

モデル数

コスト

必要なもの

fal.ai

37

米ドル、動的価格設定

FAL_KEY

Kling

26

プランクレジット

npm i -g @klingai/cli-global && kling login

Agnes AI

4

無料

AGNES_API_KEY

kie.ai

4

クレジット

KIE_API_KEY

inemaimg

2

無料(あなたのGPU)

実行中のローカルサーバー

オプションですが、価値あり

  • プロンプト洗練のための Google AI Studio または OpenRouter のキー。洗練機能がない場合、プロンプトはそのまま送信されます — これはAgnesが英語を要求するため拒否されます。

  • Google Chrome。PDF印刷とビジュアルプレフライト用。

  • サインイン済みのCodexまたはClaude Code。エージェント駆動のウェブサイトやドキュメント構築用。

1. クローンしてインストール

git clone https://github.com/inematds/bench-studio-en.git
cd bench-studio-en
npm install

2. サーバーサイドの認証情報を追加

cp .env.example .env

お持ちのものをすべて入力してください。.env.example は19の変数すべてを文書化しています — それぞれが何を有効にするか、どのように課金されるか、キーを作成する場所。キーはサーバーサイドに留まり、ブラウザに送信されることはありません。.env は gitignored で、所有者のみの権限で書き込まれます。

読み取り順(最も高いものから):

exported in your shell  >  .env in the project  >  ~/.env

または、ファイルを完全にスキップ: スタジオを起動し、右上の 設定 ボタンを使用します。すべての設定(現在のもの、不足しているもの、値の出所、最後の4文字)が表示され、各プロバイダーをテストでき、.env を自動的に書き込みます。安全性のため、スタジオを実行しているマシンからの書き込みのみを受け付けます。

3. スタジオを起動

npm run dev

http://localhost:5200 を開きます。

サービス

アドレス

スタジオ

http://localhost:5200

ローカルAPI

http://localhost:8787

ヘルスと機能サマリー

http://localhost:8787/api/health

いずれかのポートが使用中の場合:

PORT=8790 BENCH_API_PORT=8790 BENCH_WEB_PORT=5201 npm run dev

別のマシンからアクセスする

両方のポートはループバックにバインドされるため、新規インストールではあなた以外には応答しません。それを開放するには、インターフェースをすべてのインターフェースでリッスンさせること、ファイアウォールルール、そして両方を元に戻すことを覚えておくことの3つが必要です。1つのコマンドでこれらすべてを行います:

./scripts/remote.sh open      # publish the interface on this machine's IP
./scripts/remote.sh status    # open or closed, and with what protection
./scripts/remote.sh close     # back to local access only

open は配布するアドレスを表示し、その後 npm run dev で再起動するよう指示します。close は open が行ったことを正確に元に戻します — オープン時に書き込まれた状態ファイルを読み取り、推測はしません — またSSHルールはそのままにします。なぜなら、それを削除すると自分自身をサーバーからロックアウトする方法だからです。

知っておく価値のある2つのフラグ:

./scripts/remote.sh open --ip 203.0.113.7   # only that address, not the internet
./scripts/remote.sh open --firewall         # also enable ufw (SSH allowed first)

open は、開放する前にパスワードを設定するかどうかを尋ねます。 はいと答えると npm run set-password に制御を移します。Enterキーを押すか、n と答えると、パスワードなしでスタジオが開きます(これが文書化されたデフォルトです)。このオファーがあるのは、以下の非対称性のためです:パスワードを設定する最後の瞬間がこれだからです。

パスワードは別のマシンから設定または変更することはできません。ログイン後でもできません。 POST /api/config/password は、ループバックからのものではないすべてのリクエストに対して403を返します(セッションの有無にかかわらず)。また、設定画面はその旨を表示し、無効なフィールドは表示しません。このルールは、開いているポートを見つけた誰かが自分のパスワードを設定してあなたをスタジオからロックアウトするのを防ぎます。したがって:

npm run set-password    # on the machine running the studio, over SSH or at the keyboard

open が意図的に行わないこと:APIの公開。ポート8787はループバック(BENCH_API_HOST)に留まるため、ファイルを書き込み、費用を支出するエンドポイントは、インターフェースを介して、マシン上でのみ到達可能です。

これはテスト用の姿勢であり、デプロイメントではありません。トラフィックは平文HTTPであり、転送中に読み取り可能です。長時間稼働させるものについては、次のセクションを読んでください。

安全に稼働させ続ける

実際にあなたを保護するものの大まかな順序:

  1. インストール時にパスワードを設定する。 到達可能になるマシンでは、セットアップの一部にします — npm install、次に npm run set-password、次に ./scripts/remote.sh open。この順序で行うことで、スタジオがパスワードなしで開かれることがなくなり、ネットワークから使用できないパスワード画面を必要とすることもありません。

  2. APIをループバックに保つ。 デフォルト。BENCH_API_HOST=0.0.0.0 は、理由があってオプトアウトするためのものです。

  3. 到達可能な範囲を絞る。 ./scripts/remote.sh open --ip <your-ip> は開かれたポートよりも優れています。Tailscaleアドレスは両方に勝り、ポートをまったく必要としません。

  4. ファイアウォールを有効にする。 ./scripts/remote.sh open --firewall は最初にSSHを許可し、次にufwを有効にします。また、VPSプロバイダーの独自のファイアウォールパネルも確認してください — それはufwの前にあり、マシン上の誰にも応答しません。

  5. 前面にHTTPSを配置する。 マシンにドメインを向け、Let's Encrypt証明書を使用してnginxまたはCaddyを前面に配置し、/api、/media、/previews、/inputs、/projects を 127.0.0.1:8787 にプロキシし、npm run build の dist/ をサイトとして提供します。その後、ポート5200を完全に閉じます。これを行う場合、プロキシが X-Forwarded-For を送信するようにしてください:以下のマシンのみルールはそれに依存しています。

  6. rootではなく、独自のユーザーとして、systemdユニットで実行し、.env のパーミッションを 600 に設定する — これはスタジオが書き込む方法です。

  7. テストが終わったら閉じる。 ./scripts/remote.sh close。忘れていた露出は、あなたにプロバイダークレジットを費やさせるものです。

時間とお金を節約するヒント

無料ルートから始めましょう。 Agnes(4モデル)とinemaimg(2モデル、あなたのGPU上)は無料です。モデルカタログでは、No cost スイッチでそのグループを正確に有効にできます。これらを使用して機能するプロンプトを見つけ、最もよくレンダリングするモデルに費用をかけましょう。

カタログを一度だけ厳選しましょう。 73モデルはスクロールするには多すぎます。プロバイダーでフィルタリングし、「これらを無効にする」を使用して使用しないものを隠します。厳選は設定であり、ブロックではありません:ピッカーからモデルを隠しますが、古い結果の 再実行 は依然として機能します。data/catalog-prefs.json を削除すると、工場出荷状態に戻ります。

費用をかける前に洗練しましょう。 洗練されたプロンプトは送信前に編集可能です。読んでください。誤解をキャッチする最も安価な場所です — 送信後、修正には別の実行が必要です。

2つの洗練機能を設定しておきましょう。 チェーンは Gemini → OpenRouter → ローカルCodex です。1つだけの場合、クォータを使い果たすとスタジオ全体がダウンします:プロンプトはそのまま通過し、Agnesは英語以外を拒否してAgnesの問題のように見えるエラーを出しますが、実際はそうではありません。

再入力する代わりに再実行しましょう。 すべての結果には、モデル、コントロール、洗練されたプロンプト、元のアイデア、添付ファイルが含まれています。再実行はそれらすべてを復元するため、書き換えに費用をかけずに1つのことを微調整できます。

同じモデルが2つのルートに存在する可能性があります。 Veo、Nano Banana、gpt-image、gemini-image は複数のプロバイダーを介して存在します — 異なる請求(falでは米ドル、Klingではプランクレジット)が適用されます。プロバイダーはピッカーで名前の横に表示されます。これは実際の選択であり、重複ではありません。

Klingは意図的に自動再試行しません。 すべてのKlingジョブは、失敗も含めて課金されます。何もあなたの背後で再送信されません。

CPUではなくディスクに注意しましょう。 すべてのファイルは、プロバイダーのURLが期限切れになるため(Klingでは24時間、Agnesでは一時的)、ローカルにミラーリングされます。画像あたり約1.3 MB、動画あたり0.7〜5 MB。スタジオはアイドル時に274 MBのRAMを使用します。

ウェブサイトを構築していますか?エージェントを優先しましょう。 CodexとClaude Codeは自分でファイルを書き、自分のミスを修正します。モデルエンジン(ローカルQwen、OpenRouter)はテキストのみを返すため、サンドボックスは不要で費用もかかりませんが、より多くの監督が必要です。

ビルダーを自分が所有するリファレンスに向けましょう。 設定で自分のサイトまたはPDFを設定すると、ビルダーはそれに対して仕上がりを調整します — トークン、フォント、パレット、半径。ブランド、コピー、構造、ファイルをコピーすることはありません。

あなたが作れるもの

ワークスペース

提供内容

作成

モデルを認識した参照、コントロール、編集可能なプロンプト下書き、引用、進捗状況、インライン結果を備えた画像と動画。

モデルカタログ

厳選されたテキストから画像、画像編集、テキストから動画、画像から動画、参照動画のルート。

結果

送信されたプロンプト、モデル、プロバイダーURL、ローカルファイル、記録されたコストを含むローカルアーカイブ。

ウェブサイト

編集可能なソース、ローカルプレビュー、ダウンロード可能なバンドルを備えたオリジナルの静的サイト。

ドキュメント

編集可能なHTML、Chromium印刷、オーバーフロープリフライトに基づくデザイン済みPDF。

接続

機械的に正しいMCP設定と、互換性のあるエージェント向けのポータブルスキル。

Bench Studio 作成ワークスペース

30秒でわかるシステム概要

flowchart LR
    Idea["Your idea"] --> Client{"How do you want to work?"}
    Client -->|Create manually| UI["React studio"]
    Client -->|Delegate to an agent| MCP["MCP server"]

    UI --> API["Local API"]
    MCP --> API

    API --> Prompt["Editable prompt refinement"]
    API --> Router["Capability-aware router"]
    API --> Quote["Quote and pricing engine"]

    Prompt --> Router
    Router --> Prov["fal · Kling · Agnes · kie · inemaimg"]
    Prov --> Mirror["Local media mirror"]

    API --> Projects["Website and PDF runner"]
    Projects --> Archive["Inspectable project source"]

    Quote --> Ledger[("Local SQLite ledger")]
    Mirror --> Ledger
    Archive --> Ledger

ブラウザがプロバイダーのシークレットを受け取ることはありません。ブラウザは、モデル固有のペイロードを検証し、認証情報を所有し、進捗をストリーミングし、アーティファクトをミラーリングし、永続的なメタデータを記録するローカルサービスと通信します。

適切な接続戦略を選ぶ

Benchはアグリゲーターを使用します。なぜなら、1つの認証とキュー管理モデルが、大規模で交換可能なカタログをサポートする実用的な方法だからです。これは唯一の有効なアーキテクチャではありません。

flowchart TB
    Need{"What do you actually need?"}
    Need -->|One stable model| Direct["Use its first-party API"]
    Need -->|Many interchangeable models| Bench["Use Bench + an aggregator"]

    Direct --> D1["Potentially lowest route price"]
    Direct --> D2["One integration per provider"]
    Direct --> D3["Best for a narrow workflow"]

    Bench --> B1["One authentication and queue model"]
    Bench --> B2["Consistent controls and records"]
    Bench --> B3["Best for a flexible studio"]

アグリゲーターが常に最も安価なルートであるとは限りません。Benchはこれを「ゼロマークアップ」と呼ぶのではなく、明確にトレードオフとして示します。

1つのリクエスト、アイデアから領収書まで

sequenceDiagram
    participant U as User or agent
    participant B as Bench
    participant R as Capability router
    participant F as fal.ai
    participant L as Local archive

    U->>B: Describe the result
    B->>R: Select a model and inspect accepted inputs
    R-->>B: Controls, limits, and pricing unit
    B-->>U: Editable prompt and preflight estimate
    U->>B: Approve generation
    B->>F: Validated model-specific payload
    F-->>B: Queue progress and output URL
    B->>L: Mirror media and write metadata
    B-->>U: Local result, provider result, and recorded cost

Benchは送信された内容を記録します。APIがフィールドを受け入れたという理由だけで、添付された参照が出力に影響を与えたと主張することはありません。創造的な忠実性には依然として人間によるレビューが必要です。

モデルインテリジェンス、URLのドロップダウンではない

各エンドポイントには異なる前提があります。1つの画像を受け入れるものもあれば、リストを受け入れるもの、開始フレームを必要とするもの、参照を受け入れないものもあります。Benchは、発見と本番受け入れを分離します。

flowchart LR
    Catalog["Live provider catalog"] --> Discover["Discovery snapshot"]
    Discover --> Evidence["Schema and pricing evidence"]
    Evidence --> Review{"Safe for production?"}
    Review -->|Not yet| Observe["Keep observable"]
    Review -->|Yes| Registry["Curated registry"]
    Registry --> UI["Relevant UI controls"]
    Registry --> MCP["Validated MCP inputs"]

これにより、新しく公開されたり、名前が変更されたり、仕様が不十分なモデルが、有料ワークフローを静かに壊すことを防ぎます。

プロンプトの洗練は可視化されたまま

  1. 通常のクリエイティブなリクエストを書きます。

  2. Benchは、選択したモデルが理解しそうな構造を追加します。

  3. 書き換えられたプロンプトを編集可能な下書きとして確認します。

  4. 何かを費やす前に変更または拒否します。

  5. 最終的に送信されたプロンプトを結果とともに保存します。

Googleキーが設定されていない場合、元のプロンプトは変更されずにそのまま渡され、インターフェースは洗練が無効であることを報告します。

マーケティング計算のないコスト透明性

送信前に、Benchはモデルの価格単位と要求されたパラメータからコストを見積もります。完了後、プロバイダーが十分な領収書データを公開する場合、請求金額を記録します。

flowchart LR
    Params["Model + duration + resolution + quantity"] --> Estimate["Preflight estimate"]
    Estimate --> Approval["Explicit approval"]
    Approval --> Run["Provider execution"]
    Run --> Record["Recorded cost + confidence"]

価格は変動します。見積もりは保証ではありません。Benchは、推定値、測定値、記録値をすべて同じ事実として提示するのではなく、区別します。

ローカルデータ境界

リポジトリはdata/ディレクトリなしで始まります。Benchは初回実行時にそれを作成します。

data/
├── bench.db              # generations, assets, spend, and projects
├── inputs/               # mirrored uploads
├── outputs/              # mirrored generations
├── previews/             # local video posters
└── projects/             # website and document source files

ディレクトリ全体はGitによって無視されます。結果を削除すると、ローカルデータベースのレコードとミラーリングされたファイルが削除されます。外部モデルプロバイダーが保持するコピーを削除することは主張しません。

flowchart LR
    Browser["Browser UI\nno provider keys"] --> Local["Loopback API\nkeys + validation"]
    Agent["Local MCP client"] --> Local
    Local --> Provider["External model provider"]
    Local --> Disk["Local SQLite + files"]

Claude、Codex、Cursorから使用する

Benchを起動し、接続を開き、クライアントを選択し、生成された設定をコピーします。Benchは現在のマシンの正しい絶対パスを挿入します。リポジトリ自体には、ユーザーのホームディレクトリは含まれていません。

MCPサーバーは、以下を行うための11の焦点を絞ったツールを公開します。

  • モデルの発見と機能契約の検査。

  • ローカル参照メディアのアップロード。

  • 画像と動画の生成。

  • 結果、プレビュー、支出の読み取り。

  • ウェブサイトまたはドキュメントプロジェクトの作成とポーリング。

  • ローカルプロジェクトアーティファクトの取得。

integrations/skills/bench-studio/にあるバンドルされたスキルは、判断とワークフローのガイダンスを提供します。MCPはライブ実行レイヤーを提供します。

プロジェクトマップ

bench-studio-public/
├── src/                     # React interface
├── server/
│   ├── server.mjs           # loopback API and orchestration
│   ├── mcp.mjs              # stdio MCP server
│   ├── registry.json        # curated production roster
│   ├── capabilities.json    # accepted-input contracts
│   ├── profiles/            # prompt and pricing intelligence
│   └── mcp-app/             # embedded MCP interface
├── integrations/
│   ├── skills/bench-studio/ # portable agent workflow skill
│   └── macos/               # optional launch-agent templates
├── tests/                   # contracts, persistence, API, a11y, and E2E
├── docs/                    # public README media
├── .env.example             # placeholders only
└── package.json

ドキュメント

ドキュメント

対象範囲

docs/COMO-FUNCIONA.md

システムの内部動作:プロバイダー契約、プロバイダーごとに測定されたトラップ、コストクラス、可用性とキュレーション、リファインチェーン、ビルダー、セキュリティモデル

docs/ACESSO-REMOTO.md

リモートアクセスとVPSセットアップ:パスワードがポートより先に来る理由、remote.shが触れるもの、強化の順序、まだ開いているもの

docs/HISTORICO.md

元のキットの上に構築されたすべてのもの、そして見つかったすべてのバグ—すでにあったものと途中で導入されたものを分離

CHANGELOG.md

バージョンごとの変更履歴

.env.example

全19設定、それぞれが何を解放するか、キーの入手先

SECURITY.md

脅威モデルと報告

便利なコマンド

コマンド

目的

npm run dev

ローカルAPIとウェブインターフェースを起動します。

npm run build

本番用ウェブアプリケーションをビルドします。

npm run registry

厳選されたモデルレジストリを再構築します。

npm run capabilities

機能マニフェストを再構築します。

npm run catalog:sync

プロバイダーの発見と価格証拠を更新します。

npm run mcp

stdio MCPサーバーを起動します。

npm run set-password

スタジオのパスワードを設定または変更します(-- --removeでクリア)。

./scripts/remote.sh open

このマシンのIPでインターフェースを公開します(ファイアウォールルールを含む)。

./scripts/remote.sh close

元に戻します—ローカルアクセスのみに戻します。

./scripts/remote.sh status

開いているか閉じているか、どのポートで、パスワードの有無。

npm run test:contracts

API、永続化、モデル契約テストを実行します。

npm run test:mcp

MCPディスカバリとメディア動作をスモークテストします。

npm run test:e2e

ブラウザジャーニーとアクセシビリティチェックを実行します(npx playwright install chromiumが一度必要です)。

npm run test:release

完全なリリースゲートを実行します。

セキュリティとプライバシー

デフォルトの姿勢。 両方のポートはループバックにバインドされ、パスワードはありません—自分のマシンと話すのにパスワードは必要ないはずです。設定したプロバイダーへの呼び出し以外、マシンから何も出て行きません。

キー。 サーバー側で読み取られ、UIに返されることはありません。設定画面には、存在、出所、最後の4文字が表示されます—値は決して表示されません。.envは所有者のみの権限(600)で書き込まれ、gitignoreされています。

オプションのパスワード。 BENCH_PASSWORDを設定すると、APIはセッションを要求します。

npm run set-password              # asks for it, without echoing
npm run set-password -- --remove

scryptハッシュとして保存されるため、誰もファイルからパスワードを読み取ることはできません。設定または変更すると、他の全員が即座にサインアウトされます。忘れましたか?.envから行を削除して再起動してください—それが意図的なリカバリパスです。なぜなら、そのファイルを持っている人はすでにその中のキーを持っているからです。

パスワードはAPIと生成されたファイルを保護します。インターフェースシェルはポートに到達する誰にでも提供されますが、セッションがないと何も表示されません。シェルを隠すこともリバースプロキシの仕事であり、このプロセスの仕事ではありません。

設定の書き込みはマシンのみ。 有効なセッションがあっても、ネットワークからの設定エンドポイントへのPOSTは拒否されます—キーの変更はマシンにいる必要があります。これは開発プロキシでも維持されます:APIはソケットがすでにループバックの場合にのみ転送されたオリジンを信頼するため、ネットワークからのリクエストは偽造できません。

公開。 ./scripts/remote.sh openはインターフェースを公開しポートを開きます。closeは両方を元に戻します。別のマシンから到達すると安全に公開したままにするを参照してください。オープンポートよりもTailscaleまたはパスワード保護されたリバースプロキシを推奨します。

  • 生成されたメディアは、そのプロバイダーの条件に従って外部プロバイダーによって保持される場合があります。

  • ウェブサイトとドキュメントの作成は、ローカルで認証されたコーディングエージェントを呼び出す場合があります。デプロイする前に生成されたソースを確認してください。

サービスを公開、変更、再配布する前にSECURITY.mdをお読みください。

正直な境界

  • Benchはローカルなシングルユーザーツールであり、ホスト型マルチテナントSaaS製品ではありません。

  • レジストリは意図的にキュレーションされています。カタログに存在しても本番受け入れを保証するものではありません。

  • 受け入れられた入力は創造的な忠実性を保証しません。

  • ウェブサイト出力は設計上静的です。

  • PDF作成はローカルのChromeインストールに依存します。

  • モデルの可用性と価格はカタログ同期後に変更される可能性があります。

  • レイヤーを所有することは、小さなソフトウェアを維持することを意味します。

リリースの信頼性

リリースゲートは、本番ビルド、APIとデータベースの契約、MCPディスカバリ、ブラウザジャーニー、アクセシビリティ、レスポンシブコンテインメント、障害状態、モデル遷移、ビジュアルスナップショットをカバーします。

npm run test:release

ライセンス

Bench Studio PublicはMITライセンスの下で利用可能です。


モデルが重い作業を行います。Benchはその周りのレイヤーを見えるようにします—そしてあなたのものにします。

Related MCP Connectors

Related MCP Servers