# plugin

<!---MARKER_GEN_START-->
Manage plugins

### Subcommands

| Name                           | Description                                                                                                           |
|:-------------------------------|:----------------------------------------------------------------------------------------------------------------------|
| [`create`](plugin_create.md)   | Create a plugin from a rootfs and configuration. Plugin data directory must contain config.json and rootfs directory. |
| [`disable`](plugin_disable.md) | Disable a plugin                                                                                                      |
| [`enable`](plugin_enable.md)   | Enable a plugin                                                                                                       |
| [`inspect`](plugin_inspect.md) | Display detailed information on one or more plugins                                                                   |
| [`install`](plugin_install.md) | Install a plugin                                                                                                      |
| [`ls`](plugin_ls.md)           | List plugins                                                                                                          |
| [`push`](plugin_push.md)       | Push a plugin to a registry                                                                                           |
| [`rm`](plugin_rm.md)           | Remove one or more plugins                                                                                            |
| [`set`](plugin_set.md)         | Change settings for a plugin                                                                                          |
| [`upgrade`](plugin_upgrade.md) | Upgrade an existing plugin                                                                                            |



<!---MARKER_GEN_END-->

## Description

Manage plugins.
