Publishing your plugins
{% hint style=“success” %}
Introducing IDA Plugin Manager - Goodbye Manual Submissions
With the introduction of HCLI and the IDA Plugin Manager, we’ve built a new ecosystem for discovering, installing, and managing IDA plugins — all distributed through a central index in the IDA Plugin Repository. The plugins.hex-rays.com remains available for browsing and showcasing plugins, but the previous manual submission process via the My Hex-Rays portal has been retired. {% endhint %}
Make Your Plugin Compatible with HCLI & Plugin Manager
The key points to make your IDA plugin available via IDA Plugin Manager are:
- Update/create
ida-plugin.json - Package your plugin into a ZIP archive
- Publish releases on GitHub
Refer to the HCLI Plugin Manager Publication Guide for detailed steps, examples and process description.
Plugin Manager & HCLI Basic Documentation Resources
New to HCLI or the Plugin Manager? Start here to get up and running quickly. These resources are perfect for IDA users who want to browse, install, and manage plugins efficiently.
| Getting Started with HCLI | https://hcli.docs.hex-rays.com/getting-started/installation/ | ||
| Plugin Manager Overview | https://hcli.docs.hex-rays.com/user-guide/plugin-manager/ |
Plugin Development Documentation Resources
Are you a plugin author looking to make your plugin compatible with HCLI and the Plugin Manager? Explore these detailed guides to learn how to prepare, package, and publish your plugin in the new ecosystem.
| Repository Architecture | https://hcli.docs.hex-rays.com/reference/plugin-repository-architecture/ | ||
| Plugin Packaging Format | https://hcli.docs.hex-rays.com/reference/plugin-packaging-and-format/ | ||
| Publishing Your Plugin | https://hcli.docs.hex-rays.com/reference/packaging-your-existing-plugin/ |
Pre-submission checklist
Before publishing your plugin to the IDA Plugin Repository, make sure it’s fully compatible with HCLI and the Plugin Manager - read the testing guide.
Define plugin metadata with ida-plugin.json
{% hint style=“info” %}
Updated fields
We’ve added new required and optional fields to ensure compatibility with HCLI and IDA Plugin Manager. See the details and examples here. {% endhint %}
The ida-plugin.json it’s essential to ensure your plugin will be available in the IDA Plugin Repository and discoverable through Plugin Manager.
To work properly, the ida-plugin.json file must contain at the very least the IDAMetadataDescriptorVersion field as well as a plugin object containing the fields described below.
Example of the minimal ida-plugin.json file:
{
"IDAMetadataDescriptorVersion": 1,
"plugin": {
"name": "plugin1",
"version": "1.0.0",
"entryPoint": "plugin1.py",
"urls": {
"repository": "https://github.com/your-org/your-plugin"
},
"authors": [{
"name": "John Smith",
"email": "[email protected]"
}]
}
}
Check further examples in the HCLI Plugin Manager Docs.
Required Fields Description
| Field | Description |
|---|---|
.plugin.name | The name will be used to identify the plugin and also generate a namespace name for it if necessary (e.g., an IDAPython plugin). The namespace name is generated by converting all non alphanumeric characters of the plugin name to underscores (_) and prepending __plugins__ to it. For example “my plugin” would become __plugins__my_plugin. |
.plugin.entryPoint | The filename of the “main” file for the plugin. It should be stored in the same directory as its ida-plugin.json file. If the entryPoint has no file extension, IDA will assume it is a native plugin and append the appropriate file extension for dynamic shared objects for the host platform (.dll, .so, .dylib). For IDAPython plugins, this should typically be a .py file (e.g., my-first-plugin.py). |
.plugin.version | Specify the version of your plugin. It must follow the x.y.z format (e.g., 1.0.0). |
.plugin.description | Summarize your plugin functionality. |
.plugin.urls.repository | Link to your plugin’s public GitHub repository |
plugin.authors and/or plugin.maintainers | - At least one must be provided. Each entry requires name and email. |
Optional Fields Description
| Field | Description |
|---|---|
plugin.description | Summarize your plugin functionality. |
plugin.idaVersions | Declare which versions of IDA your plugin supports. You can specify a single version (e.g., 9.0) or a version range (e.g., >=9.0) using the semantic versioning scheme. |
plugin.platforms | Supported platforms. Defaults to all if not specified. Values: windows-x86_64, linux-x86_64, macos-x86_64, macos-aarch64 |
plugin.license | SPDX license identifier (e.g., “MIT”, “GPL-3.0”, “Apache-2.0”) |
plugin.logoPath | Include an image to visually represent your plugin on its page at plugins.hex-rays.com. This should be a relative path to an image file within your plugin’s repository. The recommended aspect ratio for the image is 16:9. |
plugin.categories | Select at least one category to improve your plugin’s discoverability: disassembly-and-processor-modules, file-parsers-and-loaders, decompilation, debugging-and-tracing, deobfuscation, collaboration-and-productivity, integration-with-third-parties-interoperability,api-scripting-and-automation, ui-ux-and-visualization, malware-analysis, vulnerability-research-and-exploit-development, other |
plugin.keywords | Search terms to improve discoverability. |
plugin.pythonDependencies | PyPI packages to install (e.g., ["requests>=2.28.0", "package-name"]). |
plugin.settings | Configuration options as a list of descriptors of settings. |
FAQ
Make your plugin HCLI and Plugin Manager ready - check out our FAQ for guidance and practical tips.