Skip to main content

Getting Started

Building an autonomous consumer or provider? Connect an AI agent →

Pick the path that matches what you want to do today. You can use IICP without running a node: try it, send one routed task, and only provide capacity when you are ready.

Five-minute success path

Route one useful task before you run anything.

Install the client, ask the mesh, then inspect what happened. This is the recommended first step for developers and agent builders.

pip install iicp-client

iicp-node --version
iicp-node query "Explain IICP in one sentence."
What happened?
  1. Your client contacted the public directory.
  2. The directory returned a short-lived route for a live node that advertises the chat intent.
  3. The client skipped nodes that are not privacy-ready by default.
  4. Your request was sent to a selected provider node, not executed by the directory.
  5. The AI-generated response came back through the mesh path and printed in your terminal.
A selected remote node can read the prompt it executes. For sensitive data, prefer the browser/local path or run iicp-node query "..." --routing-profile sensitive to fail closed instead of sending to a remote executor. For data-handling limits and beta rights requests, see the privacy notice baseline. For AI-interaction and generated-output disclosure limits, see the AI transparency baseline.

Prefer to call it from your app? The same request as one chat() call:

from iicp_client import IicpClient, ChatMessage
import asyncio

async def main():
    reply = await IicpClient().chat_async(
        [ChatMessage(role="user", content="Hello, mesh.")])
    print(reply)

asyncio.run(main())

Defaults to the public directory at iicp.network — no setup on your side.

Run a node

Use this after the client path, when you want to provide compute. Inspect the installer first, then run it.

# Recommended: inspect first
curl -fsSL https://iicp.network/install.sh -o iicp-install.sh
less iicp-install.sh
sh iicp-install.sh

# Fast path after you trust it
curl -fsSL https://iicp.network/install.sh | sh

iicp-node serve                 # registers + auto-detects your local model

Don't have a model yet? Install Ollama and run ollama pull qwen2.5:0.5bfirst — it runs on CPU, ~400 MB, no graphics card needed. Current clients also recover more gracefully from laptop sleep, Wi-Fi changes and temporary tunnel cooldowns when run under a supervisor.

Want the full API reference, every operator path, CIP guides, and endpoints? Switch to Expert mode using the toggle at the top of the page.

Use it from your code

Two steps: install the client for your language, then call chat(). The client finds a live node and routes your request for you — no account, no API key, and nothing to run on your side.

Client-first adoption path: consume the mesh before you provide to it. The same client path works from direct SDK calls, OpenAI-compatible proxy mode, and the MCP gateway.
Remote-routing policy: directory discovery is prompt-free, but the selected remote executor can read the prompt it runs. Current clients refuse keyless plaintext by default and add profiles such as standard, sensitive, eu-restricted and strict-policy so deployers can fail closed before dispatch. The compliance-readiness path is intentionally separate from this quickstart: read Privacy & security and the privacy notice baseline, then review the AI transparency baseline before routing sensitive or regulated data.
1 · Install
pip install iicp-client
2 · Ask the mesh
from iicp_client import IicpClient, ChatMessage
import asyncio

async def main():
    reply = await IicpClient().chat_async(
        [ChatMessage(role="user", content="Hi")])
    print(reply)

asyncio.run(main())
Verify it worked
iicp-node --version
iicp-node query "Hello, mesh."

The query discovers a live node and prints the reply. You do not need to run a node for this client path.

The details (versions, API, defaults)

All three clients share the same API — discover(), submit(), chat() — with feature parity (ADR-016). They default to https://iicp.network/api as the directory; point elsewhere to use your own.

Requires Python ≥ 3.11 · Node.js ≥ 18 · Rust ≥ 1.86. Prefer zero install? Run a model in your browser →

Live mesh:Loading…Full stats →

Run a node

Install the iicp-node CLI from a public package registry, then it can auto-detect your local Ollama and register with the mesh.

# Choose one published SDK
pip install iicp-client
# npm install -g @iicp/client
# cargo install iicp-client --features nat,iicp-tcp

iicp-node serve                 # registers + auto-detects your model
iicp-node query "What is 2+2?"  # confirm it's routing

Configure with env vars (IICP_BACKEND_URL, IICP_BACKEND_MODEL); logs in ~/.iicp/logs/. Port 9484 must be reachable — port-forwarding guide (or a free Cloudflare Tunnel, no router config). Current clients prefer direct routes, pace automatic Quick Tunnel fallback, and let launchd/systemd/Docker retry temporary route failures instead of advertising unsafe endpoints.

No GPU? Step-by-step with Ollama (≤ 10 min, CPU)
  1. Install Ollama: curl -fsSL https://ollama.com/install.sh | sh (or ollama.com/download on Windows).
  2. Pull a small model: ollama pull qwen2.5:0.5b (~400 MB, runs on CPU).
  3. Install + serve: cargo install iicp-client --features nat,iicp-tcp then iicp-node serve (local Ollama auto-detected). Python alt: pip install iicp-client[nat].
  4. Verify: your node_id appears in /nodes within 30 s. Docker: docker compose -f docker-compose.ollama.yml up -d.

IICP is currently in Beta. The published clients are available from their package registries, and interested users and contributors can contact the community or join through the public repositories.

API endpoints
POST/api/v1/register— Register a new node
POST/api/v1/heartbeat— Update node liveness (every 30s)
GET/api/v1/discover— Discover scored, available nodes by intent
POST/api/v1/dispatch/ticket— Request one short-lived route without sending the task payload
GET/api/v1/registry/nodes— Browse the public node directory
GET/api/v1/stats— Network-wide status and probe health
POST/v1/task— Submit a task to a node (HTTP transport)
TCP:9484— Native IICP binary framing
POST/v1/relay— Relay coordinator — forward to unreachable nodes
GET/iicp/health— Node health + load