# Extensions overview > Since v7.0 Extensions are the plug-in mechanism for the MetalSoft platform. It allows 3rd party developers to extend the base functionality of MetalSoft in various ways such as: 1. Add buttons in the infrastructure editor 2. Add custom drivers for networking and server deployments 3. Execute custom code at pre or post-deploy 4. Integrate with DCIM systems or implement validation scripts ## Registering, unregistering and publishing an extension To add an extension use the `metalsoft-cli extension` set of commands CLI together with the definition json as described above: ``` ./metalcloud-cli extension Manage platform extensions including workflows, applications, and actions. Extensions are modular components that extend the platform's functionality. They can be: - workflows: Define automated sequences of operations - applications: Provide custom application deployment logic - actions: Implement specific operational tasks Extension lifecycle includes draft, active, and archived states. Only published extensions become active and available for use across the platform. Available Commands: list List and filter extensions get Retrieve detailed extension information create Create new extension from definition update Modify existing extension properties publish Activate draft extension for platform use archive Deactivate published extension Examples: metalcloud extension list --filter-kind workflow --filter-status active metalcloud extension create my-workflow workflow "Custom deployment workflow" --definition-source definition.json metalcloud extension update ext123 "Updated Name" "New description" metalcloud extension publish ext123 Usage: metalcloud-cli extension [command] Aliases: extension, ext, extensions Available Commands: archive Deactivate published extension and make it unavailable create Create new extension from definition get Retrieve detailed information about a specific extension list List and filter platform extensions publish Activate draft extension for platform use update Modify existing extension properties and definition Flags: -h, --help help for extension Global Flags: -k, --api_key string MetalCloud API key -c, --config string Config file path -d, --debug Set to enable debug logging -e, --endpoint string MetalCloud API endpoint -f, --format string Output format. Supported values are 'text','csv','md','json','yaml'. (default "text") -i, --insecure_skip_verify Set to allow insecure transport -l, --log_file string Log file path -v, --verbosity string Log level verbosity (default "INFO") Use "metalcloud-cli extension [command] --help" for more information about a command. ``` ## Publishing an extensions An admin is required to publish the extension before it can be used by other users. This helps prevent accidental usage of an extension before it has been fully developed. ## Archiving the extension Note that it is not possible to delete an extension. Admins can instead archive it. This preserves information about `extension instances` and other information that might be required for billing purposes. Additionally a series of commands are provided to manipulate extension instances which are instances of the extension, deployed by users. ## Extension types: Currently the following extension types are supported: 1. [Application extensions](app_extensions) 2. [Workflow extensions](workflow_extensions)