Lightweight MDM control server for LBE VR headsets (PICO), with a web console and LAN discovery.
Project description
styly-mdm
The control server for STYLY-MDM — a lightweight Mobile Device Management system for Location Based Experience (LBE) VR headsets. It bridges PICO VR HMDs and a browser-based admin console, letting you launch apps and install APKs on many headsets at once over the LAN.
STYLY-MDM is designed for use within a local area network (LAN). It has no authentication. Do not expose the server to the public internet.
Install & run
Run without cloning the repository:
# One-off, no install (recommended):
uvx styly-mdm
# Or install, then run:
pip install styly-mdm
styly-mdm
The server starts on port 7070 and prints its LAN IP addresses. Open
http://<server-ip>:7070 in a browser for the web console. Devices on the LAN
discover the server automatically via UDP broadcast (port 7071).
Configuration
A command-line flag overrides the corresponding environment variable.
| Option | Env var | Flag | Default |
|---|---|---|---|
| HTTP/WebSocket port | MDM_WS_PORT |
--port |
7070 |
| UDP discovery port | MDM_DISCOVERY_PORT |
— | 7071 |
| Data directory (uploaded APKs, pushed bundles, device registry) | MDM_DATA_DIR |
--data-dir |
current directory |
| Simultaneous device downloads, server-wide | MDM_MAX_CONCURRENT_TRANSFERS |
--max-concurrent-transfers |
5 |
| Seconds a device may hold a transfer slot | MDM_TRANSFER_TIMEOUT |
— | 600 |
The data directory holds everything the server persists: uploaded APKs
(<data-dir>/apks/), pushed file bundles (<data-dir>/bundles/), and the device
registry (<data-dir>/device_registry.json). It defaults to the directory the
server is started from, so uvx styly-mdm in a fresh directory comes up with no
devices or groups.
Transfer throttling bounds how many devices download at once — one server-wide pool shared by every install and push/sync job; the rest queue until a slot frees.
Only one server may answer discovery on a given port: the server probes on
startup and exits if another STYLY-MDM server already responds on its discovery
port. Run a second server alongside the first by giving it a different
MDM_DISCOVERY_PORT and MDM_WS_PORT.
You can also start it as a module: python -m styly_mdm.
Documentation
Full documentation, protocol references, and the Android MDM client live in the project repository: https://github.com/styly-dev/STYLY-MDM.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file styly_mdm-0.3.0.tar.gz.
File metadata
- Download URL: styly_mdm-0.3.0.tar.gz
- Upload date:
- Size: 102.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
856940a559e84cbc6b79788309e821ca79002cbcafeab5d6d1fd6e94b57aac83
|
|
| MD5 |
5bfb2079b7148715b7c8385bd2f1654e
|
|
| BLAKE2b-256 |
e474652f494cad07923e51277cd42a87c6ee8ece8e59e9d6761477da872f1bfa
|
Provenance
The following attestation bundles were made for styly_mdm-0.3.0.tar.gz:
Publisher:
publish-pypi.yml on styly-dev/STYLY-MDM
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
styly_mdm-0.3.0.tar.gz -
Subject digest:
856940a559e84cbc6b79788309e821ca79002cbcafeab5d6d1fd6e94b57aac83 - Sigstore transparency entry: 2146707745
- Sigstore integration time:
-
Permalink:
styly-dev/STYLY-MDM@ca2a454d540cbe716214fc90a098a8fa143ba8ca -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/styly-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@ca2a454d540cbe716214fc90a098a8fa143ba8ca -
Trigger Event:
release
-
Statement type:
File details
Details for the file styly_mdm-0.3.0-py3-none-any.whl.
File metadata
- Download URL: styly_mdm-0.3.0-py3-none-any.whl
- Upload date:
- Size: 71.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5050fff06dfaa8c63b25f6b7a5802ea244c0d8ffc42c4384872d6c47da7e4598
|
|
| MD5 |
f4f0a73ce4223d7685caf5a09ab3f7be
|
|
| BLAKE2b-256 |
ed7913aef81f006cc25f2cc1401f1c6392a4d212e0cb6f32e51a586f12153f93
|
Provenance
The following attestation bundles were made for styly_mdm-0.3.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on styly-dev/STYLY-MDM
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
styly_mdm-0.3.0-py3-none-any.whl -
Subject digest:
5050fff06dfaa8c63b25f6b7a5802ea244c0d8ffc42c4384872d6c47da7e4598 - Sigstore transparency entry: 2146707757
- Sigstore integration time:
-
Permalink:
styly-dev/STYLY-MDM@ca2a454d540cbe716214fc90a098a8fa143ba8ca -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/styly-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@ca2a454d540cbe716214fc90a098a8fa143ba8ca -
Trigger Event:
release
-
Statement type: