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

germinate

v0.1.0

Published

A serializable, provenance-carrying handoff protocol for multi-agent / multi-worktree development: append-only belief-log, drift-visible manifest, coal→diamond compaction, and a git-serializability check.

Readme

germinate

A serializable, provenance-carrying handoff protocol for multi-agent / multi-worktree development. Compact one high-entropy session into a dense, durable seed; let many concurrent workers reconcile through git without lost updates; and make the gap between serialized (git-tracked) and advisory (everything else) state visible and enforceable.

License: MIT · Status: v0.1.0 (draft) · Runtimes: Node · Python · Rust · POSIX shell — all four verified against one shared conformance suite.

The belief-log's real output is not the decision — it's the trace elements of conviction: the faint markers of how a decision's conviction formed and moved.

In one line: durable, mergeable state across every boundary an agentic workflow crosses — cross-time, cross-session, cross-branch/worktree, cross-context, cross-environment, cross-agent. Git already solves order for tracked files; the belief-log solves it for understanding; the manifest solves it for the surfaces git can't lock.


The problem

An agentic dev session is high-entropy and ephemeral: a conversation, scratch files, several open worktrees, half-formed understanding. Almost none of it survives to the next session — and what's most portable is never the per-task deliverable, but the machinery that makes ephemeral sessions durable and mergeable. Two orthogonal axes:

Temporal — coal → diamond

Compact a session into a dense, durable seed a later session (or a different agent, or a human) can pick up cold. Three parts:

  • manifest — what surfaces exist and whether they agree;
  • belief-log — the append-only history of understanding (not of files);
  • handoff — the compaction, with a head (forward pickup pointers: "next session starts here") and a tail (provenance/lineage: how we got here).

"The diamond reaching the cloud" is git push.

Concurrent — global serializability

Many workers write at once and must reconcile to one agreed total order without lost updates. Git is the serializer — its non-fast-forward rejection is the write-lock. But that guarantee holds only for tracked files. Cloud docs, hosted artifacts, snapshots, dashboards have no such lock; a concurrent editor silently clobbers them. That gap — serialized (git-tracked) vs. advisory (everything else) — is the central hazard this toolkit surfaces.


The four primitives

| Primitive | What it is | Command | |---|---|---| | belief-log | append-only, OpenTelemetry-shaped JSONL that version-tracks understanding (trace/span/kind/confidence/risk/evidence/status) | belief validate · belief append | | manifest | registry of every surface (canonical git SSOT + advisory projections), each stamped with a docset version | drift-check | | handoff | coal→diamond compaction: head (pickup) + tail (lineage) | compact · pickup | | serializability check | git is the serializer for tracked files; warn where advisory state escapes the lock | serializability · install-hooks |

A projection whose stamped docset is less than the manifest header is STALE by definition — no content diff required. drift-check exits non-zero on any drift, so it is a CI gate. See SPEC.md for the normative model.


Install

# npm (Node CLI — bins: germinate, hl)
npm install -g germinate

# Homebrew (signed single binary — the Rust build)
brew install flashesofbrilliance/tap/germinate

# or vendor the zero-dep shell CLI directly
cp packages/shell/hl.sh /usr/local/bin/hl && chmod +x /usr/local/bin/hl

Nothing is hosted. There is no server, no Vercel config, no database — it's a CLI + file-format + library. The least-invasive, highest-leverage install is a local git hook; the team gate is a GitHub Action. See docs/INTEGRATION.md.


Quickstart

# 1. Record understanding as it forms (append-only, OTel-shaped)
germinate belief append notes.jsonl --kind trace.open --trace myproj --span _meta --note "belief log"
germinate belief append notes.jsonl --kind belief.open --trace myproj --span 1.path \
   --belief "Path A is fastest" --confidence 0.6 --risk 0.4 --status OPEN
germinate belief append notes.jsonl --kind belief.update --trace myproj --span 1.path \
   --from "Path A is fastest" --to "Path B, given the new constraint" \
   --trigger "benchmark" --confidence 0.85 --risk 0.15 --status ALIGNED

# 2. Track every surface + catch drift (CI gate)
germinate drift-check --manifest manifest.json          # exit 1 if any projection is STALE

# 3. Compact the session into a durable seed + a cold-start pickup prompt
germinate compact --docset 2026-08-13-build.1 --belieflog notes.jsonl \
   --starts-at "wire delivery to the sandbox" --out SESSION-HANDOFF.md
germinate compact --belieflog notes.jsonl --starts-at "…" --prompt   # emit pickup prompt

# 4. Guard the serialized surface (force-push risk / untracked shared state)
germinate serializability --strict
germinate install-hooks                                  # installs a pre-push breaker

Full worked example: examples/quickstart/.


The seed layer — context-triggered re-expression

Storing the diamond was never the bottleneck (git + memory files already persist it). The recurring failure is context-blind recall: the same insight re-derived every session because nothing surfaces it at the moment it applies. A seed fixes that — it's content plus germination conditions (soil, antipatterns, provenance), so it re-expresses when the context is right and stays dormant otherwise.

germinate seed --soil "marketplace,payments" --antipatterns "b2c" \
   --title "Split-payment shape" --out _SEEDS/split-payment.md   # mint
germinate sprout --context "building a marketplace with payments"  # surface what's ripe now
SURFACED (1):
  ✔ split-payment-shape [score 2] ← marketplace, payments

sprout is deterministic by design: literal soil/tags match, a visible antipattern veto (it prints which antipattern suppressed a seed — "receipts for silence"), and a STALE demotion when a seed's soil path has vanished from git. No NLP, no embeddings, no LLM — so every result is explainable and fixture-tested, and it cannot hallucinate a match. An empty result is a healthy "winter", not an error, and dormant seeds are never garbage-collected — dormancy is the feature (a seed carries potential energy until its soil returns).

The germinate ↔ ARCS boundary is the moat, stated honestly. germinate ships the deterministic socket — mechanical, transparent, open. Semantic ripeness (judging relevance beyond literal match, at the opportune moment) is a distinct, private activation layer — the "vox animus". The open tool is honest and mechanical; the intelligence is the layer above it. See docs/adjacencies.md and the seven-stage grammar in docs/grammar.md.

Why polyglot, and how it stays honest

The real deliverable is language-neutral: the SPEC.md, the JSON Schemas in spec/, and the conformance/ fixtures. Every implementation — Node, Python, Rust, shell — is tested against the same fixtures, so they cannot silently diverge. That is the toolkit's own anti-drift principle, applied to its own codebase.

| Runtime | Role | Path | |---|---|---| | Node/TS | reference CLI, npm bin, provenance signing | packages/node | | POSIX shell | zero-dep CLI + git hooks (home of the serializability checks) | packages/shell | | Python | stdlib-only port | packages/python | | Rust | signed single binary for the Homebrew bottle | packages/rust |

The spec + conformance suite is the deliverable; the runtimes are proofs of it. Node is the reference implementation. The substrate primitives (belief-log, manifest, handoff, serializability) are conformant in all four runtimes; the seed layer ships conformant in Node + Python today (shell + Rust are tracked conformance targets — the fixtures already exist, the ports are welcome contributions).


Harness-agnostic

The core operates on files + git only. A harness adapter maps a specific agent environment (Claude Code, Cursor, Aider, …) onto compact at session end and pickup at session start. Adapters are thin and optional — see adapters/. The same wrap-the-core pattern hosts an infra-agnostic microservice (Lambda / serverless / worker / LangChain tool) when you want one.

Where else these primitives apply (ML/RL experiment tracking, model provenance, forensic traces, governance circuit-breakers, and the designated follow-on public goods kairos and observatory): docs/adjacencies.md.


Distribution & signing

npm (provenance/sigstore), a Homebrew tap, and a GitHub Actions release workflow are scaffolded in docs/RELEASING.md and .github/workflows/. The maintainer performs the actual signed publish and holds all secrets — this repo prepares the workflow, never the keys.

Design principles

Six principles govern every stage (plan → build → accept), each bound to a concrete mechanism: traceable · transparent · explainable · composable · anti-hallucination · anti-sycophancy. See docs/PRINCIPLES.md.

Contributing

New behavior lands as a conformance fixture first, then in each implementation. Run make test (or per-package: npm test, python -m unittest, cargo test, sh packages/shell/test.sh).