Technical contracts / private values

Connection values

RuntimePlan names the private fields a node may receive. Your process or a saved connection supplies their values.

Three names to keep straight

Suppose a node needs an OpenAI API credential. openai is the connection key, OPENAI_API_KEY is the environment field, and the token itself is the private value. RuntimePlan stores the first two. It never stores the token.

Use this page when you write a node's connections object. It also explains why Zeroshot rejects a missing or partial connection before a worker starts.

Declaration and value
Zeroshot
"connections": {"openai": ["OPENAI_API_KEY"]}

export OPENAI_API_KEY="..."
zeroshot run ...

How a node receives a value

For the declaration above, the CLI looks only for OPENAI_API_KEY. A value already present in the invoking process becomes an explicit openai connection for this run; if the process supplies nothing for that key, the target may use one saved connection.

DeclarationRuntimePlan groups the permitted environment fields under one connection key.
Explicit valuesThe CLI reads process values only for fields that RuntimePlan declares.
Saved connectionThe target may fill a wholly omitted key from its local or Cloud store.
Node environmentThe host clears the inherited process environment and sends only the node's declared subset.

A partial explicit connection fails. Zeroshot does not combine process values with saved fields to complete the key.

Limits

Connection key1–128 non-control characters.
Name[A-Za-z_][A-Za-z0-9_]* and at most 128 bytes.
Per-node connectionsAt most 64 keys and 64 unique names.
Per-run namesAt most 64 unique names across all nodes.
Value1–65,536 UTF-8 bytes; no NUL.
Run mapAt most 262,144 bytes across connection keys, names, and values.

Where values may come from

A complete set of process values for one connection key wins for that run. If the process supplies none of the fields, Cloud checks the user connection first and the organization connection second. Zeroshot rejects a partial explicit connection because it cannot mix part of a process value set with stored fields.

Where values never appear

Values never enter GraphSpec, RuntimePlan, profiles, observations, or debug output. They move through a private startup route when the host launches a worker; the protocol calls that route the bootstrap path. Values travel only through that route, never through OECP.