Skip to content

Plugins

Plugins connect a flow to the parts of your application it needs to exercise. Each plugin has its own connection settings, commands and retained evidence. Mix them in one flow or pass values between dependent flows.

If this is your first flow, get started to install Reflow and sign in. App access still requires an approved team.

PluginUse and evidence
BrowserInteract with pages and retain viewport or CSS-scoped screenshots.
LocalBashRun host commands; retain output, exit code and files.
PostgreSQLCheck database rows or retain results of deliberate setup writes.
DockerUbuntuRun commands in an existing Ubuntu container; retain output and files.
MailboxKeep a named inbox and capture new email codes or links.

The public CLI includes all five plugins. Install them with reflow init, or select names such as reflow init Browser PostgreSQL. Ordinary initialization does not require Go or a private source checkout. Each plugin still needs its declared runtime, your application and any test data described on its page.

Choose an application collection and test storage location during onboarding. Use that collection when selecting the target below.

A flow declares an alias and the plugin it uses. The alias also selects the private connection unless you give it a different binding name:

providers:
site: {use: Browser, binding: preview}
db: PostgreSQL

Here site uses the connection named preview; db uses the connection named db. Save those connections in a private JSON file:

{
"preview": {"provider": "Browser", "configuration": {"browser": "chromium", "targetUrl": "http://localhost:3000"}},
"db": {
"provider": "PostgreSQL",
"configuration": {"connectionString": "postgresql://test_user:replace-me@127.0.0.1:5432/test_db"}
}
}
Terminal window
chmod 600 /absolute/path/to/bindings.json
reflow target http://localhost:3000 --group checkout --collection <collection-id> --bindings /absolute/path/to/bindings.json

Keep credentials and machine-specific paths in the private file. Flow aliases and plugin requirements are saved with the test, in Reflow or in Git. Each plugin page contains a complete pinned example and explains its required configuration.

A flow’s plugins frontmatter records each plugin’s exact sourceCommit and descriptorDigest. The first identifies the provider source; the second identifies its command schema. Copy the current values from a plugin page or the application’s Plugins view. A binding configures a connection; it does not select a plugin version.

When you update the CLI, run reflow init and explicitly refresh existing flow pins to match the selected release. The five bundled plugins share one source revision. Initialization installs plugins; it does not rewrite flow files. Use the installed list_plugins MCP tool to inspect command schemas.

Terminal window
reflow plan
reflow apply
reflow dashboard

Planning reads declarations and retained evidence without executing plugin steps. Apply runs the required work. Every invocation produces a terminal outcome; the plugin decides which state and artifacts it retains. Browser snapshot deliberately captures a screen, while Bash commands and SQL queries retain their output directly. See snapshots and review.

Only commands with declared scalar return values can be used in capture, such as Mailbox’s address or code commands. Other plugin snapshots remain reviewable evidence; they are not automatically flow variables. See values and outputs.

To add application-specific commands, read Writing plugins.