README.md 1.5 KB

spark-agent

The MCP side of the GB10 / ASUS GX10 Spark fleet, in two parts:

path what
agent/ The host agent image. One per node, privileged, serves no model.
vllm/ The status server that runs inside a vLLM model container.

Both register with mentat. mentat-serve merges every group's MCP into one endpoint, so clients reach every node and every model container through the router, and __group picks which one answers.

agent/

Holds the tools that need the host: every process, ptrace for py-spy, the GPU, logs, and the host's snapshots. The model containers then need no added capabilities.

cd agent && TAG=spark-agent:v6 ./build.sh
docker compose -f spark-agent.yaml up -d

It registers its MCP endpoint with the local mentatd as group agent-<hostname>. Its page on :8090 shows every node and every model, read from mentat-serve (MENTAT_ROUTER_URL).

vllm/

status-server.py serves a model container's stage page and its MCP tools. A recipe takes it as a submodule rather than a copy:

git submodule add https://github.com/mmastrac/spark-agent.git .submodules/spark-agent
ln -s .submodules/spark-agent/vllm vllm

and its Dockerfile copies vllm/status-server.py. Its knobs are environment variables, and an empty one counts as unset. Set SERVING_WHEN_READY=1 on a single-node engine with no self-test, so it reads as serving once the API answers. MODELS.md is the checklist every recipe is held to. BuildKit follows a symlink that stays inside the build context, so the image gets the file itself.