Config API

The Pivot 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 that Imply UI should run on. Defaults to 9095.

# serverHost (string)

The host that Pivot will bind to. Defaults to all hosts.

# serverRoot (string)

A custom path to act as the server string.

The Imply UI will be served from http://pivot-host:$port/ and http://pivot-host:$port/$serverRoot.

# 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 Pivot will be allowed to run in an iFrame. If set to deny, Pivot 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 Pivot should set the StrictTransportSecurity header.

Note that Pivot can itself only run an http server. This option is intended to be used when when Pivot is running behind a HTTPS terminator like AWS ELB.

# 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

    The type of the store, can be one of mysql, pg, or sqlite.

  • connection

    The connection string (or filename in case of sqlite).

  • tablePrefix (optional)

    The string with which to prefix the tables that will be created.

  • initialSettings

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


  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.

# userMode

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

The four access modes are:

  • all-users

    There is no login screen; all users accessing Pivot are given user privileges meaning they have no access to the settings view and can not modify clusters. Users are allowed to create, modify, and delete data cubes and dashboards freely.

  • all-dashboard-only-users

    There is no login screen; all users accessing Pivot are given dashboard-only-user privileges meaning they have no access to the settings view and can not modify clusters or data cubes. Users are allowed to create, modify, and delete dashboards freely.

  • all-admin (default)

    There is no login screen; all users accessing Pivot are given admin privileges meaning they have full access to the settings view and can modify clusters, data cubes, and dashboards.

  • native-users

    There is a login screen and all users accessing Imply must login with their username and password. When first activating this mode, if no users were previously created, a dummy admin user with the user id of and password password will be created. You should login with that user and promptly create a user for yourself by navigating to the Users tab in the settings view.

    An admin user can create and delete users and change their type user or admin. After creating a new user account you can get an invitation link to send to that user so they can define their own password.

    Note that everyone accessing a given Pivot server always has access to the same data. The only thing differentiating users and admins is schema editing privileges.

  • ldap-authentication

    It is possible to connect Imply UI to an LDAP server for external user authentication. Set the ldapOptions accordingly.

# 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 option (that is no part of the ldapauth options) is defaultRole which controls the role assumed by any user authenticated via LDAP, it can be either 'user' or 'super-admin'.


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

# 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.

# queryCache

Sets the server side query cache options.

The possible types are:

  • none

    Do not have any query cache.

      type: 'none'
  • local (default)

    Cache queries locally (per node). This is the default because it requires no setup but it would be better to use the memcached option of you are running more than one query server.

  • memcached

    It is possible to define the following properties:

    • servers: the memcached server or servers to connect to

    • options: the specific connection options for the memcached server fallbacks

    • lifetime: the lifetime, in seconds, that the cache entry will persist for

    • prefix: the key prefix that could be used if the memcached server was shared with other services


      type: 'memcached'
      servers: 'my.memcached1.internal:11211,my.memcached2.internal:11211'

# purePivot

You can set purePivot: true to get the Imply UI to go straight into Pivot mode (bypassing the Imply home screen)

# decorators

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


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