1
Install the plugin locally
From the plugin project, build and install it into the local plugin
directory:This places the binary, schema, and manifest under
~/.pel/formae/plugins/<name>/<version>/, where a local agent discovers it.
The agent loads plugins at startup, so restart your local agent after
installing so it picks the plugin up.Whenever you change plugin code, run make install again: the agent and the
conformance tests run against the installed binary, not your source tree.2
Reference the local schema
A published plugin’s schema is fetched from the hub with To round-trip existing resources, extract with local schema references. This
emits local file imports against the agent’s on-disk
package:// imports.
A plugin you have only installed locally is not on the hub yet, so point at
its on-disk schema instead. There are two entry points.For a new project, scaffold it with the plugin included as a local package.
The @local suffix tells formae to resolve the schema from --plugin-dir
(which defaults to ~/.pel/formae/plugins) rather than the hub:PklProject paths
instead of hub package:// URIs:--schema-location local requires the CLI and the agent to share a
filesystem, since the generated imports point at the agent’s local plugin
paths. It is the right choice for a single-host dev loop; use the default
remote once the plugin is published.3
Apply and iterate
Apply your forma against the local agent and verify the result:Iterate on the plugin, re-run
make install, restart the agent, and apply
again. Once the resource lifecycle behaves, run the conformance suite (see
Conformance tests) and then
publish.See also
- Scaffold a new plugin: create the project this guide installs.
- Build a plugin: local testing: the same loop inside the tutorial.
- Conformance tests: validate the plugin against the agent before publishing.

