When an executor callsDocumentation Index
Fetch the complete documentation index at: https://docs.novacula.io/llms.txt
Use this file to discover all available pages before exploring further.
syncExecutor it includes its capabilities — the full set of chain × network × role × client × version × nodeType combinations the binary it’s running knows how to operate. The control plane stores this on the Executor row and uses it as the source of truth for what the deploy wizard offers and what mutations it allows.
What’s in the payload
The capabilities blob (one per chain adapter compiled into the executor) looks like:storageClasses is populated by the Operator from a probe of the cluster’s StorageClass objects; the Agent leaves it empty.
When it’s reported
Capabilities are sent on everysyncExecutor call, not just the first one. That keeps the picture fresh after an executor upgrade adds support for a new chain, version, or feature. The control plane just overwrites the capabilities column on the Executor row.
How the control plane uses it
The deploy wizard
Deploy a node uses capabilities to constrain the next pick:- The user selects an executor.
- The chain dropdown shows only chains the executor declared.
- Picking a chain narrows the network list to ones the executor knows.
- Picking a network narrows the client + version list. Clients with declared
versionConstraintsfor the network (e.g. Hoodi requiresgeth >=1.15.0) are filtered accordingly.
Server-side guard
ThecreateNode and updateNode mutations re-check the spec against the executor’s current capabilities. If you somehow bypass the wizard (calling the GraphQL API directly), the mutation returns chain_not_supported_by_executor rather than writing a spec the executor can’t honor.
The override schema
Each chain adapter exposes aconfigOverrideSchema describing:
- Which config-file keys the user can override per process, and which keys are managed (data dir, RPC bindings, ports).
- Which CLI flags the user can pass per process, and which flags are managed.
Features
The executor also declares which protocol features it implements:sync— the basic spec polling loop. Mandatory.event— runtime event reporting viareportRuntimeEvents.lifecycle— pickup ofstart/stop/restartlifecycle actions.
Upgrading capabilities
The set of supported networks, clients, and versions is hard-coded into the executor binary’s chain adapters. To add support for a new release, upgrade the executor — the post-upgradesyncExecutor will declare the new versions, and the deploy wizard picks them up immediately.