Since 3.0
CloverETL Server includes embedded OSGi framework which allows implementation of "plugin" (OSGi bundle) which works as new API (or even GUI) of the server and it is independent of released clover.war.
Basically the plugin may work as new server API similarly as Launch Services, HTTP API, WebServices API. It may be just simple JSP, HttpServlet or complex SOAP Web Services. So if the plugin contains some HTTP service, it is registered to listen on specified URL during the startup and incoming HTTP requests are "bridged" from the web container to the plugin. Plugin itself has access to the internal CloverETL Server interface called "ServerFacade". ServerFacade offers methods for execution graphs, obtaining of graph status and executions history, manipulation with scheduling, listeners, configuration and many more. So the API may be customized according to the needs of specific deployment.
There are 2 CloverETL Server configuration properties related to the OSGi framework.
plugins.path - Absolute path to the directory containing all your plugins (jar files).
plugins.autostart - It is comma separated plugin names list. These plugins will be started during server startup. Theoretically OSGi framework can start the OSGi bundle on demand, however it is unreliable when the servlet bridge to the servlet container is used, so it is strongly recommended to name all your plugins.
So do deploy your plugin: set two config properties, copy plugin to the directory specified by "plugins.path" and restart the server.