{"id":13470951,"url":"https://github.com/octoblu/meshblu","last_synced_at":"2025-05-15T09:05:48.259Z","repository":{"id":11417994,"uuid":"13868906","full_name":"octoblu/meshblu","owner":"octoblu","description":"Meshblu is a cross-protocol IoT machine-to-machine messaging system.","archived":false,"fork":false,"pushed_at":"2023-01-23T19:26:51.000Z","size":125795,"stargazers_count":816,"open_issues_count":20,"forks_count":179,"subscribers_count":113,"default_branch":"master","last_synced_at":"2025-05-10T20:37:53.785Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://meshblu.readme.io/","language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/octoblu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-25T18:35:52.000Z","updated_at":"2025-02-17T06:59:06.000Z","dependencies_parsed_at":"2023-02-13T08:00:21.861Z","dependency_job_id":null,"html_url":"https://github.com/octoblu/meshblu","commit_stats":null,"previous_names":[],"tags_count":124,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octoblu%2Fmeshblu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octoblu%2Fmeshblu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octoblu%2Fmeshblu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/octoblu%2Fmeshblu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/octoblu","download_url":"https://codeload.github.com/octoblu/meshblu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254310513,"owners_count":22049468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T16:00:37.738Z","updated_at":"2025-05-15T09:05:48.240Z","avatar_url":"https://github.com/octoblu.png","language":"CoffeeScript","readme":"# Meshblu\n\nMeshblu is a cross-protocol IoT machine-to-machine instant messaging system. It is the core messaging system for Citrix's [Octoblu](https://octoblu.com) IoT platform.\n\n**Supported Protocols:** HTTP, Socket.io, Websocket, MQTT, CoAP, AMQP, and XMPP.\n\n## Version 2.0\n\nWe have completely re-written Meshblu into many small components or micro-services. This Meshblu 1.0 repository is being preserved for historical reference.\n\nAll of the new Meshblu components are prefixed with `meshblu-core`. See a list [here](https://github.com/octoblu?utf8=%E2%9C%93\u0026query=meshblu-core).\n\nMeshblu is dependent on `node.js`, `redis`, `mongodb`, and either `npm` or `yarn`.\n\n### Production\n\nIn order to run a barebones `meshblu-core` cluster, you'll need the following repositories.\n\n1. [meshblu-core-dispatcher](https://github.com/octoblu/meshblu-core-dispatcher)\n1. [meshblu-core-worker-webhook](https://github.com/octoblu/meshblu-core-worker-webhook)\n1. [meshblu-core-protocol-adapter-http](https://github.com/octoblu/meshblu-core-protocol-adapter-http)\n\nAll `meshblu-core` services and workers have a `Dockerfile`.\n\nA production Meshblu cluster will consist of many services and workers. We currently don't have documentation for running a complex cluster but we are working on it.\n\n### Development\n\nFor development use, you can run the bundled barebones cluster:\n\n#### Installation\n\n```bash\ngit clone https://github.com/octoblu/meshblu\ncd meshblu\nnpm install\n```\n\n#### See Usage\n\n```bash\nnode command.js --help\n```\n\n#### Basic Example w/ env\n\n```bash\n#!/bin/bash\n\n# For development usage only\n\nenv \\\n  PRIVATE_KEY_BASE64=\"...\" \\\n  PUBLIC_KEY_BASE64=\"...\" \\\n  PEPPER='some-random-string' \\\n  MESHBLU_HTTP_PORT='3000' \\\n  node command.js\n```\n\nSee `./test-start.sh`\n\n#### Basic Example w/ args\n\n```bash\n#!/bin/bash\n\n# For development usage only\n\nnode command.js \\\n  --private-key-base64 '...' \\\n  --public-key-base64 '...' \\\n  --pepper 'some-other-random-string' \\\n  --meshblu-http-port 3000\n```\n\n#### Debug Mode\n\nIt is normal not see any debug output by default. If you want to see debug output, use the environment `DEBUG=*`, or something more specific, like `DEBUG=meshblu*`.\n\n#### It's Alive!\n\nTo verify that Meshblu 2.0 is alive and well, open [http://localhost:3000/status](http://localhost:3000/status) in a web browser or open a new terminal tab and run:\n\n````\ncurl http://localhost:3000/status\n````\nYou should see Meshblu 2.0 respond with:\n\n````\n{\"meshblu\":\"online\"}\n````\n\nYou can register a new IoT device by running:\n\n````\ncurl -X POST http://localhost:3000/devices\n````\n\nYou should see Meshblu 2.0 respond with an authentication UUID and Token as well as the device's security whitelist settings like this:\n\n````\n{ online: false,\n  discoverWhitelist: [ '*' ],\n  configureWhitelist: [ '*' ],\n  sendWhitelist: [ '*' ],\n  receiveWhitelist: [ '*' ],\n  uuid: 'b112c941-7973-4e2b-8dbe-b7bba27ae199',\n  meshblu:\n   { createdAt: '2016-11-15T16:07:07.801Z',\n     hash: 'Dy5NlIlmygrrnhp0Cln+zb77nHlYdobc+HwbRVzWdPs=' },\n  _id: '582b32ab67899618f48c2e1b',\n  token: 'd5bcf1a57f4ccefa0ecdc672c7090e7949cc8244' }\n````\n\n#### Meshblu API Documentation\n\nCheckout our [developer docs](http://developer.octoblu.com) for more information on our HTTP REST API as well as documentation for all other protocol APIs, security whitelists and blacklists, connectors, data forwarders, and overall Meshblu architecture.\n\n\n#### Introducing the Meshblu CLI\n\nWe have a convenient command line interface for simplifying the interaction with the Meshblu API.\n\n```bash\n# Install the meshblu cli utility\nnpm install --global meshblu-util\n# Register a device\nmeshblu-util register -U http://localhost:3000 \u003e meshblu.json\n# Fetch the device\nmeshblu-util get\n# Update the device\nmeshblu-util update -d '{\"type\": \"some-device\"}'\n# Fetch the updated device\nmeshblu-util get\n```\n\n\n## List of `meshblu-core` components\n\n### Workers\n\n1. [meshblu-core-dispatcher](https://github.com/octoblu/meshblu-core-dispatcher)\n1. [meshblu-core-worker-webhook](https://github.com/octoblu/meshblu-core-worker-webhook)\n\n### Protocol Adapters\n\n1. [meshblu-core-protocol-adapter-socket.io](https://github.com/octoblu/meshblu-core-protocol-adapter-socket.io)\n1. [meshblu-core-protocol-adapter-http](https://github.com/octoblu/meshblu-core-protocol-adapter-http)\n1. [meshblu-core-protocol-adapter-xmpp](https://github.com/octoblu/meshblu-core-protocol-adapter-xmpp)\n1. [meshblu-core-protocol-adapter-coap](https://github.com/octoblu/meshblu-core-protocol-adapter-coap)\n1. [meshblu-core-protocol-adapter-mqtt](https://github.com/octoblu/meshblu-core-protocol-adapter-mqtt)\n1. [meshblu-core-protocol-adapter-http-streaming](https://github.com/octoblu/meshblu-core-protocol-adapter-http-streaming)\n\n### Firehoses\n\n1. [meshblu-core-worker-firehose-amqp](https://github.com/octoblu/meshblu-core-worker-firehose-amqp)\n1. [meshblu-core-firehose-socket.io](https://github.com/octoblu/meshblu-core-firehose-socket.io)\n\n### Balancers\n\n1. [meshblu-haproxy](https://github.com/octoblu/meshblu-haproxy)\n1. [meshblu-balancer-http-streaming](https://github.com/octoblu/meshblu-balancer-http-streaming)\n1. [meshblu-balancer-firehose-socket.io](https://github.com/octoblu/meshblu-balancer-firehose-socket.io)\n1. [meshblu-balancer-xmpp](https://github.com/octoblu/meshblu-balancer-xmpp)\n1. [meshblu-balancer-websocket](https://github.com/octoblu/meshblu-balancer-websocket)\n1. [meshblu-balancer-mqtt](https://github.com/octoblu/meshblu-balancer-mqtt)\n1. [meshblu-balancer-coap](https://github.com/octoblu/meshblu-balancer-coap)\n1. [meshblu-balancer-socket.io](https://github.com/octoblu/meshblu-balancer-socket.io)\n\n### Core Datastores\n\n1. [meshblu-core-datastore](https://github.com/octoblu/meshblu-core-datastore)\n1. [meshblu-core-cache](https://github.com/octoblu/meshblu-core-cache)\n\n### Core Managers\n\n1. [meshblu-core-manager-token](https://github.com/octoblu/meshblu-core-manager-token)\n1. [meshblu-core-manager-device](https://github.com/octoblu/meshblu-core-manager-device)\n1. [meshblu-core-manager-hydrant](https://github.com/octoblu/meshblu-core-manager-hydrant)\n1. [meshblu-core-manager-whitelist](https://github.com/octoblu/meshblu-core-manager-whitelist)\n1. [meshblu-core-manager-webhook](https://github.com/octoblu/meshblu-core-manager-webhook)\n1. [meshblu-core-manager-subscription](https://github.com/octoblu/meshblu-core-manager-subscription)\n1. [meshblu-core-manager-root-token](https://github.com/octoblu/meshblu-core-manager-root-token)\n1. [meshblu-core-manager-messenger](https://github.com/octoblu/meshblu-core-manager-messenger)\n\n### Core Tasks\n\n1. [meshblu-core-task-black-list-token](https://github.com/octoblu/meshblu-core-task-black-list-token)\n1. [meshblu-core-task-check-broadcast-received-whitelist](https://github.com/octoblu/meshblu-core-task-check-broadcast-received-whitelist)\n1. [meshblu-core-task-check-broadcast-sent-whitelist](https://github.com/octoblu/meshblu-core-task-check-broadcast-sent-whitelist)\n1. [meshblu-core-task-check-configure-as-whitelist](https://github.com/octoblu/meshblu-core-task-check-configure-as-whitelist)\n1. [meshblu-core-task-check-configure-whitelist](https://github.com/octoblu/meshblu-core-task-check-configure-whitelist)\n1. [meshblu-core-task-check-discover-as-whitelist](https://github.com/octoblu/meshblu-core-task-check-discover-as-whitelist)\n1. [meshblu-core-task-check-discover-whitelist](https://github.com/octoblu/meshblu-core-task-check-discover-whitelist)\n1. [meshblu-core-task-check-discoveras-whitelist](https://github.com/octoblu/meshblu-core-task-check-discoveras-whitelist)\n1. [meshblu-core-task-check-forwarded-for](https://github.com/octoblu/meshblu-core-task-check-forwarded-for)\n1. [meshblu-core-task-check-receive-as-whitelist](https://github.com/octoblu/meshblu-core-task-check-receive-as-whitelist)\n1. [meshblu-core-task-check-receive-whitelist](https://github.com/octoblu/meshblu-core-task-check-receive-whitelist)\n1. [meshblu-core-task-check-root-token](https://github.com/octoblu/meshblu-core-task-check-root-token)\n1. [meshblu-core-task-check-send-as-whitelist](https://github.com/octoblu/meshblu-core-task-check-send-as-whitelist)\n1. [meshblu-core-task-check-send-whitelist](https://github.com/octoblu/meshblu-core-task-check-send-whitelist)\n1. [meshblu-core-task-check-token](https://github.com/octoblu/meshblu-core-task-check-token)\n1. [meshblu-core-task-check-token-black-list](https://github.com/octoblu/meshblu-core-task-check-token-black-list)\n1. [meshblu-core-task-check-token-cache](https://github.com/octoblu/meshblu-core-task-check-token-cache)\n1. [meshblu-core-task-check-update-device-is-valid](https://github.com/octoblu/meshblu-core-task-check-update-device-is-valid)\n1. [meshblu-core-task-check-whitelist-broadcast-as](https://github.com/octoblu/meshblu-core-task-check-whitelist-broadcast-as)\n1. [meshblu-core-task-check-whitelist-broadcast-received](https://github.com/octoblu/meshblu-core-task-check-whitelist-broadcast-received)\n1. [meshblu-core-task-check-whitelist-broadcast-sent](https://github.com/octoblu/meshblu-core-task-check-whitelist-broadcast-sent)\n1. [meshblu-core-task-check-whitelist-configure-as](https://github.com/octoblu/meshblu-core-task-check-whitelist-configure-as)\n1. [meshblu-core-task-check-whitelist-configure-received](https://github.com/octoblu/meshblu-core-task-check-whitelist-configure-received)\n1. [meshblu-core-task-check-whitelist-configure-sent](https://github.com/octoblu/meshblu-core-task-check-whitelist-configure-sent)\n1. [meshblu-core-task-check-whitelist-configure-update](https://github.com/octoblu/meshblu-core-task-check-whitelist-configure-update)\n1. [meshblu-core-task-check-whitelist-discover-as](https://github.com/octoblu/meshblu-core-task-check-whitelist-discover-as)\n1. [meshblu-core-task-check-whitelist-discover-view](https://github.com/octoblu/meshblu-core-task-check-whitelist-discover-view)\n1. [meshblu-core-task-check-whitelist-message-as](https://github.com/octoblu/meshblu-core-task-check-whitelist-message-as)\n1. [meshblu-core-task-check-whitelist-message-from](https://github.com/octoblu/meshblu-core-task-check-whitelist-message-from)\n1. [meshblu-core-task-check-whitelist-message-received](https://github.com/octoblu/meshblu-core-task-check-whitelist-message-received)\n1. [meshblu-core-task-check-whitelist-message-sent](https://github.com/octoblu/meshblu-core-task-check-whitelist-message-sent)\n1. [meshblu-core-task-create-session-token](https://github.com/octoblu/meshblu-core-task-create-session-token)\n1. [meshblu-core-task-create-subscription](https://github.com/octoblu/meshblu-core-task-create-subscription)\n1. [meshblu-core-task-deliver-webhook](https://github.com/octoblu/meshblu-core-task-deliver-webhook)\n1. [meshblu-core-task-enforce-message-rate-limit](https://github.com/octoblu/meshblu-core-task-enforce-message-rate-limit)\n1. [meshblu-core-task-enqueue-deprecated-webhooks](https://github.com/octoblu/meshblu-core-task-enqueue-deprecated-webhooks)\n1. [meshblu-core-task-enqueue-jobs-for-forward-broadcast-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-forward-broadcast-received)\n1. [meshblu-core-task-enqueue-jobs-for-forward-configure-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-forward-configure-received)\n1. [meshblu-core-task-enqueue-jobs-for-forward-unregister-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-forward-unregister-received)\n1. [meshblu-core-task-enqueue-jobs-for-subscriptions-broadcast-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-subscriptions-broadcast-received)\n1. [meshblu-core-task-enqueue-jobs-for-subscriptions-broadcast-sent](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-subscriptions-broadcast-sent)\n1. [meshblu-core-task-enqueue-jobs-for-subscriptions-configure-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-subscriptions-configure-received)\n1. [meshblu-core-task-enqueue-jobs-for-subscriptions-configure-sent](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-subscriptions-configure-sent)\n1. [meshblu-core-task-enqueue-jobs-for-subscriptions-message-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-subscriptions-message-received)\n1. [meshblu-core-task-enqueue-jobs-for-subscriptions-message-sent](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-subscriptions-message-sent)\n1. [meshblu-core-task-enqueue-jobs-for-subscriptions-unregister-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-subscriptions-unregister-received)\n1. [meshblu-core-task-enqueue-jobs-for-subscriptions-unregister-sent](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-subscriptions-unregister-sent)\n1. [meshblu-core-task-enqueue-jobs-for-webhooks-broadcast-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-webhooks-broadcast-received)\n1. [meshblu-core-task-enqueue-jobs-for-webhooks-broadcast-sent](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-webhooks-broadcast-sent)\n1. [meshblu-core-task-enqueue-jobs-for-webhooks-configure-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-webhooks-configure-received)\n1. [meshblu-core-task-enqueue-jobs-for-webhooks-configure-sent](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-webhooks-configure-sent)\n1. [meshblu-core-task-enqueue-jobs-for-webhooks-message-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-webhooks-message-received)\n1. [meshblu-core-task-enqueue-jobs-for-webhooks-message-sent](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-webhooks-message-sent)\n1. [meshblu-core-task-enqueue-jobs-for-webhooks-unregister-received](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-webhooks-unregister-received)\n1. [meshblu-core-task-enqueue-jobs-for-webhooks-unregister-sent](https://github.com/octoblu/meshblu-core-task-enqueue-jobs-for-webhooks-unregister-sent)\n1. [meshblu-core-task-enqueue-webhooks](https://github.com/octoblu/meshblu-core-task-enqueue-webhooks)\n1. [meshblu-core-task-find-and-update-device](https://github.com/octoblu/meshblu-core-task-find-and-update-device)\n1. [meshblu-core-task-forbidden](https://github.com/octoblu/meshblu-core-task-forbidden)\n1. [meshblu-core-task-get-authorized-subscription-types](https://github.com/octoblu/meshblu-core-task-get-authorized-subscription-types)\n1. [meshblu-core-task-get-broadcast-subscription-types](https://github.com/octoblu/meshblu-core-task-get-broadcast-subscription-types)\n1. [meshblu-core-task-get-device](https://github.com/octoblu/meshblu-core-task-get-device)\n1. [meshblu-core-task-get-device-public-key](https://github.com/octoblu/meshblu-core-task-get-device-public-key)\n1. [meshblu-core-task-get-global-public-key](https://github.com/octoblu/meshblu-core-task-get-global-public-key)\n1. [meshblu-core-task-get-status](https://github.com/octoblu/meshblu-core-task-get-status)\n1. [meshblu-core-task-get-subscriptions](https://github.com/octoblu/meshblu-core-task-get-subscriptions)\n1. [meshblu-core-task-migrate-root-token](https://github.com/octoblu/meshblu-core-task-migrate-root-token)\n1. [meshblu-core-task-no-content](https://github.com/octoblu/meshblu-core-task-no-content)\n1. [meshblu-core-task-protect-your-as](https://github.com/octoblu/meshblu-core-task-protect-your-as)\n1. [meshblu-core-task-publish-broadcast-received](https://github.com/octoblu/meshblu-core-task-publish-broadcast-received)\n1. [meshblu-core-task-publish-configure-received](https://github.com/octoblu/meshblu-core-task-publish-configure-received)\n1. [meshblu-core-task-publish-deprecated-subscriptions](https://github.com/octoblu/meshblu-core-task-publish-deprecated-subscriptions)\n1. [meshblu-core-task-publish-message](https://github.com/octoblu/meshblu-core-task-publish-message)\n1. [meshblu-core-task-publish-message-received](https://github.com/octoblu/meshblu-core-task-publish-message-received)\n1. [meshblu-core-task-publish-subscriptions](https://github.com/octoblu/meshblu-core-task-publish-subscriptions)\n1. [meshblu-core-task-publish-unregister-received](https://github.com/octoblu/meshblu-core-task-publish-unregister-received)\n1. [meshblu-core-task-register-device](https://github.com/octoblu/meshblu-core-task-register-device)\n1. [meshblu-core-task-reject-your-as](https://github.com/octoblu/meshblu-core-task-reject-your-as)\n1. [meshblu-core-task-remove-device-cache](https://github.com/octoblu/meshblu-core-task-remove-device-cache)\n1. [meshblu-core-task-remove-root-session-token](https://github.com/octoblu/meshblu-core-task-remove-root-session-token)\n1. [meshblu-core-task-remove-subscription](https://github.com/octoblu/meshblu-core-task-remove-subscription)\n1. [meshblu-core-task-remove-token-cache](https://github.com/octoblu/meshblu-core-task-remove-token-cache)\n1. [meshblu-core-task-reset-token](https://github.com/octoblu/meshblu-core-task-reset-token)\n1. [meshblu-core-task-revoke-all-tokens](https://github.com/octoblu/meshblu-core-task-revoke-all-tokens)\n1. [meshblu-core-task-revoke-session-token](https://github.com/octoblu/meshblu-core-task-revoke-session-token)\n1. [meshblu-core-task-revoke-token-by-query](https://github.com/octoblu/meshblu-core-task-revoke-token-by-query)\n1. [meshblu-core-task-search-device](https://github.com/octoblu/meshblu-core-task-search-device)\n1. [meshblu-core-task-search-token](https://github.com/octoblu/meshblu-core-task-search-token)\n1. [meshblu-core-task-send-message](https://github.com/octoblu/meshblu-core-task-send-message)\n1. [meshblu-core-task-send-message-2](https://github.com/octoblu/meshblu-core-task-send-message-2)\n1. [meshblu-core-task-unregister-device](https://github.com/octoblu/meshblu-core-task-unregister-device)\n1. [meshblu-core-task-update-device](https://github.com/octoblu/meshblu-core-task-update-device)\n1. [meshblu-core-task-update-message-rate](https://github.com/octoblu/meshblu-core-task-update-message-rate)\n\n### Clients\n\n1. [node-meshblu-socket.io](https://github.com/octoblu/node-meshblu-socket.io)\n1. [node-meshblu-firehose-socket.io](https://github.com/octoblu/node-meshblu-firehose-socket.io)\n1. [node-meshblu-http](https://github.com/octoblu/node-meshblu-http)\n1. [node-meshblu-websocket](https://github.com/octoblu/node-meshblu-websocket)\n1. [node-meshblu-mqtt](https://github.com/octoblu/node-meshblu-mqtt)\n1. [node-meshblu-xmpp](https://github.com/octoblu/node-meshblu-xmpp)\n1. [node-meshblu-amqp](https://github.com/octoblu/node-meshblu-amqp)\n1. [node-meshblu-coap](https://github.com/octoblu/node-meshblu-coap)\n1. [browser-meshblu-http](https://github.com/octoblu/browser-meshblu-http)\n1. [swift-meshblu-http](https://github.com/octoblu/swift-meshblu-http)\n\n### Utilities\n\n1. [meshblu-util](https://github.com/octoblu/meshblu-util)\n\n## Legacy Meshblu 1.x\n\nView it [here](https://github.com/octoblu/meshblu/blob/legacy-meshblu/README.md)\n","funding_links":[],"categories":["CoffeeScript","Hardware Com","IoT 笔记"],"sub_categories":["Others","编程环境"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctoblu%2Fmeshblu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foctoblu%2Fmeshblu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctoblu%2Fmeshblu/lists"}