No description
  • C 55.1%
  • Python 28.3%
  • C++ 6.8%
  • HTML 2.1%
  • Makefile 2.1%
  • Other 5.5%
Find a file
2026-05-27 11:20:34 +01:00
.github Windows: Use github.workspace instead of LOCALAPPDATA for cache dir 2026-05-27 11:20:34 +01:00
apps signal: Fix incorrect function arg types 2026-05-27 00:21:34 +01:00
client Clients: Fix assumption that long is >32 bits. 2026-05-03 01:17:26 +01:00
cmake Enable and fix tests on Mac 2026-01-27 10:02:08 +00:00
common
dashboard Dashboard string improvements 2026-01-13 12:44:04 +00:00
deps Minor compiler warning fixes 2026-01-21 16:58:42 +00:00
doc
docker Docker ubuntu: Migrate build to cmake 2026-05-18 15:47:52 +01:00
examples
fuzzing Experimental fuzz memory checking 2026-05-03 09:40:03 +01:00
include Formatting fixes 2026-02-13 13:20:22 +00:00
installer Release prep for 2.1.2 2026-02-09 09:29:02 +00:00
lib cmake: Refactor threadlib linking 2026-05-03 01:17:26 +01:00
libcommon Fix PATH_MAX redefinition on mingw64 2026-05-03 13:58:07 +01:00
logo
make
man Forbid running with persistence true and a plugin at the same time. 2026-02-07 23:25:24 +00:00
misc
plugins Fix unlikely use-after free on out of memory 2026-04-16 21:35:46 +01:00
security
service
snap Release prep for 2.1.2 2026-02-09 09:29:02 +00:00
src Test: Fix incorrect address, and give better http-api failure msg 2026-05-18 22:53:52 +01:00
test Test: Fix incorrect address, and give better http-api failure msg 2026-05-18 22:53:52 +01:00
www Improve sqlite docs 2026-02-17 00:19:24 +00:00
.editorconfig
.gitignore
.uncrustify.cfg
about.html
aclfile.example
buildtest.py Tests: Disable buildtest random tests 2026-05-03 01:17:26 +01:00
ChangeLog.txt Fix unix sockets support on Windows 2026-02-23 23:16:43 +00:00
CITATION.cff
cmake-build.bat Add Window batch file for easy building. 2026-05-03 01:17:26 +01:00
CMakeLists.txt Tests: Add path for tests on Windows 2026-05-03 01:17:26 +01:00
codecov.yml
config.h Fix build on linux/glibc WITH_ADNS=yes 2026-01-16 13:33:13 +00:00
config.mk Remove unused compile options 2026-04-16 21:35:46 +01:00
CONTRIBUTING.md
edl-v10
epl-v20
format.sh
libmosquitto.pc.in
libmosquittopp.pc.in
LICENSE.txt
Makefile Update Docker build command in Makefile 2026-02-04 00:11:52 +00:00
mosquitto.conf
NOTICE.md
pskfile.example
pwfile.example
README-compiling.md List some platform specific build dependencies 2026-05-13 19:38:00 +01:00
README-letsencrypt.md
README-tests.md
README-windows.txt
README.md
requirements.txt Enable Windows tests on CI 2026-05-03 01:17:26 +01:00
run_tests.py
SECURITY.md
set-version.sh Release prep for 2.1.2 2026-02-09 09:29:02 +00:00
THANKS.txt
vcpkg.json Tests: Add vcpkg dependencies 2026-05-03 01:17:26 +01:00

Eclipse Mosquitto

Mosquitto is an open source implementation of a server for version 5.0, 3.1.1, and 3.1 of the MQTT protocol. It also includes a C and C++ client library, the mosquitto_pub mosquitto_rr, and mosquitto_sub utilities for publishing and subscribing, and the mosquitto_ctrl, mosquitto_signal, and mosquitto_passwd applications for helping administer the broker.

See the following links for more information on MQTT:

Mosquitto project information is available at the following locations:

There is also a public test server available at https://test.mosquitto.org/

Installing

See https://mosquitto.org/download/ for details on installing binaries for various platforms.

Quick start

If you have installed a binary package the broker should have been started automatically. If not, it can be started with a very basic configuration:

mosquitto

Then use mosquitto_sub to subscribe to a topic:

mosquitto_sub -t 'test/topic' -v

And to publish a message:

mosquitto_pub -t 'test/topic' -m 'hello world'

Note that starting the broker like this allows anonymous/unauthenticated access but only from the local computer, so it's only really useful for initial testing.

If you want to have clients from another computer connect, you will need to provide a configuration file. If you have installed from a binary package, you will probably already have a configuration file at somewhere like /etc/mosquitto/mosquitto.conf. If you've compiled from source, you can write your config file then run as mosquitto -c /path/to/mosquitto.conf.

To start your config file you define a listener and you will need to think about what authentication you require. It is not advised to run your broker with anonymous access when it is publicly available.

For details on how to do this, look at the authentication methods available and the dynamic security plugin.

Documentation

Documentation for the broker, clients and client library API can be found in the man pages, which are available online at https://mosquitto.org/man/. There are also pages with an introduction to the features of MQTT, the mosquitto_passwd utility for dealing with username/passwords, and a description of the configuration file options available for the broker.

Detailed client library API documentation can be found at https://mosquitto.org/api/

Building from source

To build from source the recommended route for end users is to download the archive from https://mosquitto.org/download/.

On Windows and Mac, use cmake to build. On other platforms, just run make to build. For Windows, see also README-windows.md.

If you are building from the git repository then the documentation will not already be built. Use make binary to skip building the man pages, or install docbook-xsl on Debian/Ubuntu systems.

Build Dependencies

  • cJSON - required
  • c-ares (libc-ares-dev on Debian based systems) - optional, enable with WITH_SRV=yes
  • libedit - for mosquitto_ctrl interactive shell - optional, disable with WITH_EDITLINE=no
  • libmicrohttpd - for broker http api support - optional, disable with WITH_HTTP_API=no
  • openssl (libssl-dev on Debian based systems) - optional, disable with WITH_TLS=no
  • pthreads - for client library thread support. This is required to support the mosquitto_loop_start() and mosquitto_loop_stop() functions. If compiled without pthread support, the library isn't guaranteed to be thread safe.
  • sqlite3 - for persistence support in the broker - optional, disable with WITH_SQLITE=no
  • uthash / utlist - bundled versions of these headers are provided, disable their use with WITH_BUNDLED_DEPS=no
  • xsltproc (xsltproc and docbook-xsl on Debian based systems) - only needed when building from git sources - disable with WITH_DOCS=no

Equivalent options for enabling/disabling features are available when using the CMake build. It is also possible to enable/disable building of specific plugins in the CMake build.

Building mosquitto - Using vcpkg

You can download and install mosquitto using the vcpkg dependency manager:

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install mosquitto

The mosquitto port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please create an issue or pull request on the vcpkg repository.

Credits

Mosquitto was written by Roger Light roger@atchoo.org. There have been substantial contributions by other people in the community both in terms of code and other help.