Claudeのマネージドエージェントを少し触り始めました。
先日のアップデートで「Self-hosted sandboxes」がサポートされました。
ツール実行のためのサンドボックス環境をClaude Platformの外に用意できるサービスで、CloudflareやVercelで提供が開始されています。Anthropicの公開に合わせて各社のブログでも発表されています。
発表を斜め読みしていると、「外部のクラウドベンダーで動かせるんだ、へー」ぐらいなんですが、ドキュメントを読むと、特にクラウドベンダーでの動作に制限されるわけではなく、オンプレ環境でも動作することがわかりました。
我が家のオンプレ環境といえば、ラズパイ。
ラズパイでやることといえばLチカ。
ということで、Claude Managed AgentsでLチカをしてみました!
前提条件
- Claude Consoleでのワークスペースの作成
- APIキーの発行(環境変数の
ANTHROPIC_API_KEYにセット) - ラズパイ(我が家はPi 4 8GB、OSはRaspberry Pi OS)
- 赤色LEDをGPIO 17とつなぐ
配線はこちらを参考にしました。
構築
Claude Consoleでやっていきます。
1. エージェントを作成
左メニューの「エージェント」を開き、「新しいエージェント」ボタンをクリックします。
以下のYAMLを貼り付け、エージェントを作成します。
name: Raspberry Pi LED Assistant
model:
id: claude-haiku-4-5
speed: standard
system: |-
You are running on a Raspberry Pi.
A red LED is connected to GPIO 17.
When asked to control the LED, do so on that hardware.
Write clean, well-documented code.
mcp_servers: []
tools:
- configs: []
default_config:
enabled: true
permission_policy:
type: always_allow
type: agent_toolset_20260401
skills: []
metadata: {}
2. 環境を作成
左メニューの「環境」を開き、「環境を追加」ボタンをクリックします。
任意の名前をつけて、ホスティングの種類を「セルフホスト型」に変更します。
作成後の画面の画面で、上部にある環境ID(ANTHROPIC_ENVIRONMENT_ID)は後で使用するのでメモします。「環境キーを生成」をクリックし、環境キー(ANTHROPIC_ENVIRONMENT_KEY)を生成し、これもメモします。
3. ラズパイで起動するワーカーを用意
Mnaged Agentsとサンドボックス間の通信方法は2つあります。
- always-on worker … サンドボックス側から接続(多分WebSocketかな?)
- webhook-triggered handler … Managed AgentsからのWebhookで接続
クラウド提供型サンドボックスはおそらくWebhookタイプだと思います。
オンプレや宅内ラズパイの場合はalways-on workerタイプを使うと、Webhookエンドポイントを外部公開する必要がないので、安心してつかますね。
ワーカーを用意します。
uvでプロジェクトを初期化し、anthropicライブラリーをインストールします。
uv init --python 3.13
uv add anthropic
ワーカーのPythonスクリプトはこんな感じ。
import asyncio
import logging
import os
from pathlib import Path
from anthropic import AsyncAnthropic
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s %(name)s: %(message)s",
)
async def main() -> None:
client = AsyncAnthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
workdir = Path(__file__).resolve().parent / "workspace"
workdir.mkdir(exist_ok=True)
worker = client.beta.environments.work.worker(
environment_id=os.environ["ANTHROPIC_ENVIRONMENT_ID"],
environment_key=os.environ["ANTHROPIC_ENVIRONMENT_KEY"],
workdir=workdir,
)
await worker.run()
if __name__ == "__main__":
asyncio.run(main())
ANTHROPIC_API_KEYと、環境作成時に取得したANTHROPIC_ENVIRONMENT_IDとANTHROPIC_ENVIRONMENT_KEYを環境変数にセットし、以下のコマンドで起動します。
uv run worker.py
4. セッションを作成
Claude Consoleに戻って、セッションを作成します。
先ほど作成したエージェントと環境を選択します。
これで準備は完了です。
Claude Managed AgentsでLチカ!
セッションでエージェントに指示を行います!
赤色LEDを3回点滅させて
すると、、何度か試行錯誤の後に、、
点滅しました!
写真だとエージェントから実行したことは伝わらないですが(笑)、間違いなくエージェントが実行してくれました。
セッションの画面は実行履歴が見れていいですね!
まとめ
想定された使い方ではない気もしますが、Claude Managed AgentsでLチカできました!
たかがLチカ、されどLチカ。可能性は無限大!
頭脳がクラウドにあって、ツールがエッジにあります。これは、来るんじゃないですか?!
コンソールを使わず、API呼び出しで実施する手順も作成し、GitHubに公開してます~






