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.
- iowap_node-2.3.20.dist-info/METADATA +126 -0
- iowap_node-2.3.20.dist-info/RECORD +28 -0
- iowap_node-2.3.20.dist-info/WHEEL +4 -0
- iowap_node-2.3.20.dist-info/entry_points.txt +3 -0
- iowap_node-2.3.20.dist-info/licenses/LICENSE +21 -0
- nodes/__init__.py +1 -0
- nodes/common/__init__.py +0 -0
- nodes/common/capability.py +520 -0
- nodes/common/cli/__init__.py +0 -0
- nodes/common/cli/cli_artifact.py +42 -0
- nodes/common/cli/cli_bridge.py +264 -0
- nodes/common/cli/cli_capabilities.py +229 -0
- nodes/common/cli/cli_docs.py +122 -0
- nodes/common/cli/cli_file.py +434 -0
- nodes/common/cli/cli_hp.py +546 -0
- nodes/common/cli/cli_node.py +249 -0
- nodes/common/cli/cli_route.py +92 -0
- nodes/common/cli/cli_server.py +248 -0
- nodes/common/cli/cli_task.py +191 -0
- nodes/common/cli/cli_update.py +48 -0
- nodes/common/envelope.py +168 -0
- nodes/common/file_serve.py +648 -0
- nodes/common/handler_runner.py +497 -0
- nodes/common/node_cli.py +1311 -0
- nodes/common/node_config.py +856 -0
- nodes/common/node_daemon.py +946 -0
- nodes/common/node_utils.py +448 -0
- nodes/common/relay_client.py +1246 -0
|
@@ -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,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`
|
nodes/common/__init__.py
ADDED
|
File without changes
|