# IOP Node IOP Node connects to Edge, applies the provider configuration delivered during registration, and executes normalized inference or provider-tunnel requests. ## Runtime boundary - Internal provider selection uses `adapter + target`. - `session_id` is opaque correlation only. Every request is an independent execution. - Cancellation requires a non-empty `run_id` and affects only that run. - Provider commands are limited to capabilities, transport status, and the Ollama API tunnel. - Standard inference, streaming, structured tools, usage, provider lifecycle, capacity, and reconnect behavior remain supported. - Edge and Node use a shared tunnel-tolerant liveness profile: a 30-second heartbeat interval and a 45-second response wait. This keeps long provider prefill or streamed-response backpressure from disconnecting a healthy Node; a connection that actually exceeds the wait closes as `heartbeat_timeout` and enters supervised reconnect. Node does not manage interactive host programs, persistent conversations, terminal emulation, arbitrary host commands, local filesystem execution context, or local quota scraping. ## Development ```bash go test -count=1 ./apps/node/... go test -race -count=1 ./apps/node/internal/node ./apps/node/internal/adapters/... go vet ./apps/node/... ``` The wire contract is documented in `agent-contract/inner/edge-node-runtime-wire.md`. Shared provider primitives are documented in `agent-contract/inner/execution-runtime.md`.