This tool builds a Custom Plugin Repository for JetBrains IDEs like IntelliJ IDEA. It supports:
- Automatic download of public plugins from JetBrains Plugin Repository
- Hosting via built-in HTTP server
- Support for local/private plugins with rich metadata (name, vendor, description)
- Generates
updatePlugins.xmlin JetBrains plugin repository format
This downloads remote plugins (latest versions) and copies local plugin files, then generates updatePlugins.xml.
./repo-builder -buildLaunch an HTTP server to serve updatePlugins.xml and plugin files.
./repo-builder -serveYour configuration should look like this:
serverUrl: http://localhost:3000
bindIp: 0.0.0.0
port: "3000"
dir: out
# Remote JetBrains plugins (by numeric plugin ID)
plugins:
- "164" # IdeaVim
- "10080" # .env files support
# Local plugin entries
localPlugins:
- id: com.local
version: 2.2.0
since: "211.1.*"
until: "999.*"
file: ./plugins.zip
name: plugin name
vendor: abc
vendorEmail: abc@abc.com
vendorUrl: https://www.google.com
description: describe| Field | Type | Description |
|---|---|---|
serverUrl |
string | Base URL to be used in updatePlugins.xml (e.g., http://localhost:3000) |
bindIp |
string | IP to bind the HTTP server (default: 0.0.0.0) |
port |
string | Port for HTTP server (default: 3000) |
dir |
string | Output directory for files and XML |
plugins |
list | List of public JetBrains plugin numeric IDs |
localPlugins |
list | List of local plugins with metadata and file path |
- Open Settings → Plugins
- Click the ⚙️ icon → Manage Plugin Repositories
- Add your custom repo URL:
http://localhost:3000/updatePlugins.xml
You’ll now see your custom/private plugins in the Marketplace tab.
- ✅ Full support for
<name>,<vendor>, and<description>fields (including HTML) - ✅
<![CDATA[ ... ]]>block for plugin descriptions - ✅ Support for JetBrains build constraints via
<idea-version since-build="..." until-build="..."/> - ✅ Offline usage
- Remote plugin IDs can be found in plugin URLs, e.g.:
https://plugins.jetbrains.com/plugin/164-ideavim→ ID is164 - Remote plugins fetch latest release automatically
- Local plugins must specify a valid
.zipor.jarplugin file
- Add support for multiple JetBrains IDE versions in output
- Auto-sync from private plugin git repo or artifact repo (e.g., Nexus/Artifactory)
- Web UI for local plugin upload