Skip to main content

Bluetooth identity beacon for headless Linux devices — returns hostname, mDNS, and active network interfaces over RFCOMM.

Project description

syryn

syryn

Bluetooth identity beacon for headless Linux devices.

The name comes from Сирин — a bird from Slavic mythology known for its voice. Syryn speaks when asked: it listens on a Bluetooth RFCOMM channel and responds with the device's hostname, mDNS address, and active network interfaces.


What it does

Run syryn on a headless mini-PC. From any nearby Bluetooth device, send STATUS — and get back:

hostname: panteon-john
mdns: panteon-john.local
eth0: 192.168.0.131
wlan0: 192.168.1.44
external_ip: 93.12.34.56

No display needed. No SSH session. No prior knowledge of the IP address.


Install & quick start

1. System packages (one-time)

PyBluez2 requires BlueZ headers. Install them from the system package manager — do not use pip install PyBluez2 directly, as the PyPI sdist has a known build issue.

Debian / Ubuntu / Xubuntu:

sudo apt install bluez python3-bluez python3-dbus python3-gi

Fedora / RHEL:

sudo dnf install bluez python3-PyBluez python3-dbus python3-gobject

2. Enable Bluetooth

sudo systemctl enable bluetooth --now   # start and enable on boot

rfkill list                             # check if adapter is blocked
sudo rfkill unblock bluetooth           # unblock if needed

bluetoothctl discoverable on            # make device visible

To keep the device permanently discoverable, add DiscoverableTimeout = 0 to /etc/bluetooth/main.conf and restart bluetooth.service.

3. Install syryn

syryn does not pull PyBluez2 as a pip dependency — it uses the system-installed bluetooth module. Install with --system-site-packages so it can find it:

pipx install syryn --system-site-packages

Or without pipx:

pip install syryn

4. Run

syryn               # auto-pairing, no PIN
syryn --pin 1234    # hardcoded PIN for all incoming pairs
syryn -q            # quiet mode, no log output

Syryn starts a Bluetooth RFCOMM server and registers a pairing agent so connecting devices are accepted automatically (no manual PIN prompt). The device name visible to other devices is the system hostname (set via hostnamectl set-hostname <name>).

5. Connect from another device

From any device with a Bluetooth terminal app (e.g. Serial Bluetooth Terminal on Android):

  1. Scan for Bluetooth devices — the headless device appears by hostname
  2. Pair (accepted automatically by syryn)
  3. Connect to the Syryn service (Serial Port)
  4. Send STATUS — receive hostname, mDNS, interfaces, external IP

Requirements

  • Linux with BlueZ (bluetoothd running)
  • Python 3.10+
  • python3-bluez (system package) — Bluetooth support
  • python3-dbus + python3-gi (system packages) — auto-pairing agent
  • psutil, requests (installed automatically via pip)

Part of the SIMARGL toolkit

syryn is one of seven tools that together form an intellectual development support system:

Tool Role
simargl Task-to-code retrieval — given a task description, finds which files and modules are likely affected, using semantic similarity over git history
svitovyd Project map — scans any codebase and produces a structural map of definitions and cross-file dependencies; exposes it as an MCP server
1bcoder AI coding assistant for small local models — surgical context management, agents, parallel inference, proc scripts
yasna Session memory — indexes conversations from all AI agents so you can find what was discussed, when, and where
radogast Context drift monitor — measures how far an AI agent's conversation has drifted from the original task
vyrii Local AI web UI — chat, translate, web research, RAG, and file management via Gradio; powered by Ollama or any OpenAI-compatible backend
syryn Bluetooth identity beacon — returns hostname, mDNS, and active network interfaces for headless devices

(c) 2026 Stanislav Zholobetskyi, Oleh Andriichuk Institute for Information Recording, National Academy of Sciences of Ukraine, Kyiv PhD research: «Intelligent Technology for Software Development and Maintenance Support»

Project details


Download files

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

Source Distribution

syryn-0.1.3.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

syryn-0.1.3-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file syryn-0.1.3.tar.gz.

File metadata

  • Download URL: syryn-0.1.3.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for syryn-0.1.3.tar.gz
Algorithm Hash digest
SHA256 bd623b0a8f27ad709060699d62756a1177c2139afbb5497ab13c84c832ad4b1e
MD5 52653be280eeb927970a67f44edab127
BLAKE2b-256 729855e43c2feeb5b8030af0779f26430c9df86e7c61893b95629aac037eea95

See more details on using hashes here.

File details

Details for the file syryn-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: syryn-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for syryn-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a6a3e0dd0cb330dcb94ca0456e2cb3774733a37cf1692ee9b5bcae3ba5de99ff
MD5 363c7a16e6e758898c77bd159404f086
BLAKE2b-256 4ac6bf86588dfd62d2c4a8024ce7d7a5bfaf44ffc5d72426492c2043961993a2

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 Pingdom Monitoring Sentry Error logging StatusPage Status page