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.
# Clone
git clone https://github.com/iowap-org/iowap-node.git
cd iowap-node
# Setup
pip install -e .
cp relay_config.json.example .relay/relay_config.json
# Edit .relay/relay_config.json: set relay_url, register with a server
# Register & run
node-cli node register # Get a node ID and token
node-cli capabilities publish default # Publish your capabilities
node-daemon # Start the event-driven workerA node is just a process that:
- Heartbeats its capabilities to a relay server (what can I do?)
- Claims tasks that match its capabilities (I'll take this)
- Runs handlers — scripts or programs — to execute the work
- 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 payload from stdin, calls your push service, and writes the result to stdout. That's it — the node framework handles the rest.
| 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 |
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 routeA base Docker image is available for containerized nodes:
docker pull ghcr.io/iowap-org/iowap-node:latestSee docker/nodes/base/ for the Dockerfile.
Full documentation in iowap-org/iowap-docs:
docs/getting-started.md— first stepsdocs/node/setup.md— node setupdocs/node/cli-reference.md— full CLI referencedocs/node/capabilities.md— capability definitionsdocs/node/federation.md— peer-to-peer federation
AGPL-3.0