How Ceramic Works

A composable data ecosystem
built on decentralized
event streams









Ceramic protocol

Decentralized Event Streams

The Ceramic protocol is a specification for decentralized event streams. On Ceramic, user accounts cryptographically sign data events and then submit them to the network where they are organized into streams. Streams enable data to be published, consumed, exchanged, and reused by any application or device connected to the public internet.

Ceramic is similar in design to Kafka, but is much more powerful as Ceramic extends data beyond a single enterprise and enables composability across the open web.


Ceramic accounts are interoperable decentralized identifiers (DIDs) that cryptographically sign data. Supporting integrations with top blockchains, users can connect their blockchain wallet to sign events and grant permissions on Ceramic.


Events are the most atomic units of data in Ceramic. Event messages are stored in the Interplanetary File System (IPFS) using the IPLD protocol and can contain any arbitrary data needed by consumers of the message.

type InitHeader struct {
    controllers [String]
    type InitPayload struct {
        header InitHeader
        data optional Any

type DataHeader struct {
    controllers [String]
    type DataEventPayload struct {
        id &InitEvent  
        prev &Event  
        header optional DataHeader         data Any

type TimeEvent struct
      id &InitEvent  
      prev &DataEvent | &InitEvent
      proof Link  
      path String


Once submitted to the network, events are organized into streams. Streams are hash-linked chains of events used for a variety of purposes, such as tracking the changes to a JSON object over time. For example on a social application, a stream can store a post, reaction, profile, or follower.

Decentralized Data Infrastructure

Ceramic networks are hyper-scalable data infrastructure networks of nodes operated by the community that provide core utilities for the Ceramic protocol as decentralized web services — including event availability, event ordering, and API hosting. Together, these services enable developers to build fully trust-minimized data applications with Ceramic.

The community runs various networks to support you through different stages of development, from prototyping locally to testing and production.

The community runs various networks to support you through different stages of development, from prototyping locally to testing and production.

API Hosting

Every Ceramic node hosts an instance of the Ceramic API to service event storage and query requests from Ceramic clients

Event Availability

The node that services the API request stores the event, applies it to the stream, then distributes it across the entire network where other nodes listen, update or add redundancy

Event Ordering

Anchor nodes periodically roll-up all observed events into a merkle tree and publish the root to the Ethereum blockchain, providing immutable time that enables consensus on the global ordering of Ceramic transactions

Fast, scalable transactions

Unlike financial asset blockchains that rely on slow and unscalable synchronous global state changes, Ceramic uses fast, asynchronous, parallel transaction processing and eventual consistency to enable the scale and throughput needed by the world’s largest data applications.

Low-cost infrastructure

Ceramic has an ecosystem of node operators and can be self-hosted for as little as $5 per month. The network is designed to write high-volume data at an extremely low cost, comparable to traditional data infrastructure.

Secure & Verifiable

Ceramic combines IPFS content addressing with advanced cryptography and blockchain timestamps to guarantee security and verifiability of data.

Ceramic API

Powerful Data API

Connect and transact on Ceramic’s data network using a simple API—available in TypeScript and REST.

const response = await fetch( 'http://localhost:7007/api/v0/streams/kjzl6cw1jw147r7878h32yazawcll6bxe5v92348cxitif6cota91qp68grbhm'

const data = await response.json()

http://localhost:7007/api/v0/streams/ kjl6cwe1jw147r7878h32yazawcll6bxe5v9234 8cxitif6cota91qp68grbhm

await fetch( 'http://localhost:7007/api/v0/streams', {
 method: 'POST',
 headers: {
   'Content-Type': 'application/json',
 body: JSON.stringify({
   type: 0,
   genesis: {
     header: {
       family: 'test',
       controllers: ['did:key:z6MkfZ6S4NVVTEuts8o5xFzRMR8eC 6Y1bngoBQNnXiCvhH8H'],

curl http://localhost:7007/api/v0/
streams -X POST-d '{
"type": 0,
"genesis": {
"header": {
"family": "test",           "controllers"["did:key:z6MkfZ6S4NVVT
}' -H "Content-Type: application/json"

Ceramic Ecosystem

Expansive Ecosystem

The Ceramic API powers an ecosystem of interconnected data services and applications built on the same underlying data events.

Data Services

Data Services

The core consumers of the Ceramic API are developers building trust-minimized, composable data middleware and services. These services interact with Ceramic event streams behind the scenes to solve specific problems for application developers – who in turn use these tools to build their apps.


Ceramic's composable graph database with endless use cases for Web3 apps like social networks, coordination tooling, knowledge graphs, and identity and reputation protocols.

Social network protocol used by 30+ active apps

Simple NoSQL DB


Developers build highly-scalable, composable, data intensive applications using Ceramic-powered services and middleware.


Grow users & engagement with chat, DMs, followers and social experiences that follow users across applications

Learn more →


Add trust and safety to your app or service with portable profiles, identity, reputation, KYC, anti-sybil, and peer reviews

Learn more →


Power decentralized collaboration and collective decision-making with proposals, votes, reactions, and contribution graphs

Learn more →


Unlock the wisdom of the crowd by plugging into knowledge, discourse, DeSci and other information graphs

Learn more →