Guacamole provides several APIs for extending and embedding Guacamole in existing infrastructures and applications. The majority of the Guacamole codebase actually forms the Guacamole core; the web application named “Guacamole” merely leverages this core, wrapping it in a nice user interface and simple authentication scheme.
You can easily add additional protocol support, support for other authentication methods, or create other HTML5 remote desktop applications using the Guacamole core APIs and associated stack.
The C API for extending and developing with Guacamole is libguac. All native components produced by the Guacamole project link with this library, and this library provides the common basis for extending the native functionality of those native components (by implementing client plugins).
libguac is used mainly for developing client plugins like libguac-client-vnc or libguac-client-rdp, or for developing a proxy supporting the Guacamole protocol like guacd. This chapter is intended to give an overview of how libguac is used, and how to use it for general communication with the Guacamole protocol.
While not strictly part of the Java API provided by the Guacamole project, guacamole-ext is a subset of the API used by the Guacamole web application, exposed within a separate project such that extensions, specifically authentication providers, can be written to tweak Guacamole to fit well in existing deployments.