{% include feature-item.html title=“Discoverable configuration” %}
Config keys, sensors, and effectors can be defined on the classes such that they are automatically discoverable at runtime. Type information, parameters, documentation, and default values are returned through the REST API and shown in the GUI.
{% include feature-item-end.html %}
{% include feature-item.html title=“Type hierarchy” %}
Use interfaces and mix-ins to share and inherit behavior in a strongly typed way.
{% include feature-item-end.html img=“java-hierarchy.png” %}
{% include feature-item.html title=“Sensor feeds” %}
Fluent builder-style API's are included for collecting sensor information from REST endpoints, SSH commands, JMX connectors, and more.
{% include feature-item-end.html %}
{% include feature-item.html title=“Task libraries” %}
Fluent builder-style task libraries are included for building activity chains which run in parallel or sequentially, executing SSH, REST, or arbitrary Java commands. Task status, result, hierarchies, and errors are exposed through the REST API and in the GUI.
{% include feature-item-end.html %}