Features

Blueprinting

Composable blueprints
A YAML service spec can refer to other blueprints, either in the catalog or by URL, and can supply custom configuration.
Portable machines specs -- or location-specific identifiers

Define machine specs using portable constraints, or, when you need to, use specific imageId, hardware profiles, and more

Policy-Based Management

Live metrics
Collect live metrics for use in policies, either from metric stores or directly using REST, JMX, SSH, and more.
Management policies

Choose from built-in policies including auto-scaling, failover, and follow-the-sun, or create new policies to perform custom runtime management.

Use config keys to customize the policies to suit your systems, right in the YAML blueprint.

Dynamic reconfiguration
Reconfigure policies, suspend them, or add new ones on-the-fly through the REST API.

Operations

Brooklyn console
Brooklyn runs with a GUI console giving easy access to the management hierarchy, sensors, and activities.
High availability
Run standby nodes which can optionally automatically promote to master in the event of master failure. Hot standby nodes can provide additional read-only access to entity information.
State persistence
Blueprint, catalog, topology and sensor information can be automatically persisted to any file system or object store to stop Brooklyn and restart resuming where you left off.
REST API

The console is pure JS-REST, and all the data shown in the GUI is available through a straightforward REST/JSON API.

In many cases, the REST API is simply the GUI endpoint without the leading #. For instance the data for #/v1/applications/ is available at /v1/applications/. And in all cases, Swagger doc is available in the product.

Groovy console
With the right permissions, Groovy scripts can be sent via the GUI or via REST, allowing open-heart surgery on your systems. (Use with care!)
Versioning
Blueprints in the catalog can be versioned on-the-fly. Running entities are attached to the version against which they were launched to preserve integrity, until manual version updates are performed.
Deep task information
The console shows task flows in real-time, including the `stdin` and `stdout` for shell commands, making it simpler to debug those pesky failures.

Java

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.
Type hierarchy
Use interfaces and mix-ins to share and inherit behavior in a strongly typed way.
Sensor feeds
Fluent builder-style API's are included for collecting sensor information from REST endpoints, SSH commands, JMX connectors, and more.
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.