MeshCore Packet Capture
Monitoring / Management StableStandalone Python script for capturing and analyzing packets from MeshCore companion radios. Connects via BLE, serial or TCP and outputs structured data to console, file and MQTT broker. Designed for companion radios only; for repeaters and room servers use meshcoretomqtt instead.
- Maintainer
- agessaman ↗
- Kind
- Monitoring & Management
- Maturity
- Stable
- Language
- Python
- Licensing
- Open source
- Latest version
- 2.2.0 · 2026-07-30
- License
- MIT
- Platforms
- Linux macOS Windows
Capabilities
Interfaces
- ✓ CLI
Connections
- ✓ BLE
- ✓ Serial
- ✓ TCP
- ✓ MQTT
Capabilities
- ✓ Monitoring
- ✓ Packet analysis
- ✓ Telemetry
Node role
- ✓ Companion
Install
Releases
from GitHub · updated 2026-07-30v2.2.0 # Latest 9 days ago · 2026-07-30 15:12 UTC
What's Changed
- Publish a periodic neighbors snapshot, and serialise device commands by @agessaman in https://github.com/agessaman/meshcore-packet-capture/pull/42
- feat(presets): enable neighbors publishing for chimesh by @agessaman in https://github.com/agessaman/meshcore-packet-capture/pull/43
- User service scripts by @jakee417 in https://github.com/agessaman/meshcore-packet-capture/pull/39
- Update Colorado Mesh preset by @nwithan8 in https://github.com/agessaman/meshcore-packet-capture/pull/44
New Contributors
- @jakee417 made their first contribution in https://github.com/agessaman/meshcore-packet-capture/pull/39
- @nwithan8 made their first contribution in https://github.com/agessaman/meshcore-packet-capture/pull/44
Full Changelog: https://github.com/agessaman/meshcore-packet-capture/compare/v2.1.0...v2.1.1
v2.1.0 # 13 days ago · 2026-07-25 22:20 UTC
Highlights
- Payload decoding — Optional
decodedobject on packets (GRP_TXT channel decryption, ADVERT parsing). MQTT publish stays off by default; opt in withinclude_decoded(global or per broker). - Owner identification — Optional per-broker
owner_public_key/owner_emailfor token-auth brokers (was only global); installer can prompt for these. - Configurable BLE PIN — Six-digit
ble_pinfor BLE connection auth (connection-only; no device PIN mutation). - Packet log rotation — Size- or time-based rotation; logs append compact JSONL when an output file is used.
Fixes & packaging
- Installer correctly forwards pinned tags before the install subcommand.
cryptographydeclared as a dependency (Python + Nix).- Version consistency check across package/installer/docs surfaces.
Presets
- Deprecated EU/US analyzer presets replaced; meshat-se and meshmapper updated.
- New/updated community presets (e.g. bostonmesh, flmesh-us, coloradomesh, ctmesh, dutchmeshcore, meshcore-ca, inwmesh, nz-analyzer).
- Payload decoding — Optional
v2.0.0 # 2 months ago · 2026-06-22 21:21 UTC
Realigns configuration, install, and runtime layout with meshcoretomqtt.
Added
- TOML configuration under
/etc/meshcore-packet-capture/(config.toml+config.d/*.toml, deep-merged;[[broker]]merges by name). - Python installer (
python3 -m installer) with install / update / migrate, systemd & launchd units, Docker, service account, and BLE/serial/TCP setup. - PyPI distribution:
pipx install meshcore-packet-capture+meshcore-packet-captureCLI. - Bundled broker presets (
presets/, installed asconfig.d/10-*.toml). - Unlimited sequentially-numbered MQTT brokers.
- JWT auth via pure-Python Ed25519 (pynacl), per-broker owner/email, token TTL.
- Device stats (core/radio/packets) in MQTT status messages.
- macOS BLE support via a per-user LaunchAgent.
Changed
- App installs to
/opt, config to/etc, state to/var/lib(FHS). .env/.env.localare now a legacy fallback, overridden by TOML.- Requires Python 3.11+ and
meshcore >= 2.2.31. - Default advert interval standardized at 47 hours.
- Docker image no longer bundles Node.js (JWT signing is pure-Python).
Upgrading
Run the installer to migrate a legacy
~/.meshcore-packet-captureinstall to the new/opt+/etclayout; your.env/.env.localis converted toconfig.d/99-user.toml. The old directory is left in place for rollback.New Contributors
- @vergoh made their first contribution in https://github.com/agessaman/meshcore-packet-capture/pull/26
- @maxious made their first contribution in https://github.com/agessaman/meshcore-packet-capture/pull/32
Full Changelog: https://github.com/agessaman/meshcore-packet-capture/compare/v0.4...v2.0.0
- TOML configuration under
Project signals
popularity 2026-08-08 verification 2026-08-08
- GitHub stars
- 76
- Forks
- 21
- Watchers
- 2
- Open issues
- 3
- Contributors
- 11
- Release downloads
- 0
- Latest downloads
- 0
- Source available
- Yes
- Releases available
- Yes
- Signed releases
- No
- CI builds
- Yes
- Documentation
- Yes
- For companion radios only; repeaters/room servers should use meshcoretomqtt.
- Based on the original meshcoretomqtt project by Cisien.
- Available on PyPI; includes systemd/launchd managed service installer.