Dataplicity Lomond

Dataplicity leverages many supporting technologies in the provision of our remote device management service (, but few of which are more critical in the provision of the service than Websockets.

To that end, we've tried and tested lots of different Python Websocket client libraries under probably some of the harshest network conditions that you'd ever expect. We patched a few of them, learnt a lot about (flakey) browser support for Websockets, discovered Autobahn, worked around bugs, and dug deep into the inner workings of Python. Eventually it became clear that the only way we could meet the high expectations of our users was to write our own library.

So we wrote "Lomond", named after a pretty spot just South of the Scottish highlands (

We've now finished integrating this library into both Dataplicity Agent and our production infrastructure, resulting in significant reliability improvements in even the trickiest of network conditions, and huge performance improvements at high load. If you haven't upgraded your agent in a while, we recommend you update existing agents to the newest version to get the full benefit of these enhancements (

When we first built the technology behind Dataplicity, it was because we had a need for robust management tools for devices we were building in remote locations. After much research, we couldn't find what we needed off the shelf, so we built it ourselves. When it became apparent that this new technology had application far beyond anything we had originally expected, we made it available as a hosted service so we could continue to invest in it and help out those who found themselves in a similar situation.

Today we find ourselves in a similar situation with Lomond: as we were building the code, it was very apparent that to limit Lomond to our own (admittedly extensive) requirements was to limit its usefulness. So we've made the first production release of Lomond available under the BSD 3-Clause licence.


-- Elliot Mackenzie (Dataplicity Founder)