nRF Cloud Javascript gateway common library

Usage no npm install needed!

<script type="module">
  import nrfcloudGatewayCommon from 'https://cdn.skypack.dev/@nrfcloud/gateway-common';



Common module for JavaScript based gateways.


This module contains the gateway logic for communicating with the nRF Cloud platform and Bluetooth devices.


npm i @nrfcloud/gateway-common


You'll need to provide a class that inherits from bluetoothAdapter. This will have to be specific for your system. See ExampleAdapter for an example.

Create a gateway on your nRF Cloud account (make sure you have an account first!) using the following command:

npx @nrfcloud/gateway-registration

It will ask you for your login credentials. It will output three files in a ./result directory. For MQTTS, you'll need the certificates and gateway ID. For WSS, you'll just need the gateway ID. WSS uses Cognito authentication to provide security.


In your code, create a new Gateway and pass in a configuration object.

It is suggested that you use environment variables and something like dotenv.

(Note that this example is in Typescript, but plain JS works as well.)

import { Gateway, GatewayConfiguration, GatewayEvent } from 'gateway-common';
import { NobleAdapter } from './src/adapters/nobleAdapter';
const configuration: GatewayConfiguration = {
    keyPath: process.env.PRIVATE_KEY_PATH,
    certPath: process.env.CLIENT_CERT_PATH,
    caPath: process.env.CA_CERT_PATH,
    gatewayId: process.env.GATEWAY_ID,
    host: process.env.HOST,
    stage: process.env.ENVIRONMENT_STAGE,
    tenantId: process.env.TENANT_ID,
    bluetoothAdapter: new NobleAdapter(),
const gateway = new Gateway(configuration);

Upon instantiation, the gateway will try to connect to nRF Cloud.


The gateway will emit some events as things happen.

  • GATEWAY_DELETED: The gateway has been deleted from nRF Cloud. You'll probably want to delete the certs since they're not useful any more
  • NAME_CHANGED: Gateway name has been changed
  • DEVICE_REMOVED: Device has been removed from the gateway
  • CONNECTIONS_CHANGED: The device connections have changed


To see an implementation of this project, see the Raspbery Pi gateway.