Building a vPilot plugin is accomplished by creating a class that implements the IPlugin interface from the RossCarlson.Vatsim.Vpilot.Plugins namespace. This interface is defined in the RossCarlson.Vatsim.Vpilot.Plugins.dll assembly which you can find in the folder where vPilot is installed. The IPlugin interface has two members: string Name { get; } void Initialize(IBroker broker); When vPilot starts, it will look for any DLL files in the Plugins folder within your vPilot installation folder. When vPilot finds your plugin, it will instantiate it and then call its Initialize() method, passing in an instance of IBroker, which is another interface from the same namespace and assembly as IPlugin. Your plugin should store a reference to this instance. Your plugin can subscribe to all the events that the broker exposes, and it can call methods on the broker to make things happen such as connecting to the network, squawking ident, etc. Have a look at the IBroker interface to see all the available events and methods. An XML documentation file is included with the assembly so you'll get intellisense documentation within Visual Studio as long as the XML file is present in the same folder as the DLL. Notes: - Your plugin name is used only for debug logging purposes. It can be anything you like. - All of the events in IBroker will be raised on the UI thread. - Any calls made to methods in IBroker will be marshalled to the UI thread. - When running vPilot in a split host/remote networked setup, plugins are only loaded by the host. Plugins are not loaded by the remote instance.