> ## Documentation Index
> Fetch the complete documentation index at: https://docs.formae.io/llms.txt
> Use this file to discover all available pages before exploring further.

# formae plugin

> Search, install, update, and scaffold formae plugins. Reference for formae plugin and its subcommands.

Manage [plugins](/documentation/concepts/plugin) on this host: search what is
available, install and update plugins, inspect them, and scaffold a new one.

```bash theme={"languages":{"custom":["/languages/pkl.json"]}}
formae plugin <info|init|install|list|search|uninstall|update> [flags]
```

### Examples

```bash theme={"languages":{"custom":["/languages/pkl.json"]}}
formae plugin list
formae plugin search aws
formae plugin install aws
formae plugin init
```

<Note>
  On a stock install the plugin store lives at a path only root can write to, so
  some of these commands may prompt for sudo to read or refresh their metadata. If
  the formae agent runs on this host, restart it after installing, updating, or
  uninstalling plugins so the change takes effect.
</Note>

## formae plugin list

List the plugins installed on this host with their version.

```bash theme={"languages":{"custom":["/languages/pkl.json"]}}
formae plugin list [flags]
```

### Flags

| Flag                                 | Default | Description                              |
| ------------------------------------ | ------- | ---------------------------------------- |
| `--output-consumer <human\|machine>` | `human` | Consumer of the command result.          |
| `--output-schema <json\|yaml>`       | `json`  | The schema to use for the result output. |

## formae plugin search

Search the plugins available for installation. With no argument, every available
plugin is listed. With a query, only plugins whose name, summary, or description
matches are returned.

```bash theme={"languages":{"custom":["/languages/pkl.json"]}}
formae plugin search [<query>] [flags]
```

### Flags

| Flag                                 | Default | Description                              |
| ------------------------------------ | ------- | ---------------------------------------- |
| `--category <category>`              |         | Filter by category.                      |
| `--type <resource\|auth>`            |         | Filter by plugin type.                   |
| `--channel <channel>`                |         | Search a different channel.              |
| `--output-consumer <human\|machine>` | `human` | Consumer of the command result.          |
| `--output-schema <json\|yaml>`       | `json`  | The schema to use for the result output. |

## formae plugin info

Show the description, version, and metadata for a single plugin from the
configured plugin repositories.

```bash theme={"languages":{"custom":["/languages/pkl.json"]}}
formae plugin info <name> [flags]
```

### Flags

| Flag                                 | Default | Description                              |
| ------------------------------------ | ------- | ---------------------------------------- |
| `--channel <channel>`                |         | Query a different channel.               |
| `--output-consumer <human\|machine>` | `human` | Consumer of the command result.          |
| `--output-schema <json\|yaml>`       | `json`  | The schema to use for the result output. |

## formae plugin install

Install one or more plugins on this host. Each argument is a plugin name,
optionally with a version, for example `aws` or `aws@1.2.3`.

```bash theme={"languages":{"custom":["/languages/pkl.json"]}}
formae plugin install <name>[@<version>]... [flags]
```

### Flags

| Flag                                 | Default | Description                              |
| ------------------------------------ | ------- | ---------------------------------------- |
| `--channel <channel>`                |         | Install from a different channel.        |
| `--output-consumer <human\|machine>` | `human` | Consumer of the command result.          |
| `--output-schema <json\|yaml>`       | `json`  | The schema to use for the result output. |

## formae plugin update

Update installed plugins on this host to the latest available version. With no
argument, every installed plugin is considered for update. Otherwise only the
named plugins are updated.

```bash theme={"languages":{"custom":["/languages/pkl.json"]}}
formae plugin update [<name>[@<version>]...] [flags]
```

### Flags

| Flag                                 | Default | Description                              |
| ------------------------------------ | ------- | ---------------------------------------- |
| `--channel <channel>`                |         | Update from a different channel.         |
| `--output-consumer <human\|machine>` | `human` | Consumer of the command result.          |
| `--output-schema <json\|yaml>`       | `json`  | The schema to use for the result output. |

## formae plugin uninstall

Remove one or more plugins from this host. Each argument is a plugin name.

```bash theme={"languages":{"custom":["/languages/pkl.json"]}}
formae plugin uninstall <name>... [flags]
```

### Flags

| Flag                                 | Default | Description                              |
| ------------------------------------ | ------- | ---------------------------------------- |
| `--output-consumer <human\|machine>` | `human` | Consumer of the command result.          |
| `--output-schema <json\|yaml>`       | `json`  | The schema to use for the result output. |

## formae plugin init

Initialize a new formae plugin from the GitHub plugin template. The command
prompts interactively for plugin configuration, clones the template, and
customizes it for your plugin. Use `--no-input` with all required flags for a
non-interactive run, which is useful for automation and LLM-assisted workflows.

```bash theme={"languages":{"custom":["/languages/pkl.json"]}}
formae plugin init [flags]
```

### Flags

| Flag                      | Default      | Description                                                                                                                                                                                 |
| ------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--name <name>`           |              | Plugin name. Required for `--no-input`.                                                                                                                                                     |
| `--namespace <namespace>` |              | Target technology namespace, for example `AWS` or `GCP`. Required for `--no-input`.                                                                                                         |
| `--module-path <path>`    |              | Go module path, for example `github.com/your-org/formae-plugin-foo`. Required for `--no-input`.                                                                                             |
| `--description <text>`    |              | Plugin description. Required for `--no-input`.                                                                                                                                              |
| `--author <name>`         |              | Plugin author for the license copyright. Required for `--no-input`.                                                                                                                         |
| `--category <category>`   |              | Plugin category. One of `cloud`, `auth`, `config`, `observability`, `cicd`, `network`, `data`, `security`, `containers`, `other`. Prompted in interactive mode, `other` under `--no-input`. |
| `--license <spdx>`        | `Apache-2.0` | SPDX license identifier.                                                                                                                                                                    |
| `--output-dir <path>`     | `./<name>`   | Target directory.                                                                                                                                                                           |
| `--hub <url>`             |              | Hub base URL. Defaults to `$FORMAE_HUB_URL` or `https://hub.platform.engineering`.                                                                                                          |
| `--no-input`              | `false`      | Disable interactive prompts and error if required flags are missing.                                                                                                                        |
| `--no-availability-check` | `false`      | Skip the hub availability check. Use for offline scaffolding or tests.                                                                                                                      |
| `--allow-conflict`        | `false`      | Scaffold even if the hub reports the plugin name is already registered.                                                                                                                     |
