formae plugin init.
Initialize the plugin
Runformae plugin init to start the interactive setup:
-
Plugin name: a short identifier for your plugin (lowercase, letters/numbers/hyphens). We’ll use
sftp. -
Namespace: the prefix for your resource types (uppercase). We’ll use
SFTP, which means our resources will have types likeSFTP::Files::File. -
Description: a brief summary of what the plugin does. For this tutorial:
SFTP file management plugin for formae. -
Category: pick the closed category that best describes your plugin, one of
cloud,auth,config,observability,cicd,network,data,security,containers, orother. It mirrors the hub’s catalog. For the SFTP plugin we’ll usedata. - Author: your name or organization. Enter whatever identifies you as the plugin developer.
-
Module path: the Go module path for your plugin (e.g.,
github.com/your-org/formae-plugin-sftp). This is used ingo.modand import statements throughout the generated code. -
License: choose
Apache-2.0,BSD-3-Clause,MIT, orMPL-2.0(the licenses the hub accepts), orOtherto provide a custom SPDX identifier. The command generates the matching LICENSE file automatically, and a plugin licensed asOtherbuilds and runs locally but is not publishable to the hub. -
Target directory: where to create the plugin project. Defaults to
./<plugin-name>, so we’ll get./sftp.
Non-interactive mode
For automation, CI pipelines, or LLM-assisted workflows, you can runformae plugin init non-interactively by providing all required values as flags:
--no-input flag disables interactive prompts and requires all mandatory flags to be provided. Run formae plugin init --help for the complete list of flags.
Project structure
Makefile
The template includes a Makefile with common development tasks:
The
install target copies the binary, schema files, and manifest to the local plugin directory where the formae agent can discover it.
Key files
formae-plugin.pkl
The manifest contains the information the formae agent needs to know about your plugin:main.go
The entry point starts the SDK and should never be modified:RunWithManifest takes care of all plugin initialization: reading the manifest, loading schemas, and handling communication with the formae agent. Your job is to implement the Plugin struct; the SDK handles everything else.
sftp.go
The template provides a stub implementation with all required methods:go.mod
The module imports the formae plugin SDK and conformance test packages:Verify the setup
Build the plugin to verify everything compiles:bin/sftp.
What’s next
The template includes an example resource schema to get you started. In the next section, we’ll replace it with our ownFile resource schema that defines the properties for managing files on an SFTP server.
Next: 02 - Resource Schema - Define the File resource in PKL

