Getting Started with ICN

This guide is the contributor and evaluator entrypoint for the ICN repo. It is written for people who want to understand the project, build the codebase, run the main checks, and choose an initial way to help without guessing their way through the repository.

If you are looking for institutional engagement, non-technical contribution, or financial support, use the public Get Involved page first.

Choose Your Starting Path

Developer Quickstart

Prerequisites

  • Rust toolchain from icn/rust-toolchain.toml
  • Git
  • Enough disk for a full workspace build and incremental cache

Clone and build

git clone https://github.com/InterCooperative-Network/icn.git
cd icn/icn
cargo build
cargo test --workspace --lib

Important: the Rust workspace is in the icn/ subdirectory, not at the repo root.

Read these next

  1. README.md — repo map and role-based routing
  2. AGENTS.md — verification rules, invariants, and crate layout
  3. CONTRIBUTING.md — PR expectations and architectural guardrails
  4. docs/onboarding/README.md — structured contributor path

Repo orientation

  • icn/ — Rust workspace
  • icn/crates/ — core crates and shared subsystems
  • icn/apps/ — runtime-integrated application crates
  • icn/bins/ — binaries such as icnd and icnctl
  • website/ — public site for intercooperative.network
  • docs/ — architecture, guides, reference material, and onboarding

Choose an initial area

  • Start with good first issues if you want a scoped first PR
  • Use GitHub Discussions if the work is exploratory, architectural, institutional, or not yet issue-shaped
  • If you want to read first and patch later, follow the reading order on For Developers

If you are helping without writing Rust

Verify before you push

cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --lib

Run the checks that match the area you touched from icn/, the workspace directory you entered in the build step. AGENTS.md is the routing table for workspace crates, website work, SDK work, and docs.

Running a Local Node

If you want to inspect the daemon and CLI directly after building:

Create an identity

./target/debug/icnctl --data-dir ~/.icn id init
./target/debug/icnctl --data-dir ~/.icn id show

Start the daemon

./target/debug/icnd --data-dir ~/.icn

Check status from another terminal

./target/debug/icnctl --data-dir ~/.icn status
./target/debug/icnctl --data-dir ~/.icn network peers

Useful local endpoints

  • Gateway health: http://localhost:8080/v1/health
  • Metrics: http://localhost:9100/metrics

Other Real Ways to Help

If you are not contributing Rust code, there are still real paths:

What This Guide Does Not Promise

  • a polished non-technical onboarding flow for ordinary members
  • a hosted sign-up path or managed pilot program
  • a finished member-facing product surface

Those are still in progress. This guide is for building, reading, testing, and contributing against the repo as it exists today.

Next Documents

Where To Ask Or Contribute Next