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

@latticeag/visreceipt

v0.1.0

Published

Attested evidence ledger for agent actions

Readme

visreceipt

@latticeag/visreceipt hash-chains agent records into an append-only NDJSON .vrc file. The visreceipt CLI reports the first broken link.

v1 is tamper-evident, not tamper-proof. There are no signing keys. An operator who rewrites the whole file, genesis included, gets a new internally consistent chain. Catching that rewrite needs a committed chain_head stored off this disk. verify --export --expect-head is that check.

The recorder stays VisReplay. The sidecar for session.vrs is session.vrs.vrc.

MIT License. Binary name visreceipt. Node >=20. Package version 0.1.0.

Install

npm install @latticeag/visreceipt

Peer @latticeag/visreplay is optional. --from-vrs still parses visreplay/session/1.0 without it.

SDK

import { ReceiptLedger, attachReceipts, sidecarPath, assertSealed } from "@latticeag/visreceipt";
import { VisReplay } from "@latticeag/visreplay";

const recorder = new VisReplay({ sessionName: "deploy-staging", agentType: "custom" });
attachReceipts(recorder);
const agent = recorder.wrap(myAgent);
await agent.run("Deploy to staging");
recorder.end();
await recorder.save("sessions/deploy-staging.vrs");
// sidecar sessions/deploy-staging.vrs.vrc now exists

const ledger = await ReceiptLedger.open("sessions/deploy-staging.vrs.vrc");
const verified = await ledger.verify();
if (!verified.ok) throw new Error(verified.broken_at!.reason);
await assertSealed(ledger, { freeze_point: "session_end", subject_id: recorder.getSession().sessionId });

sidecarPath(p) is p + ".vrc". exportRange and inspect live on ReceiptLedger. verifyExport checks a visreceipt/export/1.0 slice. assertSealed throws VRC2001 if the freeze is missing, VRC2003 if the seal is older than max_age_ms (default 300000, 0 skips age), and VRC2004 if the chain is not ok. It does not run tools.

CLI

visreceipt seal --from-vrs session.vrs
visreceipt verify session.vrs.vrc
visreceipt verify session.vrs.vrc --expect-head <hex>
visreceipt export session.vrs.vrc --from-seq 1 --to-seq LAST --out slice.json
visreceipt verify --export slice.json --expect-head <hex>
visreceipt inspect session.vrs.vrc --head
visreceipt inspect session.vrs.vrc --seq 42 --vrs session.vrs
visreceipt gate --ledger session.vrs.vrc --subject-id SESSIONID --freeze-point session_end
visreceipt doctor

verify stops at the first broken link and names it by seq, line, and reason. export --out writes mode 0o600. inspect --no-redact needs a TTY and VISRECEIPT_ALLOW_UNREDACTED=1. gate --soft prints the error and still exits 0.

Config file is visreceipt.json, UTF-8 LF, no comments. The loader walks parents from cwd. VISRECEIPT_CONFIG overrides the path. Unknown keys fail the load.

License

MIT. Copyright LatticeAG.