Manifests
Manifests: the contract
The shared manifest envelope used by every extension, and the conventions for naming, versioning and YAML keys.
A manifest is how you describe an extension to Verentis. It's a small YAML file using a Kubernetes-style envelope shared by every extension type.
The envelope
api-version: verentis.io/v1 # manifest schema version
kind: Application # Application | ExecutionEngine | Bundle
metadata: # identity & display
name: smart-editor
display-name: Smart Editor
description: A Monaco-powered editor for text and structured files
icon: file-code
version: 0.1.0
author: Verentis
labels:
category: editor
spec: # kind-specific configuration
# ...
marketplace: # optional catalog presentation
# ...
packaging: # optional .vpkg build configuration
# ...
api-versionstringThe manifest schema version. Use verentis.io/v1.
kindstringThe package type: Application, ExecutionEngine, or Bundle. Determines how spec is interpreted
and how an installed package is registered.
metadataobjectIdentity and display information — see below.
specobjectKind-specific configuration. Applications and execution engines use it; a plain Bundle may omit it.
See the
app manifest and engine manifest
references.
marketplaceobjectOptional catalog presentation: logo, hero, gallery images, README, changelog, and supporting assets. See Packaging.
packagingobjectOptional .vpkg build configuration such as publisher, payload globs, exclusions, and encryption
policy. See Packaging.
metadata
namestringStable machine identifier (kebab-case). Used for resolution, registration and updates. Don't change it across versions.
display-namestringHuman-friendly name shown in the UI and marketplace.
descriptionstringA short summary of what the extension does.
iconstringAn icon name used in listings.
versionstringSemantic version of the extension (e.g. 1.2.0). Drives updates and marketplace listings.
authorstringThe publisher.
labelsmap<string,string>Free-form key/value labels for categorisation (e.g. category: editor).
annotationsmap<string,string>Machine-readable extension metadata used by optional platform integrations.
YAML key conventions
Manifest keys are hyphenated (display-name, mime-types, file-types, json-schema,
api-version, pull-policy, allow-scripts). Lists use standard YAML sequences. Booleans are true /
false.
Names are identity
metadata.name is the extension's permanent identity. Changing it is treated as a different
extension, not an update. Bump metadata.version to ship changes; keep name stable.
One registry, many kinds
Any YAML file with a valid kind + metadata.name envelope is treated as a manifest and registered.
Apps and engines simply differ in their kind and spec. This is what lets the platform discover,
register and govern every extension type uniformly.