Skip to main content

Outbound-only edge daemon for the SignalMesh Submesh Protocol — wrap local software as callable mesh coords with zero inbound ports.

Project description

signalmesh-meshd

Outbound-only edge daemon for the SignalMesh Submesh Protocol. It holds one persistent WebSocket to the SignalMesh cloud, walks ~/.signalmesh/harnesses/*/SKILL.md for op manifests, and executes call_requests as local subprocesses — no inbound ports, ever.

Install

pipx install signalmesh-meshd

Not on PyPI yet? Install straight from the built wheel:

pipx install /path/to/signalmesh_meshd-0.1.3-py3-none-any.whl

Quick start

Pair once — exchanges your SignalMesh key for a device_id + device_token, written to ~/.signalmesh/meshd.yaml at mode 0600:

meshd pair --key=smesh-XXXXXX --name=my-desktop

Connect — opens the outbound WebSocket, advertises discovered ops, and blocks serving call_requests until you kill it:

meshd connect

Invoke a coord from the cloud (this is what the SignalMesh backend does on your behalf when a mesh caller routes to your device):

curl -X POST https://acecalisto3-signalmesh.hf.space/api/submesh/call \
  -H "Content-Type: application/json" \
  -H "X-SignalMesh-Key: smesh-XXXXXX" \
  -d '{"coord": "submesh.my_desktop.echo_test.say", "input": {"msg": "hello mesh"}}'

Writing a SKILL.md manifest

Drop a directory under ~/.signalmesh/harnesses/<harness-name>/ containing a SKILL.md with YAML frontmatter. meshd parses the frontmatter block, refuses any exec argv containing shell metacharacters, and advertises one coord per subcommand.

~/.signalmesh/harnesses/echo-test/SKILL.md:

---
binary: /bin/echo
subcommands:
  - op_id: say
    exec: ["{msg}"]
    summary: "Echo a string back through the mesh."
    params_schema:
      msg: string
    timeout_ms: 5000
---

# echo-test

Minimal harness proving the mesh call → subprocess → response round trip.

This advertises submesh.<device_name>.echo_test.say, callable with {"msg": "..."}.

Android apps (APK) as mesh nodes

Any Android app reachable over adb can be a submesh node — mesh-anything includes your phone. Point meshd apk wrap at an installed package name or a local .apk (it installs it first):

meshd apk wrap com.example.app
meshd apk wrap ~/Downloads/some-app.apk

This resolves the launcher activity and writes an adb-backed SKILL.md harness exposing submesh.<device>.apk_<pkg>.{launch,stop,deeplink,tap,text,screenshot}. Restart meshd connect and the app's coords are advertised to the mesh like any other harness — same metachar guard, same shell=False execution. Requires Android platform-tools (adb) and a device or emulator visible to adb devices.

Safety model

Every argv token is checked against a shell-metachar denylist twice: once at manifest-load time (before a coord is even advertised) and once again after {param} substitution (before the subprocess actually runs) — a manifest can't sneak a malicious literal past you, and a caller can't sneak one in through input params either. Subprocesses always run with shell=False. Path-typed params are additionally checked against each subcommand's allow_paths glob list; anything that resolves outside the allowlist is rejected before it ever reaches argv.

Links

License

MIT

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

signalmesh_meshd-0.1.4.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

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

signalmesh_meshd-0.1.4-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file signalmesh_meshd-0.1.4.tar.gz.

File metadata

  • Download URL: signalmesh_meshd-0.1.4.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for signalmesh_meshd-0.1.4.tar.gz
Algorithm Hash digest
SHA256 b00762ccc3e3f442d71dac6eaa7e6c1cf90d186539ca692b0b28b36dc399e597
MD5 9ec0627e8ec2a353db379ee129703c13
BLAKE2b-256 5853367d2ee5d46eb081836710877ffefce4ab6925f877138e505915699ae0a9

See more details on using hashes here.

File details

Details for the file signalmesh_meshd-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: signalmesh_meshd-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for signalmesh_meshd-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9563b4133fc92f4c1a8985295879b59df47889f29402b70fa61d2fb0c7c0a98b
MD5 12b98ab671e3af71290467a27ab8c1fa
BLAKE2b-256 a5cd2f6cbb350c967aaed74ac246ae8ed44b1ad27ea9f61f11189a132ed5f520

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