Claude Media
Claude CodeのBlaxelプラグインでサンドボックスとAIエージェントをデプロイする

Claude CodeのBlaxelプラグインでサンドボックスとAIエージェントをデプロイする

BlaxelプラグインのSDK skill・CLI skill・ホスト型MCPの役割と、導入からOAuth認証、サンドボックス作成とエージェントのデプロイ、bl -yやポート宣言の落とし穴までを示します。

Blaxelプラグインは、Claude CodeにBlaxelのクラウドサンドボックスとAIワークロードのデプロイを任せるための部品を足します。中身はSDK用とCLI用の2つのskill、そしてホスト型のMCPサーバーです。この記事は、何が入るか、導入とOAuth認証、サンドボックスを作ってプレビューURLを出す流れ、エージェントのデプロイ、事故を避けるための運用の決めごとを順に扱います。

Blaxelプラグインに入っているもの

マーケットプレイスのページでは「Anthropic verified」の表示が付き、説明は「AIワークロードを構築・デプロイするためのBlaxelのagent skills」です。提供元リポジトリ(blaxel-ai/agent-skills)のプラグイン定義はバージョン1.2.0で、ライセンスはMITです。部品は3つあります。

構成

プラグインを構成する3つの部品

  • blaxel-sdk skill

    クラウドサンドボックス(microVM)でコードを動かし、開発サーバーを起動してプレビューURLを出すための手順書です。エージェント、MCPサーバー、バッチジョブ、Agent Drive(サンドボックス間で共有するファイルシステム)のデプロイも扱います。

  • blaxel-cli skill

    blコマンドでBlaxelのリソースを操作するための手順書です。blが入っていなければインストール手順も案内します。

  • ホスト型MCPサーバー

    https://api.blaxel.ai/v0/mcpを指すHTTP型のMCPです。ワークスペースのリソース管理に使い、OAuth 2.1でサインインします。

サンドボックスは、使っていないあいだはスタンバイに入り、再開は25ミリ秒未満とSDK skillは説明しています。数秒の無操作でゼロにスケールする設計なので、AIエージェントが使い捨てに近い形で計算環境を持つ用途に向きます。

導入手順とOAuthサインイン

先にマーケットプレイスを追加し、そのあとでプラグインを入れます。順序を逆にするとPlugin "blaxel" not found in any configured marketplaceで失敗します。

claude plugin marketplace add blaxel-ai/agent-skills
claude plugin install blaxel

入れ終えたらClaude Codeの中で/mcpを実行し、plugin:blaxel:blaxelというサーバーにサインインします。OAuth 2.1のフローなので、ブラウザで承認すれば完了です。APIキーを設定ファイルに貼る必要はありません。

skillだけが欲しく、MCPは要らない場合は別の入口があります。次のコマンドはskillだけを入れ、MCPサーバーは入りません。

npx -y skills add blaxel-ai/agent-skills -g --all

プラグインの管理一般(マーケットプレイスの追加、更新、無効化)はClaude Codeプラグインとマーケットプレイスの解説にまとめています。

blコマンドの準備と認証

CLI skillは、blの有無をbl versionで確かめるところから始めます。なければ公式インストーラーを使います。

curl -fsSL https://blaxel.ai/install.sh | sh
bl setup
bl workspaces --current

bl setupは、このマシンに必要なものをまとめて整え、そのあとログインまで進めるコマンドです。端末なしの環境ではbl setup --yesを使い、その場合ブラウザログインは省かれます。サインインが残っていればbl loginが出すブラウザのURLをユーザーに承認してもらう流れです。最後のbl workspaces --currentの出力が空なら、サインインは未完了と扱います。

CIのような無人環境では、環境変数BL_WORKSPACEとBL_API_KEYを安全に渡して使います。SDKの認証は、ログイン済みのbl、.envの環境変数、システムの環境変数、~/.blaxel/config.yamlの順に探します。

サンドボックスを作ってプレビューURLを出す

SDK skillが「最もよく使う流れ」とするのは、サンドボックスを作り、コマンドを実行し、プレビューURLを得る3段階です。Claude Codeには「Astroのひな形をBlaxelのサンドボックスで動かし、プレビューURLを教えて」のように頼めば、skillがこの手順を参照して動きます。

作成の段階で決めるもの

サンドボックスはcreateIfNotExistsで作ります。同名のものがあれば再利用し、FAILEDやTERMINATEDなどの死んだ状態なら作り直してくれます。

import { SandboxInstance } from "@blaxel/core";
 
const sandbox = await SandboxInstance.createIfNotExists({
  name: "my-sandbox",
  image: "blaxel/base-image:latest",
  memory: 4096,
  ports: [{ target: 3000, protocol: "HTTP" }],
});

イメージはBlaxel Hubの公開イメージ(blaxel/node:latest、blaxel/nextjs:latest、blaxel/vite:latest、blaxel/py-app:latestなど)か、自分で作ったテンプレートを指定します。

起動とプレビュー

ファイルを書いてnpm installを流し、開発サーバーをwaitForPorts付きで起動します。ポートが開いた時点で呼び出しが返ります。そのうえでプレビューを作ります。

const preview = await sandbox.previews.createIfNotExists({
  metadata: { name: "app-preview" },
  spec: { port: 3000, public: true },
});
const url = preview.spec?.url;

非公開にしたいときはpublic: falseにし、トークンを発行してURLのbl_preview_tokenクエリに付けます。

作る前に知っておく制約

この流れで失敗しやすい点は、skillが「Important gotchas」として並べています。

  • ポートは作成時に宣言する。あとから足せない
  • ポート80・443・8080は予約済み
  • 開発サーバーはlocalhostではなく0.0.0.0にバインドしないとプレビューURLから届かない
  • サンドボックスのメモリの約50%はインメモリのファイルシステム(tmpfs)に割り当てられる。大きな保存領域が要るときはボリュームを使う

astro dev --host 0.0.0.0 --port 3000のように、起動コマンドにホストを書いておくのが確実です。

エージェントやジョブをデプロイする

サンドボックス以外のリソースも、blで同じ型で出せます。

リソース作成ローカル確認実行・確認
エージェント作成bl new agentローカル確認bl serve実行・確認bl deployのあとbl chat 名前
MCPサーバー作成bl new mcpローカル確認bl serve --hotreload実行・確認bl deploy
バッチジョブ作成bl new jobローカル確認なし実行・確認bl deployのあとbl run job 名前 --data JSON
サンドボックステンプレート作成bl new sandbox 名前ローカル確認なし実行・確認bl deploy

エージェントはサーバーレスのHTTPエンドポイントとして公開され、フレームワークは問いません。同期エンドポイントは100秒、非同期は10分までのリクエストを受けます。バッチジョブは1タスク最大24時間で、blaxel.tomlのmaxConcurrentTasksで並列数を決めます。

設定はblaxel.tomlに置きます。typeにはsandbox、agent、function、jobなどを書き、メモリやポートは[runtime]の下に宣言します。環境変数は[env]に書けますが、秘密情報は入れず、Console側のVariables-and-secretsを使う、とskillは書いています。

他のクラウドへ出す場合の手順は、Deploy on AWSプラグインやAzureプラグインの記事が対になります。BaaS系のAppwriteプラグインは、デプロイをコマンドで手動起動する設計で、本プラグインとは進め方が違います。

独自イメージとAgent Driveで環境を持ち回る

同じ環境を何度も使うなら、テンプレートを作ります。bl new sandbox 名前がblaxel.toml、Dockerfile、entrypoint.sh、Makefileを生成します。Dockerfileにはsandbox-apiバイナリを必ず取り込み、entrypoint.shでそれを起動します。

FROM node:22-alpine
WORKDIR /app
COPY --from=ghcr.io/blaxel-ai/sandbox:latest /sandbox-api /usr/local/bin/sandbox-api
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

複数のサンドボックスで状態を共有したいときは、Agent Driveを実行中のサンドボックスにマウントします。ただしskillはAgent Driveをプライベートプレビューと書いているため、使える範囲はBlaxel側の提供状況に左右されます。各サンドボックスはhttps://<SANDBOX_URL>/mcpに、プロセス管理・ファイル操作・コード生成のためのMCPサーバーも持ちます。

事故を避けるための運用

Claude Codeに任せるときに効くのは、skillの記述から導ける次の3点です。

bl -yは確認を飛ばす

CLI skillは、確認を求めるコマンドには非対話環境で-yを付けるよう指示しています。裏を返すと、bl deleteに-yが付くと確認なしで消えます。削除系はClaudeに任せきりにせず、CLAUDE.mdに規約を置いておくと安全です。次は書き方の例です。

## Blaxel運用ルール
- `bl delete` と `bl unshare` は、対象名を私に伝えて承認を得てから実行する
- 秘密情報は blaxel.toml の [env] に書かない。Console の Variables-and-secrets を使う
- サンドボックスは作成時にポートを宣言する。足りなければ作り直す
- 作業の最後に `bl workspaces --current` で対象ワークスペースを確認する

ワークスペースを取り違えない

blのグローバルフラグ-wでコマンドごとにワークスペースを上書きできます。複数のワークスペースを持つ人は、デプロイ前にbl workspaces --currentの出力を読ませ、意図したワークスペースか確認させてください。skillは、ワークスペース名を推測したり、資格情報の貼り付けを求めたりしないよう定めています。

起動のたびに作り直さない

リポジトリのクローンと依存の再インストールを毎回やると、起動に数分かかります。skillの対策は、ボリュームにプロジェクトを置く、テンプレートイメージに依存を焼き込む、という2つです。アイドルのサンドボックスは削除せずスタンバイに任せ、掃除にはTTLを使います。1ファイルずつ書くのも遅いので、多数のファイルはwriteTreeか、zipで送って展開します。

プラグインの更新と注意点

skillの更新は、bl skills updateで明示的に取り込めます。自動更新を止めるならbl skills autoupdate off、状態確認はbl skills statusです。プラグインでの導入分はプラグイン管理側の持ちもので、これらの対象になりません。更新後は、読み込み済みの指示が会話に残る場合があるため、Claude Codeを再起動して新しいskillを読ませます。

なお、Blaxelの料金や、サンドボックスの同時実行数などの上限は、マーケットプレイスのページにもリポジトリのREADMEにも記載がありません。業務で使うなら、導入前にBlaxelのドキュメントで契約と上限を確かめてください。

まとめ

Blaxelプラグインは、サンドボックスでコードを動かす部分(SDK skill)、blでリソースを出す部分(CLI skill)、ワークスペースを管理する部分(MCP)を1回の導入で揃えます。つまずきやすいのは、マーケットプレイスの追加順、サンドボックスのポート宣言、0.0.0.0バインドの3つです。削除系だけは-yの扱いをCLAUDE.mdで縛っておくと、AIに任せる範囲を広げても戻せない操作を避けられます。

この記事を共有:XはてブLinkedIn