This is a fork of and include widgets that we are developing and you will not find in the original code.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Andreas Peters e64f1a727a
add klammer
7 months ago
config Support importing sticker packs from Telegram 8 months ago
docs Backend structures for Slack bridging 10 months ago
scripts Sticker pack administration 1 year ago
src Add an option to force a default jitsi domain on the widget 8 months ago
web add klammer 7 months ago
.dockerignore Add a dockerignore and README instruction for Docker 1 year ago
.gitignore Speed up development builds slightly 8 months ago
.travis.yml Update linting to include the web project as well 1 year ago Link to helpful material in the documentation 10 months ago
Dockerfile Make the Dockerfile safe for Windows 11 months ago
LICENSE Initial commit 2 years ago npm install is needed to grab deps 10 months ago add docker file 1 year ago
package-lock.json Remove unused matrix-js-sdk 8 months ago
package.json Remove unused matrix-js-sdk 8 months ago
postcss.config.js Upgrade dependencies to be nodejs 6.11 & npm5 compatible 2 years ago
tsconfig-app.json Move app from src-ts to src 1 year ago
tsconfig.json Support provisioning bots in go-neb 1 year ago
tslint.json Package upgrades and change linting rules 1 year ago
webpack.config.js Speed up development builds slightly 8 months ago


TravisCI badge

An open source integrations manager for matrix clients, like Riot.

Configuring Riot to use Dimension

Change the values in Riot’s config.json as shown below. If you do not have a config.json, copy the config.sample.json from Riot.

"integrations_ui_url": "",
"integrations_rest_url": "",
"integrations_widgets_urls": [""],
"integrations_jitsi_widget_url": "",

The remaining settings should be tailored for your Riot deployment. If you’re self-hosting Dimension, replace “” with your Dimension URL.

Running your own


To get started quickly, run the following command or build the Docker image:

docker run -p 8184:8184 -v /path/to/dimension/store:/data turt2live/matrix-dimension

In the /path/to/dimension/store make sure there is a file named config.yaml. This will be the configuration that Dimension uses.

Compiling it yourself


  • NodeJS 8
  • npm 5 or higher (npm install -g npm@latest)
  • A webserver running Riot or another supported client
# Download dimension 
git clone
cd matrix-dimension

# Edit the configuration to your specifications.
# Be sure to add yourself as an admin!
cp config/default.yaml config/production.yaml
nano config/production.yaml

# Install dependencies
npm install

# Run
NODE_ENV=production npm run start:app

Setting up Dimension

If you didn’t change the port, Dimension should now be running on port 8184. It’s best to set up your environment so that Dimension runs on a dedicated subdomain that is not the same as your Riot domain. This is to help keep Riot and Dimension safe and secure.

In your Riot config.json, set the integration manager to be your Dimension URL. Replace in the example above (under “Configuring Riot to use Dimension”) with your Dimension URLs.

After Riot has been configured to use Dimension, refresh Riot and click the “Integrations” button in the top right of the room. It should be an icon that looks like this:

3x3 square

That button should open Dimension. If you’ve configured everything correctly, you’ll see a gear icon in the top right of the window - click this to start editing your integrations.

Running Dimension behind nginx

  1. Follow the steps outlined above.
  2. Set the host for Dimension to listen on to localhost or
  3. Restart Dimension (CTRL+C and run NODE_ENV=production npm run start:app again)
  4. Set up the following reverse proxy information as applicable location / { proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://localhost:8184; } Be sure to also configure any SSL offloading.

“Could not contact integrations server” error

  1. Check that federation is enabled and working on your homeserver. Even in a private, or non-federated environment, the federation API still needs to be accessible. If federation is a major concern, limit the servers that can use the API by IP or install Dimension on the same server as your homeserver, only exposing federation to localhost.
  2. Check your SRV records. If you are using SRV records to point to your federation port, make sure that the hostname and port are correct, and that HTTPS is listening on that port. Dimension will use the first record it sees and will only communicate over HTTPS.
  3. Verify the homeserver information in your configuration. The name, access token, and client/server API URL all need to be set to point towards your homeserver. It may also be necessary to set the federation URL if you’re running a private server.


For more information about working on Dimension, see

Do I need an integrations manager?

Integration managers aim to ease a user’s interaction with the various services a homeserver may provide. Often times the integrations manager provided by, named Modular, is more than suitable. However, there are a few cases where running your own makes more sense:

  • Wanting to self-host all aspects of your services (client, homeserver, and integrations)
  • Wanting to advertise custom bots specific to your homeserver
  • Corporate or closed environments where the default integration manager won’t work

How do integration managers work?

Integration managers sit between your users and your integrations (bots, bridges, etc). It helps guide users through the configuration of your integrations for their rooms. The integrations manager can only manage integrations it is configured for. For example, Modular can only provide configuration for the bridges and bots running on, while Dimension can provide configuration for your own bots and bridges.

The infrastructure diagram looks something like this: infrastructure


For information about Dimension’s license, please see the LICENSE file included in this repository.