Shepherd
Server & manager for the LwM2M-like Lightweight Message Queuing Network (LwMQN)
Install / Use
/learn @lwmqn/ShepherdREADME

@lwmqn/shepherd is a network server and manager for the Lightweight Message Queuing Network (LwMQN)
</div>What is LwMQN
Lightweight Message Queuing Network (LwMQN) is an open source project that follows part of OMA LwM2M v1.0 specification to meet the minimum requirements of machine network management.
Server-side and Client-side Libraries:
- LwMQN project provides you with this machine-side @lwmqn/qnode library and a server-side @lwmqn/shepherd library to build your machine network with JavaScript and Node.js easily.
- Server-side library: @lwmqn/shepherd (this module)
- Client-side library: @lwmqn/qnode
- A simple demo webapp
Features
- Communication based on MQTT protocol and Mosca broker.
- Embedded persistence (NeDB) and auto-reloads Client Devices at boot-up.
- Build your IoT network with or without cloud services.
- LwM2M-like interfaces for Client/Server interaction.
- Hierarchical Smart Object data model (IPSO), which leads to a comprehensive and consistent way in describing real-world gadgets.
- Easy to query resources on a Client Device with the URI-style path, and everything has been well-organized to ease the pain for you to create RPC interfaces for your webapps, such as RESTful and websocket-based APIs.
- LwMQN Server is your local machine gateway and application runner. But if you like to let your machines go up cloud, why not? It's Node.js!
Understanding Smart Objects and the IPSO Model

Acronyms and Abbreviations
- Server: LwMQN server
- Client or Client Device: LwMQN client (machine)
- Shepherd: Class exposed by
require('@lwmqn/shepherd') - Qnode: Class to create a software endpoint(proxy) of a remote Client Device on the server
- qserver: Instance of Shepherd Class
- qnode: Instance of Qnode Class
Installation
Currently Node.js 8.x LTS or higher is required.
$ npm install @lwmqn/shepherd
Compabitility table
| Shepherd versions /<br>Node.js versions | 8.x<br>LTS | 10.x<br>LTS | 11.x | 12.x<br>LTS | 13.x | |--------------------------------------|------------|-------------|------|-------------|------| | v0.8.0 | ✔ | ✘ | ✘ | ✘ | ✘ |
Basic Usage
const Shepherd = require('@lwmqn/shepherd')
const qserver = new Shepherd() // create a LWMQN server
qserver.on('ready', function () {
console.log('Server is ready.')
// when server is ready, allow devices to join the network within 180 secs
qserver.permitJoin(180)
})
qserver.start(function (err) { // start the sever
if (err) console.log(err)
})
// That's all to start a LwMQN server.
// Now qserver is going to automatically tackle most of the network managing things.
Documentation
- <a href="https://github.com/lwmqn/shepherd/blob/master/docs/Basic-APIs.md"><code><b>Basic APIs</b></code></a>
- <a href="https://github.com/lwmqn/shepherd/blob/master/docs/Events.md"><code><b>Events</b></code></a>
- <a href="https://github.com/lwmqn/shepherd/blob/master/docs/Message-Encryption.md"><code><b>Message Encryption</b></code></a>
- <a href="https://github.com/lwmqn/shepherd/blob/master/docs/Auth-Policies.md"><code><b>Auth Policies</b></code></a>
- <a href="https://github.com/lwmqn/shepherd/blob/master/docs/Status-Codes.md"><code><b>Status Codes</b></code></a>
- <a href="https://github.com/lwmqn/shepherd/blob/master/docs/Debug-Messages.md"><code><b>Debug Messages</b></code></a>
License
Licensed under MIT.
Related Skills
node-connect
327.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
80.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
327.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
80.7kCommit, push, and open a PR
