Packages

CCC Package Guide

A complete overview of every NPM package in CCC. Choose the right package based on your runtime environment, framework, and feature requirements — covering the core SDK, wallet integrations, protocol extensions, and more.

Edit on GitHub

CCC is a monorepo of focused packages — pick what you need.

CCC ships as a collection of focused npm packages. Install only what your project requires.

Most projects only need one entry-point package. Use @ckb-ccc/shell for Node.js, @ckb-ccc/connector-react for React apps, or @ckb-ccc/ccc when you need a fully custom wallet UI.

At a glance

CCC offers multiple packages to serve different development scenarios. Choosing the right package based on your runtime (frontend/backend), framework (React/other), and feature needs (wallet integration/protocol support) can dramatically speed up development.

  • Core packages@ckb-ccc/core and @ckb-ccc/shell provide foundational functionality, ideal for deep customization or backend development.
  • Wallet integration@ckb-ccc/ccc aggregates all wallets for custom UIs; @ckb-ccc/connector-react provides pre-built components for rapid React integration.
  • Protocol SDKs@ckb-ccc/spore, @ckb-ccc/udt, and @ckb-ccc/ssri support specific CKB protocol standards.
  • Individual wallet packages — Standalone packages for specific wallets (JoyID, OKX, UniSat, etc.), installed as needed.

@ckb-ccc/core

Core SDK — provides Transaction, Client, Signer abstractions and cryptographic utilities. Best for advanced scenarios requiring deep customization.

@ckb-ccc/shell

Backend / Node.js aggregate — bundles the core SDK with protocol extensions (Spore, UDT, etc.), purpose-built for server environments. Ideal for Node.js backends, CLI tools, or scripts.

@ckb-ccc/ccc

Wallet integration aggregate — includes every wallet integration (EVM, BTC, Nostr, JoyID, etc.) in a single import. The best choice when you need a custom wallet-connection UI without pre-built components.

@ckb-ccc/connector

Web Components wallet connector — a framework-agnostic Lit-based component usable in any frontend framework. Ideal for non-React projects or cross-framework reuse.

React

@ckb-ccc/connector-react

React wallet connector — pre-built React Hooks and components for quickly adding wallet-connection features. Ideal for React apps with no manual connection logic required.

@ckb-ccc/spore

Spore NFT Protocol SDK — create, transfer, and melt on-chain Digital Objects (DOBs) and Clusters. Ideal for CKB apps that need NFT capabilities.

@ckb-ccc/udt

UDT/xUDT token SDK — issue, transfer, and mint User Defined Tokens on CKB. Ideal for CKB apps that need fungible token functionality.

@ckb-ccc/ssri

SSRI (Script-Sourced Rich Information) protocol support for interacting with CKB smart contracts. Ideal for CKB apps that call on-chain contract methods.

@ckb-ccc/lumos-patches

Lumos compatibility patches — enable existing Lumos apps to work with JoyID, Nostr, and Portal Wallet. Ideal for legacy Lumos projects migrating to new wallets.

@ckb-ccc/joy-id

JoyID Passkey wallet — WebAuthn-based passwordless signing with multi-chain support (CKB, EVM, BTC, Nostr). Ideal for apps that need biometric or passwordless experiences.

@ckb-ccc/eip6963

EVM wallet discovery — auto-detects MetaMask, Rabby, and other EVM wallets via the EIP-6963 standard. Ideal for frontend apps supporting multiple EVM wallets.

@ckb-ccc/nip07

Nostr wallet integration — signs via NIP-07 browser extensions, supporting the Nostr protocol. Ideal for Nostr ecosystem apps or those requiring Nostr signatures.

@ckb-ccc/utxo-global

UTXO Global wallet integration — signs via the UTXO Global browser extension, supporting the BTC, CKB, and DOGE ecosystems.

@ckb-ccc/rei

REI wallet integration — signs via the REI browser extension.

@ckb-ccc/xverse

Xverse wallet integration — BTC ecosystem browser extension signing.

@ckb-ccc/okx

OKX multi-protocol wallet — supports EVM, Nostr, and BTC signing via the OKX browser extension.

@ckb-ccc/uni-sat

UniSat wallet integration — BTC ecosystem browser extension signing.

NPM package reference

The tables below list all CCC packages with their latest version and weekly download count. Use version numbers to gauge update freshness and download counts to assess community adoption and maintenance activity. When choosing a package, prefer recently updated ones for better community support and bug fixes.

Core packages

Package (click for docs)PurposeLatest version & weekly downloads
@ckb-ccc/coreCore SDK — Transaction, Client, Signer abstractions and cryptographic utilities
@ckb-ccc/core npm version@ckb-ccc/core npm downloads per week
@ckb-ccc/shellBackend / Node.js aggregate — core SDK + protocol extensions
@ckb-ccc/shell npm version@ckb-ccc/shell npm downloads per week

Aggregates & UI components

Package (click for docs)PurposeLatest version & weekly downloads
@ckb-ccc/cccWallet integration aggregate — all wallets in a single import
@ckb-ccc/ccc npm version@ckb-ccc/ccc npm downloads per week
@ckb-ccc/connectorWeb Components wallet connector — framework-agnostic
@ckb-ccc/connector npm version@ckb-ccc/connector npm downloads per week
@ckb-ccc/connector-reactReact wallet connector — pre-built Hooks and components
@ckb-ccc/connector-react npm version@ckb-ccc/connector-react npm downloads per week

Protocol SDKs

Package (click for docs)PurposeLatest version & weekly downloads
@ckb-ccc/sporeSpore NFT Protocol SDK — DOB/Cluster management
@ckb-ccc/spore npm version@ckb-ccc/spore npm downloads per week
@ckb-ccc/udtUDT/xUDT token SDK — issuance, transfer, minting
@ckb-ccc/udt npm version@ckb-ccc/udt npm downloads per week
@ckb-ccc/ssriSSRI protocol support — smart contract interaction and metadata queries
@ckb-ccc/ssri npm version@ckb-ccc/ssri npm downloads per week
@ckb-ccc/lumos-patchesLumos compatibility patches — JoyID, Nostr, Portal Wallet support
@ckb-ccc/lumos-patches npm version@ckb-ccc/lumos-patches npm downloads per week

Wallet integrations

Package (click for docs)PurposeLatest version & weekly downloads
@ckb-ccc/joy-idJoyID Passkey wallet — WebAuthn passwordless signing, multi-chain
@ckb-ccc/joy-id npm version@ckb-ccc/joy-id npm downloads per week
@ckb-ccc/eip6963EVM wallet discovery — EIP-6963 standard, MetaMask, Rabby, etc.
@ckb-ccc/eip6963 npm version@ckb-ccc/eip6963 npm downloads per week
@ckb-ccc/nip07Nostr wallet integration — NIP-07 browser extension signing
@ckb-ccc/nip07 npm version@ckb-ccc/nip07 npm downloads per week
@ckb-ccc/utxo-globalUTXO Global wallet — BTC/CKB/DOGE ecosystem support
@ckb-ccc/utxo-global npm version@ckb-ccc/utxo-global npm downloads per week
@ckb-ccc/reiREI wallet — REI browser extension signing
@ckb-ccc/rei npm version@ckb-ccc/rei npm downloads per week
@ckb-ccc/xverseXverse wallet — BTC ecosystem browser extension signing
@ckb-ccc/xverse npm version@ckb-ccc/xverse npm downloads per week
@ckb-ccc/okxOKX multi-protocol wallet — EVM/Nostr/BTC signing
@ckb-ccc/okx npm version@ckb-ccc/okx npm downloads per week
@ckb-ccc/uni-satUniSat wallet — BTC ecosystem browser extension signing
@ckb-ccc/uni-sat npm version@ckb-ccc/uni-sat npm downloads per week

Import pattern

All packages expose their public API on a single ccc namespace object:

import { ccc } from "@ckb-ccc/<package-name>";

Advanced (unstable) APIs are available via cccA:

import { cccA } from "@ckb-ccc/<package-name>/advanced";

Your tsconfig.json must set moduleResolution to node16, nodenext, or bundler and must not disable resolvePackageJsonExports. CCC uses Package Entry Points for tree shaking.

On this page