plugin-substrate
| Placement | compiled-in (in-process) |
| Source | github.com/opencharly/charly/candy/plugin-substrate |
| Version | 2026.196.0600 |
| Candy | plugin-substrate |
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:
android— kind classk8s— kind classlocal— kind classpod— kind classvm— kind class
What it does
Section titled “What it does”The 5 SUBSTRATE structural deploy KINDS — pod / vm / k8s / local / android — relocated into
ONE candy (C2-substrate; formerly the shared built-in standaloneKind). Each substrate kind is
BOTH a standalone TEMPLATE (a bare vm:/pod: block → the typed template map uf.Pod/uf.VM/…,
the PRIMARY VM authoring form) AND a DEPLOY (from:/image: cross-ref or resource members →
uf.Bundle). Its value is RICH + core-referencing (#Vm/#Deploy/#LibvirtDomain/…), so — unlike
group’s small self-contained #GroupInput — it cannot be re-decoded from op.Params nor validated
by a self-contained plugin schema. So the HOST pre-decodes the CANONICAL node via the core
loader (buildBundleNode / decodeNodeValue — the single decode source of truth), validates its
value against the KEPT #charly status fan-out; the deploy-cone-coupled enrichment + the vm/k8s/android collectors
stay host-side until K5.
See also the candy reference for this candy’s install surface.