Imply UI configuration

The Imply UI server can read a config YAML file via the --config parameter where you can specify the server specific options described below. Some (but not all) of these options are also available through the command line. Any option specified in the command line will override its equivalent in the config.

# verbose (Boolean)

Indicates that Imply should run in verbose mode. This will log all the database queries done by Imply UI.

# varDir (string)

The var directory to be used by Imply

# licenseFile (string)

The license file to be used by Imply

# port (number)

The port the server should run on. Defaults to 9095.

# serverHost (string)

The host that the server will bind to. Defaults to all hosts.

# serverRoot (string)

A custom path to act as the server string. Default: ''.

Setting serverRoot to ui will tell the server to serve content from http://your-host/ui.

# serverHttpsOptions (object)

A custom object that will be passed to the node's tls.createSecureContext and will cause the server to listen on an https port. Use this option to enable TLS based serving.


  cert: |
    -----END CERTIFICATE-----
  key: |
    -----BEGIN PRIVATE KEY-----
    -----END PRIVATE KEY-----

Note that when you are writing out a PEM encoded certificate inline you must use the | multiline starter to preserve the newlines which are needed for the PEM format.

For more information about how to generate certificates with openssl see the TLS documentation.

# keepAliveTimeout (number)

Set the keep alive timeout on the http connections.

# requestLogFormat (string)

A morgan string representing how the request logs will be formatted. For more info about possible values see the Morgan API docs.

# iframe ("allow" | "deny")

Specify whether embedding within and iframe will be allowed. If set to deny, the server will set the following headers:

X-Frame-Options: "DENY"
Content-Security-Policy: "frame-ancestors 'none'"

This is used to prevent Clickjacking. Learn more about it on MDN.

# trustProxy ("none" | "always")

Should the server trust the X-Forwarded-* headers.

# strictTransportSecurity ("none" | "always")

Specify that the server should set the StrictTransportSecurity header.

# sessionStore

The store config that defines where the session information for the logged in users will be stored. Only used when userMode: native-users or external-users.

Must have a key storageType set to either redis or mysql and the rest of the object can have any options that can be passed to connect-redis or express-mysql-session respectively.


  storageType: mysql
  port: 3306
  user: rockit
  password: 64eb6b3d3606894a5a65dc
  database: nervous-energy
    tableName: 'pivot_sessions'

# stateStore

The location, format and other options of the state store. This is an object that has the following keys:


  type: 'mysql'
  connection: 'mysql://root:@'
  tablePrefix: 'awesome-state-'

# maxUrlEntries (number)

Default: 50000. The maxim number of saved URL states to store. Once this limit is reached the oldest urls would be cleaned up.

# initialSettings (object)

A free form object that can be used to seed the settings.

# userMode

Imply can operate in several user access modes determined by the userMode in the config.yaml file. You have to restart the server in order to affect a change to the config.

The access modes are:

# defaultUserPermissions

An array of objects representing the permissions that will be assigned if running in userMode: default-user.

The is that all the possible permissions would look like effectively fiving the default user super-admin access:

  - { name: 'ManageUsers' }
  - { name: 'ConfigureLookAndFeel' }
  - { name: 'ManageConnections' }
  - { name: 'ManageDatasets' }
  - { name: 'AdministerDataCubes' }
  - { name: 'AdministerDashboards' }
  - { name: 'ChangeDataCubes' }
  - { name: 'ChangeDashboards' }
  - { name: 'SeeOtherUsers' }
  - { name: 'AccessSQL' }
  - { name: 'AccessVisualization' }
  - { name: 'AccessDatasets' }

# ldapOptions

The options to pass to the LDAP server (only used when userMode: ldap-authentication). For a detailed explanation of all the possible configurations see the node-ldapauth options.

An extra options (that are not part of the ldapauth options) are:


  url: 'ldap://' # The URL of the LDAP
  searchBase: "dc=imply,dc=io"
  searchFilter: "(uid={{username}})"
  bindDN: 'cn=admin,dc=imply,dc=io'
  bindCredentials: 'JonSn0w'
  rolesKey: 'role'
  defaultRole: 'user' # This controls the roll assigned to the user by default

# roleAuthority

Determines weather Imply or LDAP is in charge of setting the user roles. Can have values of native and ldap. Default: native.

When a user logs into Imply (via LDAP) for the first time their role is determined and registered in Imply by reading the rolesKey key (as specified in the ldapOptions) from the returned LDAP record. If the role is not set then the role defaults to the defaultRole.

On subsequent logins the role calculation behaviour differs based on the setting of the roleAuthority:

# appName (string)

Changes the name on the 'app' on the login screen.

# userNameLabel

Set the user name label in the login route (default: "Email"). Set this if you are using native-users or ldap-authentication user mode and the users are meant to login with something other than their email.

# suppressUserIcon (boolean)

Suppress the user icon and menu in the top right corner of every view.

# queryCache

Sets the server side query cache options.

The possible types are:

# purePivot

You can set purePivot: true to get the server to direct users straight into the Visualize mode (bypassing the home screen)

# decorators

A set of key-value pairs defining the Druid decorator modules by name.


  basicAuth: "./basicAuthDecorator.js"
  union: "./unionDecorator.js"



Manage Data

Query Data



Special UI Features