npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@gsengai/c2pa

v0.2.1

Published

C2PA image signing for AI-generated media: signed manifests with AI-generation assertions, ingredient preservation, evidence record per signing. Supports compliance with EU AI Act Article 50 and California SB 942. Not legal advice.

Readme

@gsengai/c2pa

C2PA Content Credentials signing for AI-generated images (PNG/JPEG): signed manifests declaring AI generation, pre-existing manifests preserved as chained ingredients (never overwritten), one evidence record per signing. Supports compliance with EU AI Act Article 50 and California SB 942.

Part of gsengai, open-source transparency and provenance tooling for AI product teams.

Install

pnpm add @gsengai/c2pa @gsengai/core

Requires Node ≥ 22.

Platform support: works out of the box on macOS (Apple Silicon). On Linux, Windows, and Intel macs, install c2patool once (prebuilt binaries or cargo install c2patool) and have it on PATH — the fallback backend is auto-detected and produces equivalent manifests. GSENGAI_C2PATOOL_PATH or the c2patoolPath option point at a specific binary; GSENGAI_C2PA_BACKEND=native|c2patool forces a backend. Details in docs/production.md.

Usage

import { createEvidenceStore } from "@gsengai/core";
import { createImageSigner, readManifest } from "@gsengai/c2pa";

const store = createEvidenceStore({ path: "./evidence.db" });
const signer = createImageSigner({ store, systemId: "my-image-feature" });
// ⚠ no certPath/keyPath given → bundled DEV certificates + a one-time warning

const { record, manifestLabel } = await signer.signImage({
  input: "./generated.png",
  output: "./generated.signed.png",
  model: "gpt-image-1",
});
console.log(record); // evidence record: modality 'image', marking ['c2pa']

// Verify locally: manifest label, ingredient chain, exact validation codes
console.log(await readManifest("./generated.signed.png"));

The manifest carries a c2pa.created action with digitalSourceType: trainedAlgorithmicMedia, the model identifier, and a timestamp. If the input already carries a C2PA manifest, signImage never overwrites it — the existing manifest is chained as the parent ingredient and stays resolvable. Signing and reading are fully offline: no OCSP, no remote manifest fetches, no TSA.

The bundled development certificates are untrusted by public validators by design — for integration testing only. For production, pass your own certPath / keyPath; see docs/CERTIFICATES.md.

Manifests can be removed downstream by re-encoding, screenshots, or platform uploads — that is exactly why the evidence log exists.

Positioning

This package supports compliance with EU AI Act Article 50 and California SB 942. It does not make you compliant — compliance depends on your system, your deployment context, and your processes. It is not legal advice.

License

Apache-2.0