Skip to main content
Glama

agentctl

K8sネイティブなエージェント/モデルワークロードオペレーターで、SAMメッシュ登録とMCPオペレーションプレーンを備えています。

プロセス起動型オーケストレーター(vllm-orchestrator)を、宣言的なK8sリソースに置き換えます。 すべての操作はMCPツールとして公開され、LangGraph/LangChainワークフロー構成に利用できます。

アーキテクチャ

LangGraph agent ──MCP──▶ agentctl ops plane (:8091)
                              │
                    ┌─────────┼─────────┐
                    ▼         ▼         ▼
              workload_*   fleet_*   sam_*
              tools        tools     tools
                    │         │         │
                    ▼         ▼         ▼
              K8s API    K8s API   SAM node
              (CRDs)    (pods)    (discovery)

Related MCP server: k8s-aiops

インストール

pip install agentctl
# or
uv pip install agentctl

インストール(クラスター)

kubectl apply -f https://github.com/moreWax/agentctl/releases/latest/download/install.yaml

これにより、CRD、オペレーター、MCPオペレーションプレーンがagentctl-systemにインストールされます。オペレーションプレーンはクラスター内でhttp://agentctl-mcp.agentctl-system.svc.cluster.local:8091/mcp(ステートレスなStreamable HTTP)からアクセス可能です。

使用方法

サンプルワークロードのデプロイ

kubectl apply -f examples/qwen3.8-27b.yaml        # Qwen3.8-27B, TP2 on 2 GPUs
kubectl apply -f examples/qwen3.8-27b-fp8.yaml    # FP8 variant, single GPU
kubectl apply -f examples/litellm-gateway.yaml    # LiteLLM proxy gateway

ソースから(開発用)

uv venv && uv pip install -e ".[dev]"
kubectl apply -f crd/agentctl-crd.yaml
agentctl serve          # operator (kopf controllers)
agentctl mcp --port 8091  # MCP ops-plane server (stateless Streamable HTTP)

モデルワークロードのデプロイ

kubectl apply -f examples/qwen3.8-27b.yaml        # Qwen3.8-27B, TP2 on 2 GPUs
kubectl apply -f examples/qwen3.8-27b-fp8.yaml    # FP8 variant, single GPU
kubectl apply -f examples/litellm-gateway.yaml     # LiteLLM proxy gateway

LiteLLMゲートウェイは、OpenAI互換のリクエストをvLLMバックエンドにルーティングします。エージェントをhttp://litellm-gateway:4000/v1に向け、qwen3.8-27bやqwen3.8-27b-fp8などのモデル名を使用してください。

MCPツール(LangGraph / エージェント構成用)

全20ツールはステートレスで、構造化JSONを返し、破壊的な操作は承認フラグの後ろにゲートされます。

フリートクエリ

ツール

説明

fleet_status

集約ビュー:フェーズ別ワークロード、GPU合計

fleet_gpus

ノードごとのGPU容量 / 割り当て済み / 空き + 消費者

fleet_pods

ポッドごとの詳細:ノード、ブートフェーズ、GPU、再起動回数

footprint_check

ドライラン:N個のGPUを収容できるノード — ブート前に呼び出し

health_check

サービスごとのエンドポイント readiness

sam_services

SAMメッシュサービスを検出

ワークロードライフサイクル

ツール

説明

workload_list

フェーズ、GPU、ピン状態を含むワークロードの一覧

workload_status

ポッドごとのブートフェーズを含む完全な詳細

workload_logs

ポッドごとの最近のコンテナログ

workload_scale

レプリカをスケール(0 = パーク;ピン留めされたワークロードはforce=trueでない限りスケールダウンを拒否)

workload_delete

ワークロードを削除 — approved=trueが必要

deploy_model

モデルワークロードを作成(冪等)

undeploy_model

モデルワークロードを削除

kill_pod

ハングしたポッドを強制削除 — approved=trueが必要;Deploymentが再作成します

model_pin / model_unpin

ピン留めはスケールダウンを防ぎます(モデルを常駐させる)

model_sleep / model_wake

サスペンド/ウェイク。FMAワークロード(sleepWake.enabled):llm-d高速モデルアクチュエーションによる秒単位のサスペンド、GPUは他のモデルに解放 — docs/fma.mdを参照。ネイティブワークロード:完全停止 / コールドブート

ブートオーケストレーション

ツール

説明

boot_model

デプロイ + オプションのサーバー側待機(wait_seconds);outcome: ready/failed/timeoutを返します

boot_status

ブート進行状況をポーリング:ポッドフェーズ + vLLMログマーカー(LoadingWeights → SizingKVCache → CapturingGraphs → Serving)+ パーセント

エージェントのブート待機パターン(LangGraphループ):

boot_model(model_id="qwen38-27b", image="vllm/vllm-openai:v0.18.0", gpu_count=2)
while True:
    s = boot_status(model_id="qwen38-27b")
    if s["ready"]:  break          # proceed to inference
    if s["failed"]: ...            # inspect s["pods"], kill_pod + retry
    time.sleep(10)                 # poll again

開発

uv venv && uv pip install -e ".[dev]"
pytest tests/ -q

ライセンス

MIT

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers