Self-hosted plugin management software. Discover, install, version, and update PF4J plugins — with a catalog UI, REST API, and client SDK.
$ git clone https://github.com/plugwerk/plugwerk.git
$ cd plugwerk
$ docker compose up -d
✓ Plugwerk running at http://localhost:8080
From upload to installation — Plugwerk covers the full plugin lifecycle.
Browse, search, and filter plugins by tags and status. Grid and list view with download counts and ratings.
SemVer versioning with SHA-256 artifact integrity. Upload via Web UI, REST API, or CI/CD pipeline.
Multi-product, multi-org support. Each namespace has its own catalog, roles, and API keys.
Role-based access control per namespace. Multi-issuer OIDC for Keycloak, Auth0, Azure AD, and more.
Approve or reject plugin releases before they reach your users. Configurable per namespace.
Drop-in plugins.json endpoint. Works with pf4j-update out
of the box — zero migration effort.
Version history, compatibility info, download stats, and one-click installation.
The Plugwerk Client SDK is a PF4J plugin with its own isolated classloader — no dependency conflicts with your host application.
var config = new PlugwerkConfig.Builder(
"https://myplugwerk.host",
"acme-corp"
)
.apiKey("pwk_...")
.build();
var marketplace = pluginManager
.getExtensions(PlugwerkMarketplace.class)
.getFirst();
// Browse the catalog
var plugins = marketplace.catalog().listPlugins();
// Search by keyword
var results = marketplace.catalog()
.searchPlugins(new SearchCriteria("crm", null, null));
// Install a specific version
var result = marketplace.installer()
.install("com.acme.crm-connector", "3.0.0");
if (result instanceof InstallResult.Success s) {
log.info("Installed: {}", s.getPluginId());
}
All library modules are available on Maven Central under the
io.plugwerk group.
PF4J plugin with isolated classloader — SDK for discovery, install, and update.
io.plugwerk:plugwerk-client-plugin:<version>:pf4j@zip Extension point interfaces — PlugwerkMarketplace, Catalog, Installer, UpdateChecker.
io.plugwerk:plugwerk-spi:<version> MANIFEST.MF parser and validator for plugin metadata.
io.plugwerk:plugwerk-descriptor:<version> Generated DTOs and interfaces from the OpenAPI 3.1 specification.
io.plugwerk:plugwerk-api-model:<version> dependencies {
// Client SDK (PF4J plugin ZIP)
implementation("io.plugwerk:plugwerk-client-plugin:<version>:pf4j@zip")
// Or just the SPI interfaces
implementation("io.plugwerk:plugwerk-spi:<version>")
} Plugwerk is open source and free to self-host. Set it up in under 5 minutes.