usepaxterapp 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,53 @@
1
+ Metadata-Version: 2.4
2
+ Name: usepaxterapp
3
+ Version: 0.1.0
4
+ Summary: Paxter connector for Hermes — bridges your Hermes agent to the Paxter app over an end-to-end-encrypted relay. Outbound-only: nothing is exposed on your machine.
5
+ Author: Paxter
6
+ Keywords: hermes,hermes-agent,paxter,plugin,platform,agent
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: Operating System :: OS Independent
9
+ Requires-Python: >=3.9
10
+ Description-Content-Type: text/markdown
11
+ Requires-Dist: paho-mqtt>=1.6
12
+ Requires-Dist: pynacl>=1.5
13
+
14
+ # Paxter connector (Hermes plugin)
15
+
16
+ Connects your self-hosted [Hermes Agent](https://hermes-agent.nousresearch.com) to the **Paxter** mobile app — privately, with nothing exposed on your machine.
17
+
18
+ It runs as a Hermes **platform plugin** inside your `hermes gateway`: it dials *out* to the Paxter relay (MQTT over TLS), so there's no inbound port, no public URL, and no tunnel to set up. Works behind NAT, on a VPS, or over SSH/tmux.
19
+
20
+ ## Install
21
+
22
+ ```bash
23
+ pip install usepaxterapp
24
+ hermes plugins enable paxter
25
+ hermes config set platforms.paxter.extra.pairing_code <CODE> # from the Paxter app
26
+ hermes gateway restart
27
+ ```
28
+
29
+ `pip install usepaxterapp` pulls the package from PyPI; Hermes auto-discovers it
30
+ via the `hermes_agent.plugins` entry point, and `hermes plugins enable paxter`
31
+ turns it on. In the Paxter app: **Connect → Hermes** to get your one-time pairing
32
+ code. Update later with `pip install --upgrade usepaxterapp`.
33
+
34
+ ## How it works
35
+
36
+ ```
37
+ Paxter app → paxter-gateway (backend) → MQTT broker → this plugin → your Hermes agent
38
+ ```
39
+
40
+ - The plugin trades the one-time pairing code for a short-lived **JWT** (scoped by the broker to only your own topics) and a broker URL, cached in `~/.hermes/paxter/connection.json`.
41
+ - Incoming app messages arrive on `paxter/{userId}/{connectorId}/req`; the plugin dispatches them to your local agent and publishes replies on `.../res`.
42
+ - The agent runs on **your** machine and **your** model bill — Paxter never sees your agent's key.
43
+
44
+ ## Security
45
+
46
+ - Outbound-only: no inbound port is opened.
47
+ - The JWT pins this connector to its own two topics — it can never read another user's traffic.
48
+ - Revocable from the Paxter app (the backend refuses to re-issue the JWT).
49
+
50
+ ## Files
51
+ - `pyproject.toml` — PyPI packaging + the `hermes_agent.plugins` entry point.
52
+ - `usepaxterapp/__init__.py` — exposes `register(ctx)` (the plugin entry point).
53
+ - `usepaxterapp/adapter.py` — the `BasePlatformAdapter` implementation (MQTT bridge).
@@ -0,0 +1,40 @@
1
+ # Paxter connector (Hermes plugin)
2
+
3
+ Connects your self-hosted [Hermes Agent](https://hermes-agent.nousresearch.com) to the **Paxter** mobile app — privately, with nothing exposed on your machine.
4
+
5
+ It runs as a Hermes **platform plugin** inside your `hermes gateway`: it dials *out* to the Paxter relay (MQTT over TLS), so there's no inbound port, no public URL, and no tunnel to set up. Works behind NAT, on a VPS, or over SSH/tmux.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ pip install usepaxterapp
11
+ hermes plugins enable paxter
12
+ hermes config set platforms.paxter.extra.pairing_code <CODE> # from the Paxter app
13
+ hermes gateway restart
14
+ ```
15
+
16
+ `pip install usepaxterapp` pulls the package from PyPI; Hermes auto-discovers it
17
+ via the `hermes_agent.plugins` entry point, and `hermes plugins enable paxter`
18
+ turns it on. In the Paxter app: **Connect → Hermes** to get your one-time pairing
19
+ code. Update later with `pip install --upgrade usepaxterapp`.
20
+
21
+ ## How it works
22
+
23
+ ```
24
+ Paxter app → paxter-gateway (backend) → MQTT broker → this plugin → your Hermes agent
25
+ ```
26
+
27
+ - The plugin trades the one-time pairing code for a short-lived **JWT** (scoped by the broker to only your own topics) and a broker URL, cached in `~/.hermes/paxter/connection.json`.
28
+ - Incoming app messages arrive on `paxter/{userId}/{connectorId}/req`; the plugin dispatches them to your local agent and publishes replies on `.../res`.
29
+ - The agent runs on **your** machine and **your** model bill — Paxter never sees your agent's key.
30
+
31
+ ## Security
32
+
33
+ - Outbound-only: no inbound port is opened.
34
+ - The JWT pins this connector to its own two topics — it can never read another user's traffic.
35
+ - Revocable from the Paxter app (the backend refuses to re-issue the JWT).
36
+
37
+ ## Files
38
+ - `pyproject.toml` — PyPI packaging + the `hermes_agent.plugins` entry point.
39
+ - `usepaxterapp/__init__.py` — exposes `register(ctx)` (the plugin entry point).
40
+ - `usepaxterapp/adapter.py` — the `BasePlatformAdapter` implementation (MQTT bridge).
@@ -0,0 +1,30 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "usepaxterapp"
7
+ version = "0.1.0"
8
+ description = "Paxter connector for Hermes — bridges your Hermes agent to the Paxter app over an end-to-end-encrypted relay. Outbound-only: nothing is exposed on your machine."
9
+ readme = "README.md"
10
+ requires-python = ">=3.9"
11
+ authors = [{ name = "Paxter" }]
12
+ keywords = ["hermes", "hermes-agent", "paxter", "plugin", "platform", "agent"]
13
+ classifiers = [
14
+ "Programming Language :: Python :: 3",
15
+ "Operating System :: OS Independent",
16
+ ]
17
+ dependencies = [
18
+ "paho-mqtt>=1.6",
19
+ "pynacl>=1.5",
20
+ ]
21
+
22
+ # Hermes discovers pip-installed plugins via this entry-point group
23
+ # (hermes_cli/plugins.py: ENTRY_POINTS_GROUP). `paxter` is the plugin/platform
24
+ # name the user enables (`hermes plugins enable paxter`); the value resolves to
25
+ # the package, whose __init__ exposes register(ctx).
26
+ [project.entry-points."hermes_agent.plugins"]
27
+ paxter = "usepaxterapp"
28
+
29
+ [tool.setuptools]
30
+ packages = ["usepaxterapp"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ from .adapter import register
2
+
3
+ __all__ = ["register"]