Skip to main content
Glama

agentctl

K8s-нативный оператор рабочих нагрузок агентов/моделей с регистрацией в SAM mesh и 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 (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

Из исходников (разработка)

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

Готовность конечных точек для каждого сервиса

sam_services

Обнаружение сервисов SAM mesh

Жизненный цикл рабочих нагрузок

Инструмент

Описание

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 fast-model-actuation, 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