Skip to main content

imuninn

Python client for iMuninn: an iPhone app that turns the phone into a network sensor node — camera (H.264), IMU, ARKit 6-DoF pose with per-frame intrinsics, LiDAR depth — served over the LAN with a Protobuf protocol. This package discovers phones, connects, configures them, receives and decodes the streams, records MCAP and visualises in Rerun.

Install

pip install imuninn              # discovery, connection, config, pose / IMU / depth decoding, CLI
pip install "imuninn[all]"       # + video decoding, MCAP, Rerun, MCP server
extra adds brings in
video H.264 decoding to NumPy (imuninn.video.H264Decoder) PyAV
mcap imuninn record / convert / info, MCAP replay mcap, mcap-protobuf-support
rerun imuninn rerun live viewer and MCAP playback rerun-sdk, PyAV
mcp imuninn-mcp, an MCP server so agents can drive the phone mcp, Pillow

The browser viewer (imuninn web) is part of the core package: a static page served from localhost that connects straight to the phone.

Python 3.10+. The phone needs the iMuninn app (iOS; Android camera-only) on the same network, or a USB cable (iPhone shares a link-local network over USB).

Quick start

import imuninn

for phone in imuninn.discover():            # Bonjour: _imuninn._tcp
    print(phone.name, phone.address)

with imuninn.connect() as dev:              # first phone found; or a name / IP / "ip:port"
    dev.set("imu.rate_hz", 100)             # validated by the phone: applied / clamped / rejected
    dev.start()                             # capture session on
    for pose in dev.iter("ar_pose"):        # also "imu", "rgb", "depth", "health"
        t = dev.to_pc_time(pose.header.device_time_ns)
        print(t, pose.position, pose.intrinsics.fx)

Everything is synchronous; the asyncio client (imuninn.client.PhoneClient) is there if you want to drive it yourself. Parameters are self-describing (dev.capabilities), can be grouped into YAML profiles (dev.apply_profile("calibration")), and a config lease keeps several PCs from fighting over one phone.

Command line

imuninn list                                 # phones on the LAN
imuninn watch --start                        # print samples as text
imuninn rerun --start --depth                # Rerun viewer: pose, trajectory, video, depth, IMU, health
imuninn record -o run1.mcap                  # record every stream to MCAP
imuninn rerun --mcap run1.mcap               # play it back
imuninn profile apply dataset                # built-in YAML preset
imuninn web                                  # browser viewer at http://localhost:7430 (video, depth, pose, IMU)
imuninn-mcp                                  # MCP server (stdio) for agents

All commands take an optional phone target (iPhone, 10.0.0.5, 10.0.0.5:7420).

Data

Pose: ARKit convention (right-handed, Y up, camera looks down −Z), with camera intrinsics in every sample. Video: H.264 Annex-B, sensor orientation plus rotation_deg. Depth: uint16 millimetres + confidence, LZ4. Timestamps: device monotonic time plus a measured offset to the PC clock. The wire format is imuninn/proto/imuninn.proto inside the package.

License

MIT or Apache-2.0, at your option.

Metadata

Release files for imuninn 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for imuninn 0.1.0
File Size Uploaded Provenance Actions
imuninn-0.1.0.tar.gz 126.0 kB With provenance Details for imuninn-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for imuninn 0.1.0
File Interpreter ABI Platform Actions
imuninn-0.1.0-py3-none-any.whl Python 3 none any Details for imuninn-0.1.0-py3-none-any.whl

Total release size: 256.8 kB

Release files / imuninn-0.1.0.tar.gz

Download URL imuninn-0.1.0.tar.gz
Size 126.0 kB
Tags Source
SHA-256 checksum
How to use checksums
dad76bde6ca31fc3610052db5b5dc52ab9ff4d451318d314cac4eedfbe9204f0
BLAKE2b-256 checksum
How to use checksums
20c10d5367ec945acd586694801a330b63a46037d69c42ee72b843f31bb76016
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.

Transparency log

Release files / imuninn-0.1.0-py3-none-any.whl

Download URL imuninn-0.1.0-py3-none-any.whl
Size 130.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
da9a314b357fecdad7e0944b8acdf11accf61da50188615c2ee5db83b0f49198
BLAKE2b-256 checksum
How to use checksums
c9e9947fa1f75ee77a2bb09ff132d0539f1e19b5e1effdd098246ae4f74d5f54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.

Transparency log

Security for imuninn 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for imuninn-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 9, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page