plugin-agentteams
| Placement | compiled-in (in-process) |
| Source | builtin |
| Version | 2026.224.0600 |
| Candy | plugin-agentteams |
This plugin is listed in charly/charly.yml’s compiled_plugins:, so its providers are compiled into the charly binary and register in-process.
Providers
Section titled “Providers”The reserved words this plugin serves:
agentteams— command classagentteams— verb class
What it does
Section titled “What it does”The charly agentteams management CLI for the AgentTeams controller
REST API PLUS the declarative agentteams: check verb — a COMPILED-IN
command:agentteams + verb:agentteams plugin. charly agentteams status reports controller health + manager/worker/team/human counts;
worker list|get|create|update|apply|delete manages Worker CRs (apply
incl. ZIP/package import); team apply|list|get|delete and human apply|list|get|delete manage Teams and Humans; apply -f <file>
applies declarative YAML (create-or-update per kind); config shows
the resolved controller endpoint and token source. The agentteams:
check verb is the declarative controller-probe counterpart: authored
as a check: step (agentteams: status, manager-running,
worker-running, worker-list), it resolves the controller’s
in-venue :8090 to a host-routable address over the reverse channel,
pulls the admin SA token from the venue, and probes with the SAME
REST client the command uses (R3 — one surface covers the CLI and
every bed). A plain net/http REST client — no upstream agt binary, no
SDK. Endpoint from AGENTTEAMS_CONTROLLER_URL (default
http://127.0.0.1:8090); token from AGENTTEAMS_AUTH_TOKEN env or
AGENTTEAMS_AUTH_TOKEN_FILE file (the upstream runtime contract).
Parameter schema
Section titled “Parameter schema”The CUE schema below is the authoritative grammar for this plugin’s input. It is the same single source that generates the plugin’s Go parameter types and answers the runtime Describe RPC, so this page cannot disagree with either.
schema/agentteams.cue
Section titled “schema/agentteams.cue”// This compiled-in plugin's OWN CUE schema, served over the Describe channel — the// typed plugin_input for the `agentteams` controller-probe check verb. It is the// SINGLE SOURCE for this plugin's verb params, used two ways (the same contract// core `spec` and the http plugin use)://// 1. GENERATE the Go param struct — `cue exp gengotypes` (driven by task cue:gen,// which wraps this with `package params` + `@go(params)`) emits// ../params/cue_types_gen.go, so the provider decodes plugin_input into a TYPED// struct, never a hand-parsed map.// 2. VALIDATE authored input AT RUNTIME — the plugin serves this source over the// Describe channel; the host splices it onto the base (base ++ plugin) and// validates every authored `agentteams:` step's plugin_input against// #AgentTeamsInput.//// The verb is HOST-BASED (the mcp pattern): the provider resolves the controller's// in-venue :8090 to a host-routable address via the reverse channel// (cc.ResolveEndpoint — a published port on the pod substrate, a live ssh -L// forward on the vm substrate), pulls the admin SA token from the venue// (/var/run/agentteams/cli-token) over the executor, and probes the controller// with the SAME apiClient the `charly agentteams` command plugin uses (R3 — one// REST surface covers the CLI and every bed). Only the genuinely SHARED step// modifiers (timeout, the exit_status/stdout/stderr matchers, context, …) stay on// core #Op, read off the step Op by the provider.//// SELF-CONTAINED: it references NO base def, so it compiles standalone (the SDK's// serve-side check + gengotypes) AND splices onto the base (base ++ plugin is a// def-name collision check, not a base-reference resolver).
// #AgentTeamsInput is the `agentteams` verb's plugin_input: the method name plus// its method-exclusive modifiers.#AgentTeamsInput: { // method — the agentteams verb method name (the verb's PRIMARY input field, so // `agentteams: status` desugars to {method: "status"}). method: ("status" | "manager-running" | "worker-running" | "worker-list") @go(Method,type=string) // name — the worker/manager name. worker-running's target (default "bed-worker", // matching the beds' created Worker CR); manager-running's optional specific // manager (default: any manager reaching Running). name?: string}See also the candy reference for this candy’s install surface.