Skip to content

plugin-example-dispatch

Placement runtime (out-of-process over gRPC)
Source github.com/opencharly/charly/candy/plugin-example-dispatch
Version 2026.181.0001
Candy plugin-example-dispatch

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:

  • exampledispatch — verb class
  • exampledispatchpeer — verb class

Reference OUT-OF-TREE plugin proving the F10 reverse legs: during its own Invoke (run with a reverse channel) it calls BACK to the host to (1) INVOKE ANOTHER plugin’s verb (sdk.Executor.InvokeProvider — plugin↔plugin via the host broker) and (2) request a HOST-BUILD (sdk.Executor.HostBuild — the host runs a registered host-builder). It exercises the nested-broker round-trip generically — the generalization of the RunHostStep ExternalPlugin arm to any class/op + a standalone build request. The machinery M13/M14/M16/M17 reuse.

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/exampledispatch.cue — the SELF-CONTAINED CUE def for the F10 dispatch demo verb's input.
#ExampledispatchInput: {
target_word?: string // a verb word the host resolves + invokes on this plugin's behalf (plugin↔plugin)
build_candy_dir?: string // a candy dir the host builds a plugin binary for (host-build)
build_name?: string
// peer_cmd, when set, is forwarded to exampledispatchpeer, which RunCaptures it over
// whatever executor the host threads onto it (S1 proof — the venue-scoped-executor-session
// seam: the executor is this plugin's own by default, or a fresh one the host materialized
// from venue_descriptor below).
peer_cmd?: string
// venue_descriptor, when set, rides InvokeProviderOpts on the InvokeProvider call to
// target_word — the host re-materializes a FRESH executor from it (mirrors
// spec.VenueDescriptor) instead of forwarding this plugin's own executor.
venue_descriptor?: {
kind: "shell" | "ssh"
user?: string
host?: string
port?: int
args?: [...string]
connect_timeout?: int
}
}

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