{"id":17053094,"url":"https://github.com/bschwind/mqtt-broker","last_synced_at":"2025-04-06T07:14:00.847Z","repository":{"id":41272618,"uuid":"222488158","full_name":"bschwind/mqtt-broker","owner":"bschwind","description":"A tokio-based MQTT v5 broker written in pure Rust [WIP]","archived":false,"fork":false,"pushed_at":"2023-06-02T01:42:32.000Z","size":254,"stargazers_count":149,"open_issues_count":20,"forks_count":26,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-30T06:06:51.687Z","etag":null,"topics":["broker","mqtt","pubsub","rust","tokio"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/bschwind.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-18T16:01:08.000Z","updated_at":"2025-03-26T03:19:51.000Z","dependencies_parsed_at":"2024-10-14T10:11:32.762Z","dependency_job_id":"fd54da6c-9bd4-4597-9a08-7ccd8ff6beec","html_url":"https://github.com/bschwind/mqtt-broker","commit_stats":{"total_commits":155,"total_committers":4,"mean_commits":38.75,"dds":"0.058064516129032295","last_synced_commit":"21e5bb07228869dd98ba51b9b9e59c144813506a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bschwind%2Fmqtt-broker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bschwind%2Fmqtt-broker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bschwind%2Fmqtt-broker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bschwind%2Fmqtt-broker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bschwind","download_url":"https://codeload.github.com/bschwind/mqtt-broker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247445672,"owners_count":20939958,"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":["broker","mqtt","pubsub","rust","tokio"],"created_at":"2024-10-14T10:11:20.362Z","updated_at":"2025-04-06T07:14:00.830Z","avatar_url":"https://github.com/bschwind.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mqtt-broker\n\nA tokio-based MQTT v5 broker written in Rust.\n\n## Project Goals\n\nThe goals for this project are fairly straightforward:\n\n* Adhere to the MQTT V5 [Spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html)\n* Be easily deployable as a single binary\n* Have reasonable performance and memory usage on a single node\n\nI originally started this project as a simple, open-source broker for any IoT products I might make. If I were to sell such products, I would want to allow users to run their own broker in case I can no longer run one, and it should be as easy as possible to do so.\n\nExtra features like a broker cluster or extra transport layers are _nice to have_ features, but won't be considered until the core V5 spec is implemented. The exception to this is the WebSocket transport, which is specifically mentioned in the spec and quite useful to have.\n\n## Comparison to Other Brokers\n\nWikipedia has a fairly [comprehensive list](https://en.wikipedia.org/wiki/Comparison_of_MQTT_implementations) of brokers to choose from.\n\n[rumqtt](https://github.com/bytebeamio/rumqtt) at the moment appears to be the most fully-featured broker. Take a look there first if you're looking for a more \"ready-to-go\" Rust broker.\n\n[PubSubRT](https://github.com/alttch/psrt/) is another interesting Rust-based broker. It's an alternative to MQTT, not an implementation of it.\n\n[NATS.rs](https://github.com/nats-io/nats.rs) seems really nice too, but I haven't looked further into it yet.\n\n## Spec Compliance\n\nThis broker is currently _not_ compliant with the MQTT V5 spec. Visit the [spec compliance milestone](https://github.com/bschwind/mqtt-broker/milestone/1) to see the current progress.\n\n## Dependencies\n- cargo\n- rustc (version 1.39 or later)\n\n## Build\n\n```\n$ cargo build --release\n```\n\n## Run\n\n```\n$ cargo run --release\n```\n\n## Testing\n\n```\n$ cargo test\n```\n\n## Code Format\n\nThe formatting options currently use nightly-only options.\n\n```\n$ cargo +nightly fmt\n```\n\n## Code Linting\n\n```\n$ cargo clippy\n```\n\n## Code Fuzzing\n\nFuzzing requires a nightly toolchain. Fuzzing for this project is currently confirmed to work with:\n\n```\nrustc 1.42.0-nightly (6d3f4e0aa 2020-01-25)\n```\n\n### Running\n\n```\ncargo install cargo-fuzz\ncargo +nightly fuzz run decoder_fuzzer_v311\ncargo +nightly fuzz run decoder_fuzzer_v500\ncargo +nightly fuzz run topic_filter_fuzzer\ncargo +nightly fuzz run topic_fuzzer\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbschwind%2Fmqtt-broker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbschwind%2Fmqtt-broker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbschwind%2Fmqtt-broker/lists"}