iowap-node 2.3.20__py3-none-any.whl

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,126 @@
1
+ Metadata-Version: 2.5
2
+ Name: iowap-node
3
+ Version: 2.3.20
4
+ Summary: IOWAP Node Framework — daemon, CLI, and handler runner for distributed agent nodes
5
+ License-Expression: MIT
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.11
8
+ Requires-Dist: fastapi>=0.110
9
+ Requires-Dist: httpx>=0.27
10
+ Requires-Dist: pydantic>=2.7
11
+ Requires-Dist: python-multipart>=0.0.18
12
+ Requires-Dist: pyyaml>=6.0
13
+ Requires-Dist: uvicorn[standard]>=0.29
14
+ Requires-Dist: zeroconf>=0.63
15
+ Description-Content-Type: text/markdown
16
+
17
+ # iowap-node
18
+
19
+ **IOWAP Node Framework — Build your own node in the IOWAP ecosystem**
20
+
21
+ > **THIS IS THE REPO YOU WANT** if you want to run a node. Clone this, configure your capabilities, and join the network.
22
+
23
+ The node framework provides everything you need to register, heartbeat, claim tasks, and run handlers. Nodes are the workers — they advertise what they can do and execute tasks when matched.
24
+
25
+ ## Quick Start (Linux)
26
+
27
+ ```bash
28
+ curl -fsSL https://raw.githubusercontent.com/iowap-org/iowap-node/main/install.sh | bash
29
+ ```
30
+
31
+ Manuell (jede Plattform):
32
+
33
+ ```bash
34
+ git clone https://github.com/iowap-org/iowap-node.git
35
+ cd iowap-node
36
+ pip install -e .
37
+ cp relay_config.json.example ~/.relay/relay_config.json
38
+ # edit ~/.relay/relay_config.json
39
+ node-cli node register
40
+ node-cli capabilities publish default
41
+ ```
42
+
43
+ ## What You Can Build
44
+
45
+ A node is just a process that:
46
+
47
+ 1. **Heartbeats** its capabilities to a relay server (what can I do?)
48
+ 2. **Claims tasks** that match its capabilities (I'll take this)
49
+ 3. **Runs handlers** — scripts or programs — to execute the work
50
+ 4. **Completes tasks** with results
51
+
52
+ Your capabilities are defined in a `node.yaml`:
53
+
54
+ ```yaml
55
+ node_name: "my-notifier"
56
+ node_description: "Sends push notifications"
57
+ capabilities:
58
+ notification.send:
59
+ description: "Send a push notification to my phone"
60
+ type: script
61
+ input_schema:
62
+ fields:
63
+ - name: title
64
+ type: string
65
+ required: true
66
+ description: "Notification title"
67
+ - name: body
68
+ type: string
69
+ required: true
70
+ description: "Notification body"
71
+ - name: priority
72
+ type: string
73
+ required: false
74
+ description: "low / normal / high"
75
+ ```
76
+
77
+ Just write a handler script that reads the JSON payload from stdin, calls your push service, and writes the result to stdout. That's it — the node framework handles the rest.
78
+
79
+ ## Components
80
+
81
+ | Component | Description |
82
+ |-----------|-------------|
83
+ | `node-cli` | CLI tool — register, manage, submit tasks, list nodes |
84
+ | `node-daemon` | Event-driven worker — listens for tasks via SSE, runs handlers |
85
+ | `relay_client` | HTTP client library for relay API |
86
+ | `handler_runner` | Execute custom handlers with stdin/stdout contract |
87
+ | `node_config` | Capability/configuration management |
88
+
89
+ ## CLI Reference
90
+
91
+ ```bash
92
+ node-cli register # Register with a relay server
93
+ node-cli capabilities server # List server-known capabilities
94
+ node-cli capabilities publish # Publish your capabilities
95
+ node-cli task submit <capability> # Submit a task
96
+ node-cli task wait <id> # Wait for task completion
97
+ node-cli node list # List registered nodes
98
+ node-cli node info <id> # Node details
99
+ node-cli daemon # Start the daemon (foreground)
100
+ node-cli bridge upload <file> # Upload via bridge route
101
+ node-cli bridge download <url> # Download via bridge route
102
+ ```
103
+
104
+ ## Docker
105
+
106
+ A base Docker image is available for containerized nodes:
107
+
108
+ ```bash
109
+ docker pull ghcr.io/iowap-org/iowap-node:latest
110
+ ```
111
+
112
+ See `docker/nodes/base/` for the Dockerfile.
113
+
114
+ ## Docs
115
+
116
+ Full documentation in [iowap-org/iowap-docs](https://github.com/iowap-org/iowap-docs):
117
+
118
+ - [getting-started.md](https://github.com/iowap-org/iowap-docs/blob/main/getting-started.md) — first steps
119
+ - [node/setup.md](https://github.com/iowap-org/iowap-docs/blob/main/node/setup.md) — node setup
120
+ - [node/cli.md](https://github.com/iowap-org/iowap-docs/blob/main/node/cli.md) — full CLI reference
121
+ - [node/capabilities.md](https://github.com/iowap-org/iowap-docs/blob/main/node/capabilities.md) — capability definitions
122
+ - [federation/concept.md](https://github.com/iowap-org/iowap-docs/blob/main/federation/concept.md) — cross-relay federation
123
+
124
+ ## License
125
+
126
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,28 @@
1
+ nodes/__init__.py,sha256=kF3aMOwup5QR75bjDu7Nzr3QptJ63IsP7pEM_ibDCQ0,53
2
+ nodes/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ nodes/common/capability.py,sha256=ez-mlPRUVT7OfVPHkRXBIRFgYzdy8t8D8-aC1Zkjb34,18419
4
+ nodes/common/envelope.py,sha256=qxvkh-CpHFocKNZ24v_GLJpr9Qjh_w0iLVg_QH11Rno,7007
5
+ nodes/common/file_serve.py,sha256=ficWBE5ttEyzTzvExyGOt6Svl8B5Ry75ah3tvNxN3QA,25309
6
+ nodes/common/handler_runner.py,sha256=UTz5E_qhb4RdQ6cR4_rUz_pNC4mk9PAPP1uU95pQFrI,19480
7
+ nodes/common/node_cli.py,sha256=CvrQivxhjM-Oh4A1tELIzS_RVU1PyDOhRsZ5K1ZlAlo,55118
8
+ nodes/common/node_config.py,sha256=yOoC0536Tq3j1x7juamw5Jfh-TgvWb2OStl6zltO84g,32602
9
+ nodes/common/node_daemon.py,sha256=qL4dgkz5uH6d1rS213bZFO4-kqnL8mtxmvHbrYiHXB4,40258
10
+ nodes/common/node_utils.py,sha256=2TxmydRSH0lcTh-rKwJj3n8NVhBmEKg0StsMPQopri0,17429
11
+ nodes/common/relay_client.py,sha256=K7kDZ5RoOT5wRyVfZ8GlIDnor6RN4s4Lm8jjWEdKQuM,52264
12
+ nodes/common/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
+ nodes/common/cli/cli_artifact.py,sha256=fqzkecXiqi_dhn30OHSV87ecRTZx64RMBtdugn8cRjA,1239
14
+ nodes/common/cli/cli_bridge.py,sha256=fF_RG2QEEDcuP7EUX__K9kqRkhOi7LbLaIrFX2NsTQ8,10527
15
+ nodes/common/cli/cli_capabilities.py,sha256=jbQGrCvKPXJ8_lELTd80Dgllr7FSd_nhbUnVkiAOsDA,8246
16
+ nodes/common/cli/cli_docs.py,sha256=SZ7ufr5YQkYPou99wDVOMpJLdj83Vxc9RZtTApPCjbw,4657
17
+ nodes/common/cli/cli_file.py,sha256=pPCz8QPtJ92k-BGwgMB33SWjXV6PT3ZJMxEKsCqDFkU,16658
18
+ nodes/common/cli/cli_hp.py,sha256=02yUR0WqgYeSdtLp0_2CbhRQa18ujw2M-EXZ7H5i4rk,21279
19
+ nodes/common/cli/cli_node.py,sha256=-eTAnM-71HgwPC04NC-V9ST7HPo8pWVK7AJj5kXPH1c,9505
20
+ nodes/common/cli/cli_route.py,sha256=HdRrvUn7yamPrOIyEqIoHN8qR25GT-NwYBPPGZRio48,3116
21
+ nodes/common/cli/cli_server.py,sha256=L6osOAEJVlAw6i8XX-QWN3CCxxL9kVA6xjkk5CiHdrA,8806
22
+ nodes/common/cli/cli_task.py,sha256=N4zceRr7V0Fs2N0psfzx9LVe6ac6DDsGqsskeMflWZA,7246
23
+ nodes/common/cli/cli_update.py,sha256=H6ik_D2G7awMeU_ubIpRI-YgGEDVUsmV47Ex-jE1g7s,1984
24
+ iowap_node-2.3.20.dist-info/METADATA,sha256=SyMIlmow1t6IrwW8OfiSoKDBqCem9V_SEpPWb5u0IZM,4313
25
+ iowap_node-2.3.20.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
26
+ iowap_node-2.3.20.dist-info/entry_points.txt,sha256=23OdcxzF4ciidERcrAOUU6ZiEK82mIi_r4pefSBZYY0,100
27
+ iowap_node-2.3.20.dist-info/licenses/LICENSE,sha256=jqWgc-nPTXXB5PYfNCScU8u8c1ixMcrg0SFZLcejJ8c,1068
28
+ iowap_node-2.3.20.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.4
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ node-cli = nodes.common.node_cli:main
3
+ node-daemon = nodes.common.node_daemon:main
@@ -0,0 +1,21 @@
1
+ # MIT License
2
+
3
+ Copyright (c) 2026 iowap-org
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
nodes/__init__.py ADDED
@@ -0,0 +1 @@
1
+ # IOWAP Node — Package namespace for `nodes.common`
File without changes