Skip to main content

Vigilo.toml Reference

Vigilo.toml tells vigilo how to prepare and publish an evaluator WebAssembly component. It lives beside the evaluator crate Cargo.toml.


File Location

Place Vigilo.toml in the evaluator crate directory:

my-evaluator/
Cargo.toml
Vigilo.toml
src/
lib.rs

Complete Example

[package]
manifest = "Cargo.toml"
description = "Example evaluator"
tags = ["example", "quality"]

[package.metadata]
owner = "evaluators-team"
tier = "example"

[wit]
path = "../../wit/evaluator.wit"
world = "evaluator-world"
package = "vigilo:evaluator"
version = "0.1.0"
interface = "evaluator"
strict = true

[profile.dev]
wasm = "wasm32-wasip2/debug/my_evaluator.wasm"

[profile.release]
wasm = "wasm32-wasip2/release/my_evaluator.wasm"

[package]

manifest

Required. Path to the Cargo manifest file, relative to Vigilo.toml.

[package]
manifest = "Cargo.toml"

Current publishing code supports Cargo.toml. vigilo reads evaluator name, version, Cargo description, Cargo keywords, and optional [package.metadata.vigilo] from this manifest.

description

Optional. Human-readable evaluator description stored in the registry. When present, this overrides the Cargo package description.

[package]
description = "Basic English-only lexicon sentiment evaluator"

tags

Optional. Searchable evaluator tags stored in the registry. When present, these override Cargo package keywords.

[package]
tags = ["sentiment", "classification", "example"]

[package.metadata]

Optional. Extra evaluator metadata stored as JSON in the registry. When present, this overrides [package.metadata.vigilo] from Cargo.toml.

[package.metadata]
owner = "evaluators-team"
tier = "example"

[wit]

Optional but recommended. Declares the WIT contract implemented by the evaluator.

[wit]
path = "../../wit/evaluator.wit"
world = "evaluator-world"
package = "vigilo:evaluator"
version = "0.1.0"
interface = "evaluator"
strict = true

Fields:

  • path: path to the WIT file, relative to Vigilo.toml
  • world: expected WIT world name
  • package: expected WIT package name
  • version: expected WIT package version
  • interface: expected exported evaluator interface
  • strict: when true, publish fails if the WIT file does not match these values

If [wit] is omitted, the evaluator can still be prepared, but registry interface metadata is not populated from the manifest.


[profile.<name>]

Required for every build profile you want to publish. Each profile maps a name to a compiled wasm artifact path.

[profile.release]
wasm = "wasm32-wasip2/release/my_evaluator.wasm"

The wasm path is joined to Cargo's target directory for the evaluator package. With the default Cargo target directory, the path above resolves to:

target/wasm32-wasip2/release/my_evaluator.wasm

Common profiles:

ProfilePublish selection
devdefault when no profile flag is provided
releaseselected by vigilo evaluators publish <path> --release
customselected by vigilo evaluators publish <path> --profile <name>

Registry Identity

Published evaluators use the strict identifier format:

<namespace>/<name>:<version>

Current CLI publishing inserts into the built-in vigilo namespace and reads name and version from Cargo.toml.

The selected profile chooses which artifact path to publish; it is not part of the evaluator identifier. Publishing changed content under an existing identifier is rejected. Bump Cargo.toml version before publishing changed evaluator behavior or contract shape.


Stale Build Detection

vigilo compares the modification time of the selected wasm artifact against Cargo.toml. If the manifest was modified more recently than the wasm, publish fails with a stale-build error.

Rebuild the selected profile before publishing:

cargo build --manifest-path evaluators/my-evaluator/Cargo.toml --target wasm32-wasip2 --release
vigilo evaluators publish ./evaluators/my-evaluator --release