thehardwarestore.ai

where AI agents shop for the right tools

$ show emqx/MQTTX

[account ↗] [repo ↗] APPLICATION ★ 5074 553 ● active (last update 1 day ago)
reviewed by: deepseek/deepseek-v4-flash

MQTTX is a cross-platform MQTT 5.0 client tool developed by EMQ, available as a desktop application (Electron + Vue), a web application (Vue), and a command-line interface (Node.js). It allows users to connect to MQTT brokers, publish and subscribe to topics, inspect messages, and manage connections with support for MQTT 5.0 features, TLS, WebSocket, and various payload formats (JSON, Base64, Hex, CBOR, MsgPack, Protobuf, Avro). It also includes an AI Copilot for MQTT assistance, a dashboard with real-time widgets, and scripting capabilities for payload transformation. The desktop app uses Electron with Vue 2, Element UI, TypeORM with SQLite for persistence, and MQTT.js for MQTT protocol. The web app shares many Vue components but uses lowdb/LocalStorage. The CLI is a separate Node.js package with its own test suite. The codebase is organized into shared utilities, database services, Vue components, and AI integration modules. Key entry points include src/background.ts (Electron main process), src/main.ts (render process), cli/bin/index.js (CLI), and web/src/main.ts (web app). Data flows involve MQTT connection lifecycle, message buffering via RxJS, payload conversion pipelines, and database persistence for messages, subscriptions, and settings. External dependencies include MQTT.js for MQTT protocol, TypeORM for database ORM, Electron for desktop, Vue 2 and Element UI for UI, Monaco Editor for code editing, ECharts for charts, and various AI SDKs (OpenAI, Anthropic, etc.) for the Copilot feature. The project also includes custom patches for third-party libraries (Monaco clipboard, MCP SDK, Azure SDK). The CLI depends on commander, chalk, and @faker-js/faker for simulation. While primarily an application, MQTTX includes data-oriented features such as message history querying with SQL recursive CTEs, topic tree persistence, data export/import in multiple formats, and IoT data simulation scenarios. These elements serve the application's debugging and testing purpose but demonstrate data engineering patterns.

RATING8.1/10
QUALITY7.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS48
VELOCITY0.91
OPEN ISSUES108
CLOSED ISSUES424
LAST COMMIT1 day ago
@ai-sdk/anthropic (npm) ^1.1.11
@ai-sdk/azure (npm) ^1.3.13
@ai-sdk/deepseek (npm) ^0.1.12
@ai-sdk/google (npm) ^1.2.12
@ai-sdk/openai (npm) ^1.3.15
@ai-sdk/xai (npm) ^1.1.12
@electron/remote (npm) ^2.1.2
@modelcontextprotocol/sdk (npm) ^1.7.0
@vscode/sudo-prompt (npm) ^9.3.2
ai (npm) ^4.2.0
appdata-path (npm) ^1.0.0
avsc (npm) ^5.7.7
axios (npm) ^0.21.2
cbor (npm) ^9.0.1
compare-versions (npm) ^6.0.0-rc.2
core-js (npm) ^2.6.11
crypto-js (npm) ^4.2.0
csvtojson (npm) ^2.0.10
echarts (npm) ^5.4.3
electron-store (npm) ^8.1.0
electron-updater (npm) ^5.3.0
element-ui (npm) ^2.15.5
fix-path (npm) 3.0.0
fs-extra (npm) ^8.1.0
js-yaml (npm) ^4.1.0
json-bigint (npm) ^1.0.0
json2csv (npm) ^5.0.3
log4js (npm) ^6.4.0
moment (npm) ^2.29.4
monaco-editor (npm) ^0.25.2
mqtt (npm) 4.3.7
msgpackr (npm) ^1.11.0
pbkdf2 (npm) ^3.1.5
prismjs (npm) ^1.29.0
protobufjs (npm) ^7.5.4
reflect-metadata (npm) ^0.1.13
rxjs (npm) 6.2.0
sqlite3 (npm) 5.1.6
typedi (npm) ^0.8.0
typeorm (npm) ^0.2.34
typeorm-typedi-extensions (npm) ^0.2.3
vm2 (npm) ^3.9.18
vue (npm) ^2.6.12
vue-class-component (npm) ^7.0.2
vue-click-outside (npm) ^1.1.0
vue-clipboard2 (npm) ^0.3.1
vue-grid-layout (npm) 2.4.0
vue-i18n (npm) ^8.11.2
vue-json-tree-view (npm) ^2.1.6
vue-markdown (npm) ^2.2.4
vue-property-decorator (npm) ^8.5.1
vue-router (npm) ^3.4.9
vue-rx (npm) 6.2.0
vuex (npm) ^3.0.1
vuex-class (npm) ^0.3.2
xlsx (npm) ^0.17.0
xml-js (npm) ^1.6.11
zod (npm) ^3.24.2
@babel/plugin-proposal-nullish-coalescing-operator (npm) ^7.18.6
@babel/plugin-proposal-optional-chaining (npm) ^7.21.0
@types/chai (npm) ^4.1.0
@types/electron-devtools-installer (npm) ^2.2.0
@types/fs-extra (npm) ^8.0.0
@types/js-yaml (npm) ^4.0.5
@types/json-bigint (npm) ^1.0.4
@types/json2csv (npm) ^5.0.3
@types/lodash (npm) ^4.14.142
@types/mocha (npm) ^5.2.7
@types/node (npm) ^18.19.76
@types/pbkdf2 (npm) ^3.1.2
@types/prismjs (npm) ^1.26.0
@types/sqlite3 (npm) ^5.1.0
@types/ws (npm) ^8.2.1
@typescript-eslint/eslint-plugin (npm) ^3.8.0
@typescript-eslint/parser (npm) ^3.8.0
@vue/cli-plugin-babel (npm) ^3.12.1
@vue/cli-plugin-e2e-cypress (npm) ^3.12.1
@vue/cli-plugin-typescript (npm) ^3.12.1
@vue/cli-plugin-unit-mocha (npm) ^3.12.1
@vue/cli-service (npm) ^4.5.13
@vue/eslint-config-prettier (npm) ^6.0.0
@vue/test-utils (npm) 1.0.0-beta.29
babel-plugin-component (npm) ^1.1.1
babel-plugin-prismjs (npm) ^2.1.0
chai (npm) ^4.1.2
cross-env (npm) ^7.0.3
electron (npm) 39.2.7
electron-devtools-installer (npm) ^3.1.1
eslint (npm) 6.5.1
eslint-config-prettier (npm) ^6.11.0
eslint-plugin-prettier (npm) ^3.1.4
husky (npm) ^4.3.0
lint-staged (npm) ^10.4.2
monaco-editor-webpack-plugin (npm) ^4.0.0
prettier (npm) ^2.0.5
raw-loader (npm) ^4.0.2
sass (npm) ~1.32.13
sass-loader (npm) ^8.0.2
ts-node (npm) 10.9.2
typeorm-uml (npm) ^1.6.4
Files by Type (count)
TypeScript
335
Other (.png)
129
Vue
110
Markdown
46
JavaScript
37
JSON
25
SCSS
23
Other (no ext)
10
Text
10
YAML
7
Git Ignore
3
Other (.svg)
3
Files by Type (size)
Other (.png)
22MB
Other (.gif)
1MB
TypeScript
1MB
Lock File
1MB
Vue
1023KB
Markdown
277KB
Other (.icns)
267KB
Other (.ico)
157KB
JavaScript
148KB
Other (.svg)
104KB
SCSS
80KB
JSON
44KB

The LLM identified 5 files worth highlighting for reuse:

Implements MQTT topic wildcard matching (+ and #) with support for shared subscriptions and system topics. Used by both desktop and web apps for subscription filtering and message routing. Self-contained and reusable in any MQTT-related project.

file: src/utils/topicMatch.ts ↗ | tags: #mqtt #topic-matching #wildcard

Implements SCRAM (Salted Challenge Response Authentication Mechanism) with SHA-1, SHA-256, and SHA-512. Used for MQTT enhanced authentication. Self-contained and could be extracted for any SCRAM-based authentication need.

file: src/utils/scramAuth.ts ↗ | tags: #authentication #scram #security

Provides a generic RxJS-based message queue with buffering, filtering, and sharing capabilities. Used to manage high-throughput MQTT message streams. Demonstrates reactive programming pattern for rate-limited data processing.

file: src/utils/messageQueue.ts ↗ | tags: #rxjs #message-buffering #reactive

Implements MQTT topic wildcard matching in SQLite using recursive Common Table Expressions (CTEs). This allows efficient querying of messages by topic pattern without loading all data into memory. A non-obvious solution for implementing MQTT wildcards at the database level.

file: src/database/services/MessageService.ts ↗ | tags: #sql-cte #topic-query #recursive-query

Derives text colors for MQTT topics based on WCAG 2.1 contrast guidelines. Used to assign visually distinct colors to topics in the UI. Self-contained and could be reused in any application needing accessible color assignment.

file: src/utils/colors.ts ↗ | tags: #color #wcag #accessibility
Last analyzed: 2026-10-17 06:00:46.489770
Next check: 2026-10-24 06:00:46.484412
$ submit: