IPFS Standards

The purpose of IPFS Standards is to foster interoperability between independent implementations of the IPFS stack by producing Internet-grade specifications and test suites.

Specifying IPFS and the InterPlanetary stack.

The technology that powers the content-addressable web is being standardized here.

Specifications

The specifications are broken up into multiple areas that cover the stack.

Architecture

These documents define the architectural principles that IPFS is built upon, and can be used as tools to evaluate implementations and applications of IPFS.

IPFS Principles
IPFS is a suite of specifications and tools that are defined by two key characteristics: content-addressing and transport-agnosticity. This document provides context and details about these characteristics. In doing so it defines what is or is not an IPFS implementation.

Meta

Meta contains all the non-technical documents that conspire to make the standards project work: what the core values are, what the governance model is, how to produce documents, etc.

Code of Conduct
The code of conduct that all community participants are held to.
Spec for Specs
Specifies the format and system used to create and maintain specifications for the interplanetary stack.

Routing

Routing is the way to determine where to find a given CID, Peer, or IPNS Record on the network; specifically, which network peers provide specific CIDs.

Routing V1 HTTP API
Delegated routing is a mechanism for IPFS implementations to use for offloading content routing and naming to another process/server. This specification describes an HTTP API for delegated content routing.

Exchange

Exchange is the way to for sending and receiving content addressed blocks of data.

Bitswap
Bitswap is a libp2p data exchange protocol for sending and receiving content addressed blocks of data. It attempts to acquire blocks from the p2p network that have been requested by the client, and also send blocks to others who want them.

HTTP Gateways

IPFS Gateway acts as a bridge between traditional HTTP clients and IPFS. Through the gateway, users can download files, directories and other IPLD data stored in IPFS as if they were stored in a traditional web server.

Path Gateway Specification
The most versatile form of IPFS Gateway is a Path Gateway. It exposes namespaces, such as /ipfs/ and /ipns/ under an HTTP server root and provides basic primitives for integrating IPFS resources within the existing HTTP stack.
Trustless Gateway Specification
Trustless Gateways are a minimal subset of Path Gateways that allow light IPFS clients to retrieve data behind a CID and verify its integrity without delegating any trust to the gateway itself.
DNSLink Gateway Specification
DNSLink Gateways are an extension of Path Gateways that enable hosting a specific content path under a specific DNS name.
Subdomain Gateway Specification
Subdomain Gateways are an extension of Path Gateways that enable website hosting isolated per CID/name, while remaining compatible with web browsers relative pathing and the security model of the web.
Web _redirects File Specification
The Redirects File specification is an extension of the Subdomain Gateway and DNSLink Gateway specifications that enables URL redirects or rewrites by adding redirect rules to a0 file stored underneath the root CID of a web site.

InterPlanetary Naming System

The InterPlanetary Naming System (IPNS) is a naming system responsible for creating, reading and updating mutable pointers to data.

IPNS Record and Protocol
Specifies the IPNS protocol in a language-agnostic manner, allowing everyone to create a compatible IPNS Record Publisher or Resolver.
IPNS PubSub Router
Specifies how to publish and retrieve IPNS records using libp2p PubSub router.

InterPlanetary Improvement Proposals

InterPlanetary Improvement Proposals (IPIP) are an orderly mechanism to consider changes to the IPFS specification. They are not changes to the specification itself, but their approval leads to a change in the specification.

IPIP-0428: Allowing V2-Only Records in IPNS
IPIP-0412: Signaling Block Order in CARs on HTTP Gateways
IPIP-0410: Streaming NDJSON in Routing HTTP API
IPIP-0402: Partial CAR Support on Trustless Gateways
IPIP-0386: Subdomain Gateway Interop with _redirects
IPIP-0379: Delegated IPNS HTTP API
IPIP-0351: IPNS Signed Records Response Format on HTTP Gateways
IPIP-0337: Delegated Content Routing HTTP API
IPIP-0328: JSON and CBOR Response Formats on HTTP Gateways
IPIP-0288: TAR Response Format on HTTP Gateways
IPIP-0002: _redirects File Support on Web Gateways
IPIP-0001: Lightweight Improvement Process for IPFS Specifications