Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

HiveMind-presence

Local-network presence and discovery for HiveMind nodes. A node announces itself on the LAN so satellites can find the hub without being told its IP address, and a satellite scans the LAN to discover reachable hubs.

It sits next to hivemind-core (the hub) and the client libraries. The hub advertises its WebSocket address with hivemind-presence announce. A client uses hivemind-presence scan (or the LocalDiscovery API) to locate it and open a connection.

Discovery transports

  • mDNS / Zeroconf: multicast DNS service discovery. The optional zeroconf dependency is LGPL and imported lazily. Install it to enable mDNS.
  • UPnP / SSDP: an SSDP server advertises a UPnP device descriptor. The scanner discovers it over SSDP.

The roadmap moves the default transport to HiveBeacon, a zero-dependency UDP broadcast beacon absorbed from the archived HiveBeacon project, and keeps mDNS as an optional transport. UPnP is being retired. Until the beacon transport ships, mDNS and UPnP are the available transports.

Prerequisites

  • Python 3.10+
  • A HiveMind hub (hivemind-core) reachable on the LAN for scan to find anything.
  • For mDNS: the optional zeroconf package (pip install zeroconf). Without it, announce/scan silently fall back to UPnP only.

Install

pip install hivemind-presence

From source:

git clone https://github.com/JarbasHiveMind/HiveMind-presence
cd HiveMind-presence
pip install -e .

To include mDNS support:

pip install hivemind-presence zeroconf

Quickstart

On the hub (advertise the node):

hivemind-presence announce --port 5678 --name living_room

On a satellite (discover hubs on the LAN):

hivemind-presence scan
            HiveMind Nodes
┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━┓
┃ Friendly Name ┃ Host         ┃ Port ┃
┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━┩
│   living_room │ 192.168.1.9  │ 5678 │
│       kitchen │ 192.168.1.13 │ 5678 │
└───────────────┴──────────────┴──────┘

Both announce and scan use mDNS by default (--zeroconf true --upnp false). Pass --upnp true to add the UPnP/SSDP transport.

Programmatic use

Announce from a hub process:

from hivemind_presence import LocalPresence

presence = LocalPresence(port=5678, name="living_room")
presence.start()
# ... run your hub ...
presence.stop()

Discover and connect from a client:

from hivemind_presence import LocalDiscovery

disc = LocalDiscovery()
for node in disc.scan(timeout=25):
    bus = node.connect(key="my-access-key", crypto_key="my-crypto-key")
    break

HiveMindNode.connect() returns a running HiveMessageBusClient connected to the discovered hub.

Configuration

announce and scan options:

Option Default Description
--port 5678 HiveMind WebSocket port to advertise (announce only).
--name HiveMind-Node Friendly device name (announce only).
--service-type HiveMind-websocket Service identifier matched between announce and scan.
--zeroconf true Use the mDNS/Zeroconf transport.
--upnp false Use the UPnP/SSDP transport.
--ssl false Advertise SSL support (announce only).

At least one transport must be enabled for scan. LocalDiscovery raises an error if both are disabled.

Documentation

See docs/:

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hivemind_presence-0.0.5a3.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hivemind_presence-0.0.5a3-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file hivemind_presence-0.0.5a3.tar.gz.

File metadata

  • Download URL: hivemind_presence-0.0.5a3.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hivemind_presence-0.0.5a3.tar.gz
Algorithm Hash digest
SHA256 eea7bab4976a9013b004a2bcb3c57b619882685d7d448a6e2233ff341fe591e3
MD5 40f6ed739687717853a0743308677d99
BLAKE2b-256 b4b75d05b9574f9beb3e59c6b3f863943ad134af7e6cd983180a9acf7c02ccbb

See more details on using hashes here.

File details

Details for the file hivemind_presence-0.0.5a3-py3-none-any.whl.

File metadata

File hashes

Hashes for hivemind_presence-0.0.5a3-py3-none-any.whl
Algorithm Hash digest
SHA256 f2e0c735b62a387375f88cf642faa3b55e60b587a01903d6ded67da79a7521ba
MD5 30d2f8a92994636b968820f47d407fa4
BLAKE2b-256 27bfc575bfffa809a9fd3e7f416547ac0a25ed8aec930bc47da487e766efdc1b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page