Verentis

Overview

What is an execution engine

Execution engines are sandboxed code runtimes that handle a file type and run it on demand, on a schedule, or in response to changes.

An execution engine (kind: ExecutionEngine) is a sandboxed runtime that runs files. It claims a file type (for example .py), and when Verentis encounters such a file, the file becomes runnable — from the workspace UI, from a service, on a schedule, or in response to a file change.

Engines run in a Docker container (server-side, any language) or as a WebAssembly module (client-side in the browser for instant eligible runs). They aren't isolated black boxes: during a run they can read and write VFS files and call platform APIs through scoped tokens and a language SDK.

Anatomy of an engine

A manifest (*.engine.yaml)

Declares identity, the runtime(s), which file types it handles, execution modes, tools, resources and sandbox policy. Installing it adds the engine to a workspace.

A runtime image or module

A Docker image (runtimes.docker.image) and/or a WASM module (runtimes.wasm). This is the code that actually executes.

A language SDK

Inside the runtime, your code uses a Verentis SDK (e.g. Python) to access the run context, scoped token, and file read/write.

How a run happens

A run is requested

A user clicks Run on a matching file, a schedule fires, or a trigger matches a file change. Verentis resolves the engine for the file's type.

Verentis prepares a sandbox

It selects a runtime (Docker or WASM), mints a scoped token for the run, and assembles the run context (the target file, workspace, parameters).

Your engine executes

Your code reads its inputs, does its work, and produces output — structured data (stdout/JSON), files written back to the VFS, side-effects, or streamed logs.

Results are collected

Verentis captures the result and logs and returns them to the caller (or stores outputs in the VFS).

Execution modes

Engines can support several modes (declared in spec.execution-modes):

Request / response

Short-lived runs that return a result.

Long-running / streaming

Longer jobs that stream output (logs) as they run.

Scheduled

Cron-style runs on a schedule.

Event-driven

Triggered by file changes in the workspace.

What's next in this section