aMQTT is an open source MQTT client and broker implementation in python
 
 
 
 
 
 
Go to file
Andrew Mirsky b7fd9e1afc
Determine auth & topic access via external http server (#262)
* initial structure of http acl

* progress

* Yakifo/amqtt#258 (in progress): a plugin which requests authentication via http

* Yakifo/amqtt#258 (in progress): a plugin which requests topic acl via http

* renaming plugin

* StrEnum support for python 3.10

* when using python 3.10, 'localhost' resolves to the wrong ip address, so we excplicitly use the loopback address. our polyfill for StrEnum in python 3.10, needs to get the value instead of its implicit converstion in other versions

* add documentation, expand functionality to handle  case including test cases

* refactoring test fixtures for HttpAuthAclPlugin

* further refactoring of test cases to eliminate duplicate code

* add comments to test code

* rename to more accurately describe user authentication and topic authorization

* config option name change

* cleaning up documentation on the Topic ACL Plugin

* simplificiation based on feedback

* updated doc

* incorporated feedback
2025-07-26 15:47:49 -04:00
.github path tweaks for v0.11.0 release 2025-06-17 10:58:48 -04:00
amqtt Determine auth & topic access via external http server (#262) 2025-07-26 15:47:49 -04:00
docs Determine auth & topic access via external http server (#262) 2025-07-26 15:47:49 -04:00
docs_test test.amqtt.io dashboard cleanup (#278) 2025-07-25 12:05:33 -04:00
docs_web path tweaks for v0.11.0 release 2025-06-17 10:58:48 -04:00
samples add additional documentation for custom plugins 2025-07-10 12:29:59 -04:00
scripts refactor: update base project confs 2025-04-04 21:06:41 +02:00
tests Determine auth & topic access via external http server (#262) 2025-07-26 15:47:49 -04:00
.codecov.yml refactor: base cleanup and bring project to run with test cases 2024-12-19 20:34:09 +01:00
.coveragerc refactor: base cleanup and bring project to run with test cases 2024-12-19 20:34:09 +01:00
.dockerignore change version numbers for release of 0.11.2 2025-07-09 12:27:22 -04:00
.gitattributes refactor: base cleanup and bring project to run with test cases 2024-12-19 20:34:09 +01:00
.gitignore structure needed as the basis for several 0.11.3 improvements 2025-07-10 11:23:56 -04:00
.pre-commit-config.yaml using 'n' messages to force amqtt_sub to exit, instead of SIGINT which seems to cause the process to force quit instead of causing a keyboard interupt 2025-06-03 18:29:13 -04:00
.readthedocs.yaml running pytest to generate htmlcov for readthedocs 2025-06-12 14:20:31 -04:00
CODE_OF_CONDUCT.md updating client documentation by converting rst format into google docstring params, including examples from reference file 2025-05-21 21:59:12 -04:00
CONTRIBUTING.md updating client documentation by converting rst format into google docstring params, including examples from reference file 2025-05-21 21:59:12 -04:00
Dockerfile dockerfile build update to support psutils 2025-06-27 13:40:21 -04:00
LICENSE.md updating client documentation by converting rst format into google docstring params, including examples from reference file 2025-05-21 21:59:12 -04:00
MANIFEST.in tox and travis are not used anymore 2021-03-13 18:28:01 +01:00
Makefile structure needed as the basis for several 0.11.3 improvements 2025-07-10 11:23:56 -04:00
README.md fixed broken link 2025-06-25 19:49:50 -04:00
SECURITY.md refactor: base cleanup and bring project to run with test cases 2024-12-19 20:34:09 +01:00
SUPPORT.md consolidating configuration documentation for both broker and client. including making sure there's consistency in default configuration 2025-05-28 07:45:12 -04:00
mkdocs.rtd.yml Structured broker and client configurations (#269) 2025-07-26 12:37:25 -04:00
mkdocs.web.yml updating docs, version numbers and ssl 2025-06-16 15:24:23 -04:00
pyproject.toml Determine auth & topic access via external http server (#262) 2025-07-26 15:47:49 -04:00
uv.lock Determine auth & topic access via external http server (#262) 2025-07-26 15:47:49 -04:00

README.md

MIT licensed CI CodeQL Read the Docs Discord Python Version Python Wheel PyPI

docs/assets/amqtt.svg

aMQTT is an open source MQTT broker and client1, natively implemented with Python's asyncio.

Features

  • Full set of MQTT 3.1.1 protocol specifications
  • Communication over TCP and/or websocket, including support for SSL/TLS
  • Support QoS 0, QoS 1 and QoS 2 messages flow
  • Client auto-reconnection on network lost
  • Functionality expansion; plugins included: authentication and $SYS topic publishing

Installation

amqtt is available on PyPI

$ pip install amqtt

Documentation

Available on Read the Docs.

Containerization

Launch from DockerHub

$ docker run -d -p 1883:1883 amqtt/amqtt:latest

Testing

The amqtt project runs a test aMQTT broker/server at test.amqtt.io which supports: MQTT, MQTT over TLS, websocket, secure websockets.

Support

Bug reports, patches and suggestions welcome! Just open an issue or join the discord community.

Python Version Compatibility

Version hbmqtt compatibility Supported Python Versions
0.10.x yes 2 3.7 - 3.9
0.11.x no 3 3.10 - 3.13

  1. Forked from HBMQTT after it was deprecated by the original author. ↩︎

  2. drop-in replacement ↩︎

  3. module renamed and small API differences ↩︎