Skip to main content

iowap-node

IOWAP Node Framework — Build your own node in the IOWAP ecosystem

THIS IS THE REPO YOU WANT if you want to run a node. Clone this, configure your capabilities, and join the network.

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.

Quick Start (Linux)

One-liner — installs the Python package from PyPI into a dedicated venv (systemd user unit, registration; re-runs offer update / override / uninstall). IOWAP_SOURCE=git switches to a checkout-based dev install.

curl -fsSL https://raw.githubusercontent.com/iowap-org/iowap-node/main/install.sh | bash

From PyPI (manual, any platform):

pip install "iowap-node"          # import namespace: nodes
node-cli mcp install              # optional: the MCP toolkit (own venv)

From source (dev):

git clone https://github.com/iowap-org/iowap-node.git
cd iowap-node
pip install -e .
cp relay_config.json.example ~/.relay/relay_config.json
# edit ~/.relay/relay_config.json
node-cli node register
node-cli capabilities publish default

Updates: node-cli update check (node + MCP toolkit) and node-cli update apply — PyPI-first with the GitHub release as fallback.

What You Can Build

A node is just a process that:

  1. Heartbeats its capabilities to a relay server (what can I do?)
  2. Claims tasks that match its capabilities (I'll take this)
  3. Runs handlers — scripts or programs — to execute the work
  4. Completes tasks with results

Your capabilities are defined in a node.yaml:

node_name: "my-notifier"
node_description: "Sends push notifications"
capabilities:
  notification.send:
    description: "Send a push notification to my phone"
    type: script
    input_schema:
      fields:
        - name: title
          type: string
          required: true
          description: "Notification title"
        - name: body
          type: string
          required: true
          description: "Notification body"
        - name: priority
          type: string
          required: false
          description: "low / normal / high"

Just write a handler script that reads the JSON handler envelope from stdin, calls your push service, and writes the result to stdout. Your schema fields arrive NESTED under the input key of the envelope — not at the top level:

{"task_id": "...", "capability": "notification.send", "input": {"title": "...", "body": "...", "priority": "normal"}}

That is the frozen T-005b Envelope-Contract (handler_runner._build_stdin_payload); stdout is normalized back into the Response Envelope ({"status": "completed", "result": {...}}). That's it — the node framework handles the rest.

Components

Component Description
node-cli CLI tool — register, manage, submit tasks, list nodes
node-daemon Event-driven worker — listens for tasks via SSE, runs handlers
relay_client HTTP client library for relay API
handler_runner Execute custom handlers with stdin/stdout contract
node_config Capability/configuration management

CLI Reference

node-cli register                  # Register with a relay server
node-cli capabilities server       # List server-known capabilities
node-cli capabilities publish      # Publish your capabilities
node-cli task submit <capability>  # Submit a task
node-cli task wait <id>            # Wait for task completion
node-cli node list                 # List registered nodes
node-cli node info <id>            # Node details
node-cli daemon                    # Start the daemon (foreground)
node-cli bridge upload <file>      # Upload via bridge route
node-cli bridge download <url>     # Download via bridge route

Docker

A base Docker image is available for containerized nodes:

docker pull ghcr.io/iowap-org/iowap-node:latest

See docker/nodes/base/ for the Dockerfile.

Docs

Full documentation in iowap-org/iowap-docs:

License

MIT — see LICENSE.

Metadata

Release files for iowap-node 2.3.31

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for iowap-node 2.3.31
File Interpreter ABI Platform
iowap_node-2.3.31-py3-none-any.whl Python 3 none any Details

Release files / iowap_node-2.3.31-py3-none-any.whl

Download URL iowap_node-2.3.31-py3-none-any.whl
Size 130.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3f3d713257af438f25805b7317d17596e23edde3e449ef5fdc8b7846f6bd3ec3
BLAKE2b-256 checksum
How to use checksums
51d45be5f9ecb67119f3ce7a4771c389770caf83ef9620085895633e59ea980e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Security for iowap-node 2.3.31

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page