The official plugin and template registry for the GoCodeAlone/workflow engine.
This registry catalogs all built-in plugins, community extensions, and reusable templates that can be used with the workflow engine. It serves as the source of truth for the wfctl CLI's marketplace and wfctl publish command.
- What is this?
- Browsing Plugins
- Plugin Tiers
- Built-in Plugins
- Templates
- Schema
- Submitting a Community Plugin
- Plugin Manifest Format
The workflow engine is built around a plugin system. Every capability — HTTP servers, messaging brokers, state machines, AI steps, CI/CD pipelines — is provided by a plugin. This registry tracks:
- Plugins: Packages that extend the engine with new module types, pipeline steps, triggers, and workflow handlers
- Templates: Starter configurations for common workflow patterns
The registry is consumed by:
wfctl marketplace— browse and search available pluginswfctl publish— submit your plugin to the registry- The workflow UI Marketplace page
Plugins are organized under plugins/<name>/manifest.json. Each manifest describes the plugin's capabilities, version, tier, and source location.
To search via CLI:
wfctl marketplace search http
wfctl marketplace info httpTo browse manually, see the plugins/ directory.
| Tier | Description |
|---|---|
| core | Maintained by GoCodeAlone, shipped with the engine, guaranteed compatibility |
| community | Third-party plugins submitted via PR, reviewed by maintainers |
| premium | Commercial plugins with additional licensing requirements |
All plugins in this registry must pass manifest schema validation before merging.
These plugins ship with the workflow engine and are always available:
| Plugin | Description | Tier |
|---|---|---|
| http | HTTP server, router, middleware, proxy, static files | core |
| messaging | In-memory broker, EventBus, NATS, Kafka, Slack, webhooks | core |
| statemachine | State machine engine, tracker, connector | core |
| scheduler | Cron-based job scheduling | core |
| observability | Metrics, health checks, tracing, OpenAPI | core |
| storage | S3, GCS, local, SQLite, SQL databases | core |
| pipelinesteps | Generic pipeline steps (validate, transform, jq, db, etc.) | core |
| auth | JWT auth, user store, auth middleware wiring | core |
| api | REST handlers, CQRS, API gateway, data transformer | core |
| featureflags | Feature flag service and pipeline steps | core |
| platform | Infrastructure-as-code provider, resource, context modules | core |
| modularcompat | CrisisTextLine/modular framework compatibility (scheduler, cache) | core |
| secrets | HashiCorp Vault and AWS Secrets Manager | core |
| cicd | CI/CD steps: shell, Docker, scan, deploy, gate | core |
| integration | Integration workflow handler for multi-system connectors | core |
| ai | AI steps (complete, classify, extract), dynamic components, sub-workflows | core |
These plugins run as separate subprocesses via the go-plugin IPC framework:
| Plugin | Description | Tier |
|---|---|---|
| bento | Stream processing via Bento — 100+ connectors, Bloblang transforms, at-least-once delivery | core |
| ratchet | Autonomous AI agent orchestration — agent coordination, task management, MCP integration, secrets/vault, SSE, and intelligent pipeline execution (13 step types, 15 wiring hooks) | community |
Starter configurations for common workflow patterns:
| Template | Description |
|---|---|
| api-service | HTTP API with auth, SQLite, and pipelines |
| event-processor | Event-driven processor with messaging and pipelines |
| full-stack | Full application with HTTP, auth, state machine, messaging, scheduler, and observability |
| plugin | Scaffold for building a new engine plugin |
| ui-plugin | Scaffold for a React UI extension |
| stream-processor | Stream processing pipeline using the Bento plugin |
Initialize a project from a template:
wfctl init my-project --template api-serviceAll plugin manifests must conform to the registry schema. The schema is a JSON Schema (draft 2020-12) defining required fields, enums for type and tier, and the structure of capabilities.
Validate a manifest locally:
# Validate a single manifest
npx ajv-cli validate --spec=draft2020 -s schema/registry-schema.json -d plugins/my-plugin/manifest.json
# Validate all manifests at once
bash scripts/validate-manifests.sh
# Validate template plugin references
bash scripts/validate-templates.shInstall the provided pre-commit hook to catch validation errors before they reach CI:
cp scripts/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commitThe hook runs scripts/validate-manifests.sh when plugins/*/manifest.json or schema/registry-schema.json are staged, and scripts/validate-templates.sh when templates/*.yaml files are staged.
Every pull request and push to main triggers the Validate Registry workflow, which:
- Validates all
plugins/*/manifest.jsonfiles againstschema/registry-schema.json(JSON Schema draft 2020-12 viaajv-cli) - Checks that every plugin referenced in
templates/*.yamlhas a corresponding manifest
PRs that fail validation cannot be merged.
- Fork this repository
- Create a directory under
plugins/<your-plugin-name>/ - Add a
manifest.jsonthat conforms to the registry schema - Validate your manifest against the schema
- Open a PR with a description of your plugin
name,version,author,description,type,tier,licenseare requiredtypemust be"external"for community plugins (only GoCodeAlone sets"builtin")tiermust be"community"for third-party submissionssourceshould point to the public repository where the plugin livescapabilities.moduleTypes,stepTypes,triggerTypes,workflowHandlersmust accurately reflect what the plugin registers
PRs are reviewed by maintainers for:
- Schema validity
- Accurate capability declarations
- Source repo accessibility
- License compatibility
{
"name": "my-plugin",
"version": "1.0.0",
"author": "your-github-username",
"description": "What this plugin provides",
"source": "github.com/yourorg/my-plugin",
"path": ".",
"type": "external",
"tier": "community",
"license": "MIT",
"minEngineVersion": "0.1.0",
"keywords": ["tag1", "tag2"],
"capabilities": {
"moduleTypes": ["mymodule.type"],
"stepTypes": ["step.my_step"],
"triggerTypes": [],
"workflowHandlers": []
}
}Full schema documentation: schema/registry-schema.json
MIT — see LICENSE