Skip to content

plugin-builder-cargo

Placement runtime (out-of-process over gRPC)
Source github.com/opencharly/charly/candy/plugin-builder-cargo
Version 2026.182.0300
Candy plugin-builder-cargo

This plugin is not listed in charly/charly.yml’s compiled_plugins:. It is not part of the shipped binary: charly builds and loads it out-of-process over gRPC when a plan references one of its words (the coexist path).

The reserved words this plugin serves:

  • cargo — builder class

OUT-OF-TREE charly plugin serving the cargo builder’s BUILD-TIME step (OpResolve) + its DEPLOY-TIME IR shim. A standalone Go module dispatching to the shared sdk/kit logic (R3): OpResolve (→ kit.BuilderResolve — cargo is an INLINE builder, so the InlineFragment RUN cargo install --path /ctx, C10, no longer the core embedded vocabulary), OpCollectContext (cargo records no stage context — binaries are read from Cargo.toml [[bin]] host-side at install time) and OpReverse (cargo → cargo-uninstall when binaries are known). The deploy-time pair runs in the host build PRE-PASS, BEFORE the pure BuildDeployPlan compile, so the compiler never dials a plugin. Selection stays DETECTION (a candy’s Cargo.toml), never an authored external_builder:.

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.

// Self-contained input schema for the builder:cargo capability — references no base def, so it
// compiles standalone (the SDK's serve-side compile). A builder authors no plugin_input (it is
// TRIGGERED by detection — a candy's Cargo.toml — never by an authored field), so this def carries
// no fields; it ships so the schema travels with the plugin (non-empty, base ++ plugin splice).
#CargoBuilderInput: {
}

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