Skip to content

plugin-pod

Placement compiled-in (in-process)
Source github.com/opencharly/plugin-pod/candy/plugin-pod
Version 2026.201.0000
Candy plugin-pod

This plugin is listed in charly/charly.yml’s compiled_plugins:, so its providers are compiled into the charly binary and register in-process.

The reserved words this plugin serves:

  • config — command class
  • cp — command class
  • logs — command class
  • remove — command class
  • restart — command class
  • service — command class
  • shell — command class
  • start — command class
  • stop — command class
  • update — command class
  • volume — command class

The charly start/stop/restart/config/shell/service/logs/remove/cp/ volume pod-lifecycle CLI — a COMMAND-class charly plugin (github.com/opencharly/sdk), the CLI sibling of candy/plugin-deploy-pod (which keeps deploy:pod out-of-process, untouched — mirroring the candy/plugin-vm / candy/plugin-deploy-vm split). Each command word is INDEPENDENT (no shared parent). charly restart is pure sdk/kit + sdk/deploykit logic (deploykit.RestartPodService) with zero host coupling. The registry-bound commands (start/stop/…) forward their authored flags, as sdk/spec wire requests, to a per-command HostBuild seam — the host reconstructs the original core orchestration struct and runs its Run() logic VERBATIM (mirroring candy/plugin-fleet’s deploy-add/deploy-del seams), because the provider REGISTRY (ResolveTarget, the plugin loader) is a core Mechanism a plugin cannot import or hold. COMPILED-IN, it dispatches IN-PROC via Invoke(OpRun), so the handlers run in charly’s own process and inherit real stdio/TTY natively. Placement of THIS candy is independent of candy/plugin-deploy-pod’s placement.

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.

// plugin-pod's OWN self-contained CUE schema — the SINGLE SOURCE for this plugin's
// served declaration surface (there is no schema-less plugin: every plugin ships a
// non-empty schema over Describe).
//
// SELF-CONTAINED and PACKAGE-LESS: it references no base def and carries no package
// clause, so it compiles STANDALONE — the property the SDK's serve-side compile needs
// and the property that lets the host splice `base ++ plugin` at the load gate
// (registerPluginUnitSchema); a self-contained schema that will not splice is a LOUD
// load failure.
//
// NO GO CONSUMER: the plugin declares no typed `plugin_input` (its authored input is
// its pass-through CLI grammar), so this schema generates NO `params` package and has
// NO `cue exp gengotypes` artifact — it is the SERVED documentation/config surface,
// not a code-generation source.
//
// It DOCUMENTS the eleven independent top-level `command:` words this plugin serves.
#PodPlugin: {
// The independent top-level command words this plugin serves (no shared parent
// — each command word is its own top-level charly command). A command's args
// are pass-through CLI tokens (there is no typed plugin_input), so these words
// ARE this plugin's authored declaration surface.
commands: ["start", "stop", "restart", "logs", "remove", "shell", "service", "volume", "cp", "config", "update"]
// What the plugin does, in one line (the public-docs surface).
contract: string & !=""
}

See also the candy reference for this candy’s install surface.