agent-orchestrator
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HF_TOKEN | No | Hugging Face read token for downloading gated models. | |
| GROQ_API_KEY | No | API key for the Groq backend example. | |
| RADIUS_SECRET | No | Shared secret for RAdIUS authentication. | |
| WORKSPACE_CWD | No | Working directory used as the default write allowlist. | |
| CURSOR_API_KEY | No | API key for the Cursor backend. | |
| GEMINI_API_KEY | No | API key for the Gemini backend (example apiKeyEnv name). | |
| LDAP_BIND_PASSWORD | No | Password for the LDAP service bind DN. | |
| HUGGING_FACE_HUB_TOKEN | No | Alternative Hugging Face token variable also honored. | |
| AGENT_ORCHESTRATOR_CONFIG | No | Path to the agents.config.yaml file. | |
| AGENT_ORCHESTRATOR_GUI_PORT | No | Port for the web GUI and HTTP MCP endpoint (default 8787). | 8787 |
| AGENT_ORCHESTRATOR_LDAP_URL | No | LDAPS URL for Active Directory authentication, e.g. ldaps://dc.example.com:636. | |
| AGENT_ORCHESTRATOR_MCP_AUTH | No | Authentication modes for the MCP endpoint (e.g. local-token,ldap or local-token,radius). | local-token |
| AGENT_ORCHESTRATOR_MCP_PORT | No | Port for the dedicated HTTP MCP server (default 8790). | 8790 |
| AGENT_ORCHESTRATOR_STATE_DIR | No | Directory for orchestrator state (default .orchestrator under repo). | |
| AGENT_ORCHESTRATOR_LDAP_FILTER | No | LDAP search filter, e.g. (sAMAccountName={username}). | |
| AGENT_ORCHESTRATOR_RADIUS_HOST | No | RADIUS server hostname for ClearPass or Cisco ISE. | |
| AGENT_ORCHESTRATOR_RADIUS_PORT | No | RADIUS server port (default 1812). | |
| AGENT_ORCHESTRATOR_LDAP_BASE_DN | No | LDAP base DN, e.g. DC=example,DC=com. | |
| AGENT_ORCHESTRATOR_LDAP_BIND_DN | No | LDAP bind DN template, e.g. CN={username},CN=Users,DC=example,DC=com. | |
| AGENT_ORCHESTRATOR_LDAP_ALLOWED_GROUPS | No | Comma-separated list of allowed AD groups for MCP access. | |
| AGENT_ORCHESTRATOR_RADIUS_ALLOWED_FILTER_IDS | No | Comma-separated list of allowed RAdIUS Filter-Ids. | |
| AGENT_ORCHESTRATOR_LDAP_TLS_REJECT_UNAUTHORIZED | No | Set to 0 to disable TLS certificate verification in lab environments. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_agentsA | List specialist agents, backends (Cursor + external), workflows, write-allowlist directories, default cwd, and local-runtime status (late-infer running vs idle, Cursor cloud / CURSOR_API_KEY). Call this before dispatching work so you pick a ready backend. Re-reads .env and GUI secrets on each call so newly added keys take effect without restarting Cursor. Local Cursor agents may only write inside allowed directories. Cloud Cursor agents cannot reach localhost late-infer; use local-and-cloud or cloud-with-local-draft workflows. |
| dispatchA | Send a task to one specialist. Prefer chat_send for natural language so the orchestrator auto-routes (including round-table debate). Cursor local backends can edit files only inside the write allowlist. |
| chat_sendA | Send a natural-language message through the same auto-router the GUI uses. Default pin is auto: hardware/vLLM/allowlist questions hit control tools; build/fix/review/plan with two or more ready backends (including Cursor) runs a round-table. pin=debate forces every ready local server plus ready Cursor/Gemini/cloud specialists to answer (Late MCP uses this). Implement/install stays plan-only until the user Approves (pendingApproval on the thread). Q&A and debate text are not blocked. pin=single or a backend id skips debate. File writes never go to vLLM. Assistant messages include speaker id, nickname, and a loopback logoUrl when a logo is set. |
| chat_approveA | Approve or reject pending implement/install actions from chat_send. Until Approve, Cursor stays plan-only (no writes, no Unity/apt/sudo). After Approve, the closer may write only inside the allowlisted cwd. Optional comment is stored on the thread. |
| chat_listA | List persisted GUI/MCP chat threads (id, title, agents, updatedAt). |
| chat_getA | Read one chat thread (messages, speakers, pending approval). Includes busy=true while debate/single is still running so clients can poll instead of blocking on chat_send wait. |
| chat_deleteB | Delete a persisted GUI/MCP chat thread by id. Late will wait for Approve. Does not delete files on disk outside the chat store. |
| run_workflowA | Run a named multi-agent pipeline. Built-in: ship-feature (planner → builder → reviewer), troubleshoot-pr (pr-triage → builder → reviewer), local-and-cloud (vLLM + Cursor cloud in parallel), cloud-with-local-draft (vLLM draft then cloud builder). Each sequential step sees prior output. Parallel recipes collect both results. Local file writes still require an allowed cwd. Cloud agents never call localhost vLLM. |
| follow_upA | Continue an existing specialist run. Cursor backends resume the same agent (full conversation + workspace). External backends continue with stored chat history. |
| get_runA | Fetch status and output for a dispatch or workflow step by run id. |
| list_runsA | List recent orchestrated runs, newest first. |
| list_allowed_dirsA | List directories local Cursor agents may write to, plus the default cwd. The workspace is granted by default until you add more. |
| add_allowed_dirA | Grant a directory for local Cursor agent file writes. The path is resolved with realpath (symlink escapes are rejected) and must already exist. |
| remove_allowed_dirA | Revoke a previously granted write directory. Local Cursor dispatch will fail if cwd is no longer allowed. |
| list_hardwareA | Summarize discrete GPUs for local model serving (NVIDIA, AMD, Intel, or CPU if none), with VRAM, primaryBackend, and any local vendor Docker images for serving. |
| list_local_modelsA | Every curated open-weight chat model for local vLLM (full catalog, not a short slice): fit flags for this GPU (weights + ~20% KV headroom), newest Hub id when a family has several names, downloaded under the allowlisted models dir, and every running loopback vLLM instance (backend id, port, image). |
| list_hub_modelsA | List Hugging Face Instruct/chat safetensors for Late infer on your computer (same searchable catalog as the GUI). Always includes well-known Qwen/Gemma/Mistral/Llama/Phi Instruct ids; Hub API rows merge on top when reachable. Each row includes estimated VRAM at max usage (weights plus KV cache). Optional query (Gemma, Qwen, …). No filesystem path. Does not download. Public Hub ids are listed without Cloud AI; HF_TOKEN from Settings is used when present so gated listings appear. Extra pull_late_infer / delete_late_infer still wait for Approve. |
| recommend_local_modelsA | Every catalog model for local vLLM, with fit flags for the GPUs on this computer (fits / needs tensor parallel / too big). Newest Hub id is marked when a family has several names (Qwen3.8 over Qwen2.5, Gemma 4 over Gemma 2/3, Llama 4/3.3 over 3.1). Nothing is hidden. Without an accelerator, only tiny CPU-feasible entries fit. |
| download_local_modelA | Download a catalog model (or Hugging Face org/name repo) into the allowlisted models directory (default .orchestrator/models). Large; requires an explicit model_id. Honors HF_TOKEN / HUGGING_FACE_HUB_TOKEN for gated repos. dry_run only checks the destination path. |
| start_vllmA | Launch a local OpenAI-compatible server bound to 127.0.0.1 only (never 0.0.0.0). Each catalog model gets its own Docker container, port in 8000–8099, backend id (vllm- from the catalog id, e.g. vllm-qwen25-7b-instruct), and specialist. Tensor-parallels across every GPU only when the catalog fit needs more than one card; models that fit a single GPU stay at --tensor-parallel-size 1. Pass use_all_gpus=false to pin to one GPU even when the model is larger. Does not stop other orchestrator vLLM containers unless replace=true (restarts this model only). On intel-xpu, if intel/llm-scaler-vllm or intel/vllm:*xpu is local, starts that container (API published as 127.0.0.1:port:8000). Model must already be downloaded. Waits until GET /v1/models is healthy, upserts that backend + specialist, and stores a dummy loopback Bearer in gitignored GUI secrets if needed (never copy a key from vLLM). Cloud agents still cannot reach this server. |
| stop_vllmA | Stop one orchestrator-managed vLLM instance (container or host process group). Pass model_id or backend_id to leave other running models up. If several are running and neither id is set, the call fails unless all=true. Does not stop unrelated Docker containers (including a leftover orch-vllm you did not start this way). |
| remove_vllmA | Stop one vLLM instance and unregister its backend and specialist from agents.config.yaml. Other running models stay up. Does not delete downloaded weights. |
| pull_late_inferA | Pull a Hugging Face model snapshot and compile it for late-infer on this computer. Detects the idle GPU first (NVIDIA / AMD / Intel) and compiles for that vendor — Intel is never treated as NVIDIA. Requires a Hub org/model id. Extra calls wait for Late Approve. The destination is fixed by late-infer; this tool accepts no cwd, allowlist, write directory, or filesystem path. |
| start_late_inferA | Start late-infer on this computer (OpenAI /v1 on 127.0.0.1:8010 only, never 0.0.0.0 or LAN). Spawns the late-infer binary (PATH or sibling Late target/release). First start loads Hugging Face safetensors (not packed). Extra calls wait for Late Approve — this is not auto-run. |
| stop_late_inferA | Stop the late-infer process this orchestrator started (owned pid only). Does not kill a late-infer Late started. |
| delete_late_inferA | Remove a compiled late-infer snapshot from this computer (compiled dir only, not the Hub cache). Requires a Hub org/model id and confirm=true. Extra calls wait for Late Approve. If that snapshot is serving on 127.0.0.1:8010, Stop then delete. Does not delete bin/late-infer. Accepts no cwd, allowlist, write directory, or filesystem path. |
| delete_local_modelA | Permanently delete a downloaded snapshot from the allowlisted models directory. Stops that model if it is running. Requires confirm=true. Does not unregister other backends. |
| late_infer_statusA | Probe loopback late-infer (default http://127.0.0.1:8010/v1). Does not start a process. Non-loopback URLs are rejected. |
| vllm_statusA | All orchestrator-managed vLLM instances (image, port, model, backend id, container) plus whether a serving stack is installed (including local Intel Docker images). |
| ollama_statusA | Probe a loopback Ollama daemon (default http://127.0.0.1:11434). Lists tags when it is running. Does not install Ollama. Non-loopback URLs are rejected. |
| llamacpp_statusA | Probe a loopback llama.cpp llama-server OpenAI API (default http://127.0.0.1:8080/v1). Does not download GGUF files or start a process. Non-loopback URLs are rejected. |
| start_ollamaA | Start Ollama serve on this computer (127.0.0.1:11434 only). Extra calls wait for Late Approve. Does not pull models. |
| stop_ollamaA | Stop the Ollama process this orchestrator started (owned pid only). |
| start_llamacppA | Start llama-server on this computer (127.0.0.1:8080 only) with an absolute .gguf path. Extra calls wait for Late Approve. |
| stop_llamacppA | Stop the llama-server process this orchestrator started (owned pid only). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| ship-feature | Plan, implement, and review a feature with the orchestrated agent team |
| troubleshoot-pr | Diagnose a PR, patch it, then review |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| agent-catalog | Current specialists, backends, workflows, and write allowlist |
TDQS
Scored across 35 tools
Backend-specific status/start/stop tools are clearly separated by backend, but list_local_models and recommend_local_models describe nearly identical catalog-plus-fit-flag surfaces, and dispatch/chat_send/run_workflow overlap enough that an agent must read carefully to choose. Detailed descriptions mitigate but do not fully eliminate the boundary problem.
Most tools follow a verb_noun pattern such as start_ollama, list_runs, and add_allowed_dir, but chat_list/chat_send/chat_get/chat_delete invert that pattern, and noun_status tools plus bare dispatch and follow_up break the convention. It remains readable, but the conventions are not consistently applied.
35 tools is past the 25+ threshold and the surface feels padded: four status tools, three heavily overlapping local-model list/recommend tools, and many start/stop pairs could be consolidated. The broad scope explains part of the count, but not all of it.
The set covers the main lifecycle well: start/stop/status for four backends, model download/delete, chat threads, runs/workflows, and write-allowlist management. Minor gaps remain, such as no Ollama model pull, no run cancellation, and no agent CRUD, but agents can work around them.