Skip to main content
A package is the folder your nodes live in. It carries what they share and what the marketplace shows. package.yaml describes it, and there is one per package.
package.yaml
name, displayName and version are required. The rest earn their place below.

What the marketplace shows

Categories are ai, storage, ingest, communication, cloud, flow, media, search and productivity. This is a different list from the category on a node. A package category groups it in the marketplace; a node category describes the job that node does. Both are enums, and confusing them is a lint error rather than a silently wrong grouping. You do not list the nodes here. Every node.yaml under nodes/ is found on its own, so the package cannot disagree with what it actually contains.

allowedHosts: the hosts your nodes may call

Every host any node in this package reaches, and nothing else is permitted.
Deny by default. A call to a host not on this list is refused with the host named, and non-https is refused outright, so a key cannot travel in clear text. *.example.com matches exactly one level, so files.example.com passes and a.files.example.com does not. The list is checked when you lint and again at run time, after the URL has been assembled. That second check matters because a host can itself come from a Handlebars string, and only the finished URL can be judged. Keep it short and keep it honest. A list of two hosts is read in a second, and it is the promise anyone installing the package can check.

requires: what the platform must support

Every capability the package’s nodes use: each credential scheme, each transport, and each of paginate, chunk, poll and state a call names.
Lint refuses a node that uses a capability its package does not list, so the list is always a true account of what the package needs.

Sharing what nodes have in common

Two folders sit beside nodes/, and both exist so a value has one home.
example
package.yaml
credentials
exampleCredential.yaml
shared
endpoints.yaml
models.yaml
nodes
credentials/ describes each credential the package’s nodes ask for. shared/ holds fragments more than one node reuses, reached with $ref.
When the API moves an endpoint, one file changes rather than every node.

When it goes wrong

Next steps

Troubleshooting

When a node loads but does nothing.

package.yaml

Every field the package envelope takes, generated from the schema.