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 --currentbl 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に任せる範囲を広げても戻せない操作を避けられます。