Skip to content


An application as defined in Cuesta corresponds to an actual application that the user wishes to include in a session. An application must be defined in Cuesta in order to be automated or take part in context synchronisation.

Application connfiguration

Applications are defined by a name, a type and information about how to recognise and possibly launch the application. The type determines which driver implementation Manatee will use to interact with the application.

The startup and contains parameters are used respectively to launch the application (if needed) and to recognise the application if it is already running.

Types of applications

Manatee can drive both native, web and java-based applications as well as handle proxies for actual context particpants. Each type of application is handled by a specific driver and some requires extra components to be installed, e.g. a Chrome extension for the Chrome browser.


We have the following drivers available for standalone applications;

  • The native driver which are able to drive Windows native applications. These are normally applications written specifically for Windows and are accessed using a native accessibility API.
  • The Java driver uses Java accessibility APIs to interact with Java applications. It has support for Swing/AWT applications and JavaFx embedded in Swing/AWT.

Web-based applications

For web-based applications we have support for the following browsers:

  • The Chrome driver uses an extension to drive web-pages/applications shown in the Chrome browser. It is available at the Chrome store.
  • The Firefox driver does the same as the Chrome driver but for Firefox. It can be downloaded from here.
  • The Edge driver which again is a driver for the Edge browser - available from the Edge Add-ons store.
  • The IE driver interfaces with Internet Explorer to be able to automate web-pages shown here. It does not require any extensions/add-ons.

Manatee (the driver platform) also has some built-in browsers:

  • The embedded IE browser runs an Internet Explorer browser-engine in a built-in window. It requires Internet Explorer to be installed on the host-machine and will use the version (depending on registry settings) and settings of IE installed but will display new window chrome with greater support for hiding the location bar etc.
  • The embedded Chrome browser runs a Chrome (Chromium-based) browser engine. It does not require Chrome to be installed as Manatee includes the Chromium-runtime when installed. It can as with the embedded IE be configured to not display a location bar and will re-use cookies or other state between launches making it better suited than using a regular to some forms of automation.

Furthermore we also have;

  • The headless driver which does not attach itself to any running applications and is mostly used for running flows outside of the context of any applications.
  • The ContextParticipant driver which is used to integrate with CCOW-compatible (via our external APIs) applications.

It is possible to add more drivers by way of Manatee plugins, so if there is a special need we can deploy support for new application types dynamically.

Creating and editing applications

An application is created by entering the required information in the new application input form. Each type of application has a specific set of fields that need to be filled out.

Launching or attaching to an existing application

For a web-application the section containing the parameters for launching is simply the url and (in some cases) whether to open a new tab or a new window. Similarly the information needed to detect an already existing instance is the url (or title in some cases).

WebApplication details

For a native- or java-based application more information is needed to launch the application as shown below. Detecting an existing instance can be done by different predicates:

  • Title bar will match the current title of the application against the regular expression given, the same string as returned by Window.title
  • Frame will match the class of the window frame, the same string as returned by Processes.current.class
  • Process-name will match the name of process and may include arguments given to the process, the same string as returned by Processes.current.commandLine
  • Executable-path will match the full path to the executable, the same string as returned by Processes.current.fileName

The predicates are joined in a conjunction meaning that the more predicates / fields that have input the more specific the match is. All fields accept regular expressions.

Launching an application via a flow

You can also choose to start an application with a flow. This flow is run in headless mode meaning that no application is available so you cannot interact with fields etc.

Launch an application via a flow

In the flow you can write some code that produces an application by:

  1. Returning a string which will be interpreted as an url to launch (for web-applications) or a command to be executed for other types of applications
  2. Launch the application in the flow and return an object containing the properties:
    • hwnd a window handle for the main window for the process
    • pid a process identifier for the process you have launched
  3. Or return an object which will be used to launch the application. It should have the following properties:
    • command a command to run and
    • arguments arguments to a command
  4. Return a ProcessProxy object designating the process launched.
  5. Return an error indicating the launch failed.
  6. No return value is interpreted as a successful launch and Manatee will try and attach.


You can add the application to as many groups as you would like. The more groups you add the greater number of Manatees will be able to use the application. The groups found on an application should be a super-set of the groups of all of its flows - in other words; do not add a group to a flow without its parent application also having this group.