Skip to main content
Native extensions use JSON with kind: "extension" and top-level runtime fields. Their source file is manifest.json; release tooling emits identical tabularium.json and <name>-universal.json assets after resolving the actual image digest.

Choose the validator

V2 requires protocolVersion, sdkVersion and dataProtocolVersion all set to 2. V1 keeps all three at 1. Never migrate by editing version numbers alone. Use Echo’s manifest as a complete native example and replace any authoring image placeholder through the release workflow.

Runtime fields

Keep the services object even when no host service is needed: use "services": { "required": [], "optional": [] }. Other unused array declarations can use []. The parser rejects unknown or privileged fields, duplicate keys, unsupported schema constructs, mutable images and invalid action/capability relationships. Runtime admission additionally checks installation state, project access, current grants, configuration and available host services.

Release verification

Validate with the parser that matches your pinned SDK revision. Registry authoring validation is useful but cannot substitute for semantic validation or host compatibility checks. The hosted registry now admits the complete v1 and v2 contracts. A self-hosted registry still needs the matching admission policy; source support alone does not configure it. The host bounds manifest and descriptor input to 256 KiB. Registry authoring/publication can impose a smaller 64 KiB bound. Publish final assets only after image resolution and preserve their exact bytes: JSON reformatting changes the signed hash. See independent releases for pinned-key verification, preserved v1 signatures and special provider bindings. Source contracts: native parser and release verification.