Jenkins Remoting

Jenkins Remoting is a library, and executable Java archive, which implements the communication layer in Jenkins.
This includes the TCP-based communication protocols, remote procedure calls, class loading, data streaming, etc.
Currently Remoting is primarily used in master/agent communications.

The Remoting sub-project includes the Remoting library itself, package for agents, and a number of Remoting-specific plugins and core modules.

Remoting Usage in Jenkins

Agent executables (remoting.jar is a named agent.jar or slave.jar in Jenkins)

Master to Agent communication protocols being used in various Agent types, including Java Web Start (aka JNLP) and SSH agents

Project Components

Remoting Library

Remoting Library is the main component of the the sub-project.
The code base is located in a separate repository,
which also contains Remoting developer and user documentation.
This library also has an independent release cycle and LTS release lines.

Jenkins Core and Modules

Although Remoting library is a standalone component,
Jenkins core includes some extensions and modules for working with Remoting.
Core extensions also allow implementing custom protocols on-demand (e.g. for Jenkins CLI).
There is ongoing activity on detaching these core components to Jenkins plugins
(see JENKINS-44099),
but in the meantime upgrading of Jenkins core may be required to fix Remoting issues.