Engine manifest
Engine manifest reference
Field-by-field reference for the execution engine manifest (*.engine.yaml) spec.
This is the complete reference for an execution engine manifest. For the shared envelope (api-version,
kind, metadata), see Manifests: the contract.
A complete example
api-version: verentis.io/v1
kind: ExecutionEngine
metadata:
name: python
display-name: Python
description: Runs Python scripts in a sandboxed container
icon: file-code
version: 1.0.0
author: Verentis
labels:
language: python
spec:
runtimes:
docker:
image: ghcr.io/verentis/python-engine:1.0.0
pull-policy: IfNotPresent
wasm:
module: /applications/python/pyodide.wasm
runtime: pyodide
adapter: /applications/python/pyodide-runner.js
server-compatible: false
client-compatible: true
file-types:
- pattern: text/x-python
extensions: [".py"]
priority: 100
execution-modes:
- request-response
- long-running
- scheduled
- event-driven
tools:
- name: run-script
description: Execute a Python script and capture stdout
input-schema:
type: object
properties:
args: { type: array, items: { type: string } }
output-schema:
type: object
properties:
stdout: { type: string }
exitCode: { type: integer }
capabilities:
- file:read
- file:write
permissions:
- node.file.read
- node.node.create
resources:
cpu: "500m"
memory: "512Mi"
timeout: 120
max-concurrent: 4
storage: "1Gi"
sandbox:
network: none
allowed-hosts: []
read-only-root: true
no-new-privileges: true
priority: 10
spec
runtimesobjectHow the engine executes — docker and/or wasm. See Runtimes.
file-typesobject[]Extension→MIME rules that make files runnable by this engine. See file-types.
execution-modesstring[]Which modes the engine supports: request-response, long-running, scheduled, event-driven.
toolsobject[]Named operations the engine exposes, each with typed input/output schemas (MCP-style). See tools.
capabilitiesstring[]High-level intent flags (e.g. file:read, file:write). Back them with matching permissions.
permissionsstring[]The platform scopes the engine requires; these bound the run's scoped token.
resourcesobjectCPU/memory/timeout/concurrency limits. See resources.
sandboxobjectNetwork and filesystem isolation policy. See sandbox.
settingsobject[]Workspace settings and secrets provisioned into runs. See settings.
priorityintDefault resolution priority for the engine; per-file-type priorities take precedence.
runtimes
runtimes:
docker:
image: ghcr.io/you/engine:1.0.0
pull-policy: IfNotPresent
wasm:
module: /applications/you/module.wasm
runtime: wasmtime
adapter: /applications/you/runner.js
server-compatible: true
client-compatible: true
docker
imagestringThe container image to run.
pull-policystringWhen to pull the image (e.g. IfNotPresent, Always).
wasm
modulestringThe WASM module location (a VFS path or URL).
runtimestringThe WASM runtime (e.g. wasmtime, pyodide).
adapterstringThe engine-owned worker that implements the client warm/run protocol — a VFS path or origin URL. The
platform loads it generically, so your browser engine ships its own worker here (the symmetry with
docker.image).
server-compatibleboolCompatibility metadata retained in the manifest model. The current execution selector has no server-side WASM target; server execution always uses Docker.
client-compatibleboolWhether the WASM module can run client-side (in the browser).
file-types
file-types:
- pattern: text/x-python
extensions: [".py"]
priority: 100
patternstringThe MIME type assigned to matching files.
extensionsstring[]The extensions this rule matches, each with a leading dot.
priorityintHigher wins when several rules match the same extension.
tools
Each tool is a named, typed operation the platform (and AI agents) can discover and invoke:
namestringTool identifier.
descriptionstringWhat the tool does.
input-schemaobjectJSON Schema for the tool's input.
output-schemaobjectJSON Schema for the tool's output.
See Engine tools for the MCP-style interface.
resources
cpustringCPU request/limit (e.g. 500m).
memorystringMemory request/limit (e.g. 512Mi).
timeoutintMaximum run duration in seconds. Programs default to 300 seconds unless their ScriptRunresources.timeout requests a longer duration; that request cannot exceed this engine ceiling.
max-concurrentintMaximum concurrent runs of this engine.
storagestringScratch storage size (e.g. 1Gi).
sandbox
networkstringNetwork policy (e.g. none for no egress).
allowed-hostsstring[]Hosts the engine may reach when network egress is permitted.
read-only-rootboolMount the root filesystem read-only.
no-new-privilegesboolPrevent privilege escalation in the container.
settings
Workspace settings and secrets your engine requires. Declared entries are auto-registered as
workspace setting definitions — namespaced {metadata.name}.{key} — so admins can supply values in
the workspace settings UI (and are prompted during marketplace install). At run time the platform
provisions the configured values into the run: env-mapped entries become real container environment
variables, and the full map lands in context.json under settings (read it with
engine.settings.get("api-key") in the Python SDK).
spec:
settings:
- key: api-key # stored as {metadata.name}.api-key
env: MY_SERVICE_API_KEY # exposed as an environment variable
secret: true
required: true
display-name: Service API key
description: Used to call the upstream service.
- key: region
type: select
options: [eu, us]
default: eu
keystringShort key, stored namespaced as {metadata.name}.{key} in the workspace settings store.
envstringEnvironment variable name provisioned into runs (UPPER_SNAKE_CASE; the VERENTIS_ prefix is reserved).
secretboolSecret values are server-only: they are provisioned into Docker runs and never delivered to
browser (WASM) contexts — an engine declaring a secret always executes server-side. Defaults to false.
requiredboolRequired settings prompt during install, and an execution fails fast with a clear message when
no value is configured. Defaults to false.
display-namestringLabel shown in the workspace settings UI.
typestringValue data type: string (default), number, boolean or select.
defaultanyDefault value used when the workspace hasn't configured one. Not allowed for secrets.
optionsstring[]Allowed values when type is select.
Secrets force the Docker runtime
A wasm-only engine cannot declare secrets — there is no server runtime to provision them into, and
secrets never reach the browser. verentis validate reports this as an error.
First-party signature
First-party engines may carry a signature block verified against a configured Verentis public key. It
is an unforgeable trust signal that gates optimisations like warm pooling. Third-party engines run fully
sandboxed without it — you don't need a signature to publish.