Configuration Reference

This page collects every plugin-related option in one place. Each field is annotated with its default and effect.

Configuration Reference

Full config.yaml reference for the plugin system:

plugins:
  # Enable plugin loading (default: false)
  # When false, no plugins are loaded and no WASM overhead is incurred
  enabled: true

  # Path to plugins directory (default: ./plugins)
  # Each subdirectory should contain plugin.toml and plugin.wasm
  directory: ./plugins

  # Maximum WASM instructions per plugin call (default: none = unlimited)
  # Prevents runaway plugins from blocking the server
  fuel_limit: 1000000

  # Wall-clock budget per plugin call, in milliseconds (default: 50)
  # Measures time the plugin spends *executing*: a plugin waiting on a host
  # call -- sending mail, writing to the data store -- is not charged for the
  # wait, so a slow mail relay cannot exhaust it. This is not the same key as
  # diagrams.plugins.timeout_ms, which bounds a single diagram render.
  render_budget_ms: 50

  # Wasmtime compilation cache directory (default: none = disabled)
  # Caches compiled modules on disk for faster startup
  compilation_cache: .cache/plugins

  # AOT pre-compile plugins at load time (default: false)
  # Trades slower startup for faster first-call latency
  precompile: true

  # WASI filesystem paths for plugins that declare requires_fs (default: none)
  # Keys are virtual paths inside the component; values are host paths
  # Prefix host paths with "ro:" for read-only access
  allowed_paths:
    /content: "ro:./content"
    /media: "ro:./media"
    /data: ./data

The registry URL moved. plugins.registry_url no longer exists. Plugins, themes, and starter templates are all resolved from one registry, so its location lives in a top-level hub: section instead — see Hub configuration below.

Hub configuration

accent plugin install reads the ecosystem hub. One section serves all three artifact kinds, because they come from one registry:

hub:
  # Registry base URL (default shown). This is the raw-content root of the
  # registry repository's default branch.
  registry_url: https://raw.githubusercontent.com/AccentCMS/hub-registry/main

  # Trust anchor for registry signatures. Leave unset for the official
  # registry: the matching public key is compiled into the binary.
  registry_public_key: null

  # Licence keys for commercial artifacts, keyed by "<kind>:<name>".
  licenses:
    "plugin:acme-forms": "eyJhbGciOiJFZERTQSJ9..."
FieldTypeDefaultDescription
hub.registry_urlstring(built-in)Registry base URL for all three artifact kinds
hub.registry_public_keystringEd25519 SPKI public key for a self-hosted registry
hub.licensesmap{}Vendor licence keys, keyed by <kind>:<name>

Signatures are always verified

Every document the registry publishes — the discovery index, each version manifest, and each author record — is signed, and accent verifies all of them before acting on anything they say. There is no way to turn this off.

The key is chosen, not the checking. Point registry_url at your own registry and you must also set registry_public_key to the key that registry signs with; otherwise accent stops with a configuration error naming the missing setting rather than failing every install with a signature error.

A binary you compiled yourself carries the repository’s development hub key and cannot verify documents signed by the production key. This is the same property the licence key has. Use a release binary against the official registry.

Installing from a local file

Some vendors deliver an artifact by e-mail or from their own download page rather than publishing a public URL. Install one with --from:

accent plugin install acme-forms --from ./acme-forms-1.2.0.tar.gz

The name is required and is not read from the archive: the file must contain a single top-level acme-forms/ directory or it is rejected. If the registry lists the plugin and publishes a checksum, the local file is verified against it. If it cannot be verified — an unlisted plugin, or a vendor that publishes no checksum — the install stops and tells you so; pass --allow-unverified to proceed anyway.

The public registry (github.com/AccentCMS/hub-registry) is live but does not list artifacts yet.

The fuel_limit, render_budget_ms, compilation_cache, precompile, and allowed_paths options are explained in detail in the Security chapter.

Next Steps