agend-sh について
agend-sh は、AIエージェントがMCP経由で操作する、永続的で分離されたLinuxワークスペースを提供します。リモートでのコード実行や対話型ターミナル、サービスのプレビュー共有が必要な開発者向けです。
主な機能
- 01永続的で分離されたLinuxワークスペース
- 02コマンドとバックグラウンドタスクの実行
- 03対話型ターミナルとREPLセッション
- 04ローカルとリモート間のファイル転送
- 05HTTPSプレビューによるサービス公開
- 06エージェントのターミナル操作の監視
活用シーン
- 01永続的なリモートワークスペースでのコード実行
- 02REPLやターミナルアプリの操作
- 03稼働中サービスのHTTPSリンク共有
MCP 対応
CLIは、環境管理、コマンド実行、ファイル操作、ポート公開のためのMCPツールを提供します。クライアントからローカルstdioサーバーとして `agend mcp` を起動するよう設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e AGEND_API_TOKEN ghcr.io/agend-sh/agend-mcp@sha256:4462e2571be0e69003e1be93255e04523342e1e5aa17482ec3d63bd7506bb82fAGEND_API_TOKENシークレットYour Agend account token. Sign in with agend login, then follow docs/mcp-registry.md to load the active account token. An Agend account and available environment quota are required.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/agend-sh/agend-mcp@sha256:4462e2571be0e69003e1be93255e04523342e1e5aa17482ec3d63bd7506bb82fstdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AI エージェントのための、本物のコンピューター。
永続的な Linux ワークスペース。対話型ターミナル。共有可能なプレビュー。
お気に入りの MCP エージェントを接続して、作業を任せましょう。
クイックスタート · 対話型ターミナル · エージェントを接続 · MCP ツール · agend.sh
agend は、エージェントが MCP 経由で操作できる、永続的で隔離された Linux 環境を提供します。 コードの実行、ファイルの編集、Python REPL や Vim の利用、サービスの起動、プレビュー URL の公開が可能です。自分でシェルを開くことも、エージェントの作業中に対話型ターミナルを確認することもできます。
| ビルド | 操作 | 作業を見せる |
|---|---|---|
| コマンドやバックグラウンドタスクを実行します。ファイルを転送します。リモートワークスペースにプロジェクトを保存できます。 | PTY 経由で REPL やターミナルアプリを操作でき、ターミナルが入力待ちになると通知されます。 | ブラウザーのプレビューを開くか、agend watch で対話型セッションをミラーリングします。 |
クイックスタート
1. インストール
Linux / macOS
curl -fsSL https://agend.sh/i | sh
Windows · PowerShell
irm https://agend.sh/i.ps1 | iex
Homebrew · Linux / macOS
brew install agend-sh/tap/agend
スクリプトインストーラーは、リリース署名とアーカイブの SHA-256 チェックサムを検証します。Unix インストーラーは /usr/local/bin に書き込み、sudo を求める場合があります。Windows インストーラーは %LOCALAPPDATA%\agend\bin に書き込み、ユーザーの PATH に追加します。リリースは 3 つすべてのプラットフォームで amd64 と arm64 に対応しています。
agend version
2. サインイン
agend login
ブラウザーで認証を完了してください。メールアドレスとパスワードでアカウントを作成する場合は、代わりに次を実行します。
agend signup --email [email protected]
signup はパスワードの入力を求め、成功するとサインインします。再度 login を実行する必要はありません。
3. ワークスペースを作成する
agend env create --name my-workspace
agend ping
agend exec 'python3 --version'
作成した環境は、CLI コマンドの対象として選択されます。サイズはアカウントのデフォルトプロファイルに従います。利用可能なサイズ、クォータ、スリープポリシーを確認するには agend profiles を実行してください。別のサイズを選ぶには、返されたプロファイル ID を agend env create --profile <profile-id> に渡します。
4. エージェントを接続する
agend config claude-code
または、別のクライアントを設定します。
agend config codex cursor gemini
クライアントの MCP 統合を再起動または再読み込みして、次のプロンプトを試してください。
agend の
list_environmentsを使ってmy-workspaceを見つけてください。そこで対話型の Python REPL を起動し、6 × 7 を計算してから REPL を終了してください。
エージェントは環境を検出し、MCP ツールで操作します。Agend アカウントと利用可能な環境クォータが必要です。CLI だけでは、無料のローカルマシンはプロビジョニングされません。
agend-sh は公式 MCP Registryに
io.github.agend-sh/agend-sh として掲載されています。Docker ベースのインストールについては、
コンテナパッケージと接続ガイドをご覧ください。
Smitheryでも利用できます。
MCPB 拡張機能に対応したクライアントについては、バンドルガイドをご覧ください。
インタラクティブなターミナル
ターミナルは入力待ちに入ったことを通知できます。 これにより、REPL やターミナルアプリを操作しているエージェントプロセスにフィードバックが返されます。
たとえば、shell_exec を次のように呼び出します。
{
"environment": "my-workspace",
"command": "python3 -q",
"interactive": true
}
応答は次のようになります。
status: awaiting_input
>>>
prompt_type: interactive
input_wait: true
shell_send_raw を使って続行します。
{
"environment": "my-workspace",
"input": "print('hello from agend')\n"
}
status: awaiting_input
print('hello from agend')
hello from agend
>>>
input_wait: true
次に、shell_send_raw で exit()\n を送信して Python を終了します。
応答の読み方
| フィールド | 意味 |
|---|---|
status: completed | コマンドが終了しました。exit_code を確認してください。 |
status: awaiting_input | インタラクティブプロセスはまだ動作しています。このステータスだけでは、入力待ちであるとは限りません。 |
input_wait: true | この応答の収集中に入力待ちイベントが検出されました。ターミナルリーダーが十分な入力を受け取れず、入力待ちの状態になりました。 |
input_wait: false | この応答では新しいイベントは検出されませんでした。以前のイベントが取り消されたことや、プロセスが入力待ちを終了したことを示すものではありません。 |
status: timeout | フォアグラウンドコマンドが制限時間を超過しました。 |
入力待ちシグナルはイベントであり、永続的な状態の問い合わせでも、アプリケーションやサービスの準備完了を保証するものでもありません。これは、環境のゲストスタックでのサポート状況に依存します。
REPL や TUI では、interactive: true を設定し、以降の入力に shell_send_raw を使用してください。Enter を押す場合は \n を含めます。ビューポートが変わったときは shell_resize を使用してください。アプリ独自のコマンドで終了するか、shell_interrupt を使ってセッションを閉じてください。各環境で同時にアクティブにできるインタラクティブセッションは 1 つです。別の shell_exec を開始する前に、現在のセッションを終了してください。
インタラクティブプロセスはツール呼び出しの間も動作し続け、応答の収集がタイムアウトしても終了しません。ツールの応答が完了した後に MCP クライアントとの接続が切れても、プロセス自体は停止しません。同じ環境に再接続して続行してください。環境のスリープ、クラッシュ、またはコールドリセットによって、プロセスの存続時間が変わることがあります。
エージェントの作業を確認する
agend watch
Watch は選択した環境のインタラクティブセッションをミラーリングし、保持されている出力を再生して、新しい更新を表示します。リモートプロセスには入力を送信しません。監視を停止するには q または Ctrl+C を押してください。エージェントのセッションは続行されます。
画面を録画するには、次のようにします。
agend watch --typing-delay 40ms
正確に表示するには、ターミナルのサイズをリモートセッションに合わせてください。Watch は、エージェントのツール呼び出しで収集された出力を追跡します。呼び出しの間にゲストをポーリングして出力を取得することはありません。表示されるのはインタラクティブセッションであり、通常のコマンド出力やバックグラウンドタスクのログではありません。
自分で環境を操作しますか?
agend connect
これにより、キーボード入力とターミナルのサイズ変更が可能なライブターミナルが開きます。シェルを閉じるには exit を実行してください。stdin にターミナルが必要です。また、MCP と同じインタラクティブセッション枠を使用するため、先にエージェントのインタラクティブアプリを閉じてください。
ブラウザーのプレビューを共有する
エージェントに shell_exec でサービスを起動させます。
{
"environment": "my-workspace",
"command": "python3 -m http.server 8080 --bind 0.0.0.0 --directory /home/agend-user/readme-demo",
"run_in_background": true
}
まず /home/agend-user/readme-demo を作成し、デモファイルをそこに配置してください。トンネルから接続できるよう、サービスを 0.0.0.0 にバインドしてください。
次に port_expose を呼び出します。
{
"environment": "my-workspace",
"port": 8080
}
応答には公開 HTTPS URL が含まれます。トンネルと DNS が利用可能になるまで、しばらくお待ちください。port_list には有効な公開設定が表示されます。port_unexpose で公開設定を削除できます。ポートを公開すると、そのサービスにインターネットからアクセスできるようになります。
Cloudflare で管理している独自ドメインを使う場合は、agend domain add example.com でゾーンを登録し、port_expose に domain: "app.example.com" を渡してください。登録時には、Zone:DNS:Edit、Zone:Zone:Read、および Account:Cloudflare Tunnel:Edit の権限を持つ Cloudflare API トークンの入力を求められます。スクリプトでは AGEND_CF_TOKEN を使って指定できます。agend domain list は、agend domain remove <domain-id> で使用するドメイン ID を返します。
エージェントを接続する
agend config は、マシンにインストールされている対応クライアントを検出します。書き込み前に選択内容をプレビューできます。
agend config --dry-run
agend config
クライアントを明示的に選択することもできます。
| クライアント | コマンド |
|---|---|
| Claude Code | agend config claude-code |
| Claude Desktop | agend config claude-desktop |
| Codex | agend config codex |
| Cursor / Windsurf | agend config cursor windsurf |
| Gemini CLI / Antigravity | agend config gemini antigravity |
| VS Code / Zed / JetBrains | agend config vscode zed jetbrains |
| Cline / Roo Code | agend config cline roo-code |
| OpenCode / GitHub Copilot CLI | agend config opencode github-copilot-cli |
| Amazon Q / Goose / Continue | agend config amazon-q goose continue |
設定すると、ローカルの stdio サーバーとして agend mcp が登録されます。クライアントがインストール済みバイナリを見つけられる必要があります。Windows では、設定書き込みツールがその絶対パスを使用します。クライアント固有の設定パスと形式は agend config が処理します。
別の MCP クライアントを手動で設定する
mcpServers JSON 形式を使用するクライアントの場合:
{
"mcpServers": {
"agend": {
"command": "agend",
"args": ["mcp"]
}
}
}
クライアントがシェルの PATH を引き継がない場合は、バイナリの絶対パスを使用してください。これは汎用的な例であり、一部のクライアントでは異なるスキーマを使用します。agend mcp は stdin から JSON-RPC を読み取り、stdout にプロトコル応答を書き込みます。ログは stderr に出力されます。ツールの結果は MCP のテキストコンテンツで、status や input_wait などのフィールドを含みます。
CLI では23 個のツールを利用できます。list_environments を呼び出して、ID と名前を確認してください。環境固有のツールでは environment 引数が必要で、ID または名前を指定できます。env_create、list_environments、profiles_list、reload_config では不要です。
| 分野 | ツール | 機能 |
|---|---|---|
| 環境 | list_environments | 環境、名前、説明、状態、ティアを確認します。 |
profiles_list | 利用可能なサイズ、クォータ、使用状況を表示します。 | |
env_create | 環境を作成します。name、description、profile は省略可能です。 | |
env_update | 環境の名前と説明を編集または消去します。 | |
env_status | 環境を起動せずに、状態とメタデータを確認します。 | |
env_wake | スリープ中の環境を起動します。 | |
env_cold_reset | 応答しなくなった環境の最終手段として復旧します。診断理由が必要です。 | |
| シェル | shell_exec | タイムアウト、先頭/末尾の切り詰め、対話モード、バックグラウンドモードを指定してコマンドを実行します。 |
shell_send_raw | 対話型アプリにバイト列を送信します。改行は追加されません。 | |
shell_provide_input | アクティブなターミナルセッションで簡単なプロンプトに回答します。改行が追加されます。REPL や TUI には shell_send_raw を使用してください。 | |
shell_resize | アクティブな PTY のサイズを変更します。 | |
shell_interrupt | コマンドを中断するか、対話型セッションを終了します。 | |
shell_task_output | バックグラウンドタスクの出力と状態を読み取ります。 | |
shell_task_stop | バックグラウンドタスクを停止します。 | |
| ファイル | file_write | リモートファイルにテキストをアトミックに書き込みます。 |
file_upload | ローカルファイルを環境に転送します。 | |
file_download | リモートファイルをローカルマシンに転送します。 | |
file_move | リモートファイルを移動または名前変更します。 | |
| ネットワーク | port_expose | パブリック HTTPS トンネル経由でサービスを公開します。 |
port_list | 公開中のポートと URL を一覧表示します。 | |
port_unexpose | 公開を解除します。必要に応じて対象のドメインを指定できます。 | |
| 診断 | env_stats | ディスク、メモリ、CPU、プロセスを確認します。 |
reload_config | 別のターミナルで変更した後に認証情報を再読み込みし、接続をリセットします。 |
interactive と run_in_background は同時に指定できません。バックグラウンド実行では、タスクツールで使用する task_id が返されます。
file_upload と file_download のローカルパスは、MCP サーバーの作業ディレクトリ内、またはサーバーの環境で AGEND_LOCAL_ROOT を設定している場合はそのディレクトリ内に制限されます。ダウンロードでは転送メタデータが返されます。テキストを読むには shell_exec を使用するか、ダウンロードしたローカルファイルを開いてください。大きなファイルは、リモート環境内で curl または wget を使って直接ダウンロードするほうが通常は高速です。
CLI リファレンス
CLI コマンドは選択中の環境に対して実行されます。agend env use やその他の CLI 環境コマンドでは環境 IDを使用してください。MCP ツールでは名前も解決されます。
agend env list
agend env use <env-id>
agend exec 'pwd'
環境とアカウント
| コマンド | 目的 |
|---|---|
agend profiles | アカウントで利用可能なプロファイルを一覧表示します。 |
agend env create [--name NAME] [--description TEXT] [--profile ID] | ワークスペースをプロビジョニングして選択します。 |
agend env list | 環境を一覧表示します。 |
agend env use <env-id> | 環境を選択します。スリープ中の場合は起動します。 |
agend env edit [env-id] --name NAME --description TEXT | メタデータを編集します。--clear-name と --clear-description を指定すると値が削除されます。 |
agend env status [env-id] | 起動せずに状態を確認します。 |
agend env wake [env-id] | スリープ中の環境を起動します。 |
agend env cold-reset [env-id] --reason TEXT | コールドブートにより、実際に応答しなくなった環境を復旧します。 |
agend env delete [env-id] | 環境とそのデータを完全に削除します。 |
agend status | 認証状態と選択中の環境の状態を表示します。 |
agend signup --email <email> | アカウントを作成し、パスワードの入力を求められたらサインインします。 |
agend login | ブラウザーから認証します。 |
agend login --email <email> | メールアドレスとパスワードでサインインします。 |
agend login --token <token> | 直接 API トークンを保存します。 |
agend account list | 保存済みアカウントを一覧表示します。 |
agend account switch <email> | アカウントを切り替えます。 |
agend account remove <email> | 保存済みアカウントを削除します。 |
agend logout [--all] | アクティブなアカウントのローカル認証情報、または保存済みのすべてのアカウントを削除します。 |
コールドリセットでは永続データディスクは保持されますが、ゲストメモリ、プロセス、セッション、スナップショットは破棄されます。これは復旧操作です。環境の作成、選択、または環境内での実行によって、環境が起動または復帰することがあります。読み取り専用で状態を確認するには、env status を使用します。
シェル、ファイル、タスク
| コマンド | 用途 |
|---|---|
agend connect [--shell COMMAND] | 対話型のライブターミナルを開きます。 |
agend watch [--typing-delay 40ms] | 入力を送信せずに、対話型セッションをミラーリングします。 |
agend exec <command> | リモートコマンドを実行します。 |
agend input <text> | 簡単なプロンプトに回答します。改行が追加されます。 |
agend resize <columns> <rows> | アクティブな PTY のサイズを変更します。 |
agend interrupt | アクティブなコマンド/セッションを中断します。 |
agend ping | 接続を確認し、バックエンドのバージョンを表示します。 |
agend file-get <remote-path> | リモートファイルの内容を標準出力に出力します。 |
agend file-put <remote-path> <content> | 指定した内容をリモートファイルに書き込みます。 |
agend file-move <source> <destination> | リモートファイルを移動または名前変更します。 |
agend task-output <task-id> | バックグラウンドタスクの出力を読み取ります。 |
agend task-stop <task-id> | バックグラウンドタスクを停止します。 |
exec は、--timeout (ミリ秒単位)(デフォルト:30000)、--head、--tail、--background、--interactive に対応しています。ライブターミナルには connect を使用します。エージェントで REPL や TUI を操作する場合は、MCP の対話型ツールワークフローを使用します。
たとえば、次のようになります。
agend file-put /home/agend-user/hello.txt 'hello from agend'
agend file-get /home/agend-user/hello.txt
agend exec --timeout 60000 'python3 --version'
file-get はファイルのメタデータを標準エラー出力に書き込みます。file-put が受け取るのは内容であり、ローカルのファイル名ではありません。ローカルファイルの転送には、MCP の file_upload を使用してください。どちらの CLI ファイルコマンドも --encoding text または --encoding base64 に対応しています。file-put はさらに --create-dirs、--overwrite、--mode にも対応しています。
チームと共有環境
共有環境はチームが所有します。リースを取得したメンバーは、リースが解放されるか期限切れになるまで、排他的にアクセスできます。
| コマンド | 用途 |
|---|---|
agend team create <name> | 自分が所有するチームを作成します。 |
agend team list | 自分のチームを一覧表示します。 |
agend team invite <team-id> <email> | メンバーを招待します。 |
agend team accept <team-id> | 招待を承諾します。 |
agend team members <team-id> | メンバーを一覧表示します。 |
agend team envs <team-id> | 共有環境とリースの状態を一覧表示します。 |
agend profiles --team <team-id> | チームが利用できるプロファイルを確認します。 |
agend team env-create <team-id> [--profile ID] | 共有環境をプロビジョニングします。 |
agend env acquire <env-id> | 排他的なリースを取得します。 |
agend env heartbeat <env-id> | リースを延長します。 |
agend env release <env-id> | リースを解放します。 |
選択した環境がチームに属している場合、agend mcp はリースの取得を試み、接続中はハートビートを送り、正常終了時にリースを解放します。他のメンバーが保持しているリースがあると、アクセスできません。クライアントが強制終了された場合、リースは期限切れになるまで残ることがあります。
agend update
アップデーターは、バイナリーを置き換える前に、署名済みのチェックサムマニフェストとアーカイブを検証します。すでに実行中の MCP プロセスは、再起動するまで現在のバージョンを使用し続けます。リリースビルドは、最大 24 時間に 1 回、自動で更新を確認します。これらの自動確認を無効にするには、AGEND_NO_AUTOUPDATE=1 を設定してください。Homebrew で管理されているインストールの場合は、brew upgrade agend を実行してください。
| 状況 | 対処方法 |
|---|---|
インストーラーに agend setup claude と表示される、または config claude が失敗する | agend config claude-code または agend config claude-desktop を使用してください。 |
| エージェントがサーバーを見つけられない | agend version を確認し、agend config <client> を再実行して、MCP 連携を再起動してください。手動で設定する場合は、バイナリーの絶対パスが必要になることがあります。 |
| CLI で環境が選択されていない | agend env list を実行してから、agend env use <env-id> を実行してください。 |
| 新しい環境にまだ接続できない | agend env status を確認してください。トンネルが利用可能になるまで待ってから、agend ping を再試行してください。 |
| 入力時にアクティブなセッションがないと報告される | interactive: true を指定してアプリを起動してください。通常のフォアグラウンドコマンドでは、その後のツール呼び出しに備えて stdin を開いたままにできません。 |
終了時に connect が no active session waiting for input と報告する | シェルの実行が正常に終了した後、現在のバックエンドで断続的に発生することがあります。検証レポートを参照してください。続行する必要がある場合は、新しい connect セッションを開始してください。 |
| ローカルファイルのパスが拒否される | MCP の作業ディレクトリ内に配置するか、AGEND_LOCAL_ROOT を設定してください。 |
| ブラウザーのプレビュー URL がまだ開かない | サービスが実行中で、0.0.0.0 にバインドされていることを確認してください。トンネル/DNS の反映を待ってから、port_list を確認してください。それでもホスト名を解決できない場合は、DNS リゾルバーを確認してください。 |
| 環境が停止したように見える | まず env status を確認してください。通常の再接続/スリープ解除で復旧できない場合にのみ、コールドリセットを行ってください。 |
| 企業プロキシによって接続がブロックされる | HTTPS_PROXY/HTTP_PROXY を設定してください。Go バイナリーは Windows のシステムプロキシ設定を使用しません。 |
認証情報とアカウントごとの環境選択は ~/.config/agend/credentials.json に保存され、Unix ではファイルの権限が所有者のみに制限されます。Windows では、~ はユーザープロファイルを指し、アクセスは Windows のファイルシステム権限によって管理されます。スクリプトでメールアドレスとパスワードを使って認証するには、AGEND_PASSWORD を使用してください。それ以外の場合は、CLI が入力を求めます。
開発
Go 1.26.9+ が必要です。ソースコードをチェックアウトした状態で、次のコマンドを実行します。
git clone https://github.com/agend-sh/cli.git
cd cli
make build
./bin/agend version
make install はバイナリをビルドし、/usr/local/bin にコピーします。このディレクトリへの書き込み権限が必要です。Windows では、go build -o agend.exe ./cmd/agend を直接実行してビルドします。
go test ./...
go vet ./...
CI では Linux と Windows でビルド、テスト、静的解析を行い、さらにクロスコンパイルのチェックも実施します。バージョンタグを付けると GoReleaser が起動し、Linux/macOS 向けの tarball と Windows 向けの zip アーカイブ(amd64 および arm64 対応)、チェックサムマニフェスト、Sigstore 署名バンドルを公開します。Homebrew tap は独自のワークフローで更新されます。make release はローカルでの Unix クロスビルド用ターゲットであり、公開ワークフローではありません。
テスト済みのリリース、ライブチェック、現在の問題、カバレッジの制限については、README の検証レポートを参照してください。
全体の仕組み
Your MCP agent
│ stdio / JSON-RPC
▼
agend mcp ──────────────── agend connect / agend watch
│ authenticated gRPC over a WebSocket tunnel
▼
Environment backend
│
▼
Isolated Linux workspace
MCP ブリッジは各環境のエンドポイントを必要に応じて解決し、接続プールを維持して、接続の復旧を処理します。直接の CLI シェルアクセスにも同じバックエンドを使用します。別途トンネルクライアントをインストールする必要はありません。
| パス | 目的 |
|---|---|
cmd/agend/ | エントリーポイントと注入されるバージョン。 |
internal/cmd/ | CLI コマンド、クライアント設定、更新。 |
internal/mcp/ | JSON-RPC サーバー、ツール定義、接続プール、ローカルパスのルール。 |
internal/grpc/ | バックエンドクライアントとトランスポート。 |
internal/api/ | コントロールプレーンの HTTP クライアント。 |
internal/auth/ | アカウント、認証情報、ブラウザー認証。 |
internal/recovery/ | 接続エラーの分類。 |
proto/agentd/v1/ | 生成された protobuf および gRPC 定義。 |
ライセンス
MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。