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

@sockt/memory

v0.2.1

Published

Semantic memory retrieval for Sockt agents — a GBrain MCP client, deduplication by cosine similarity, and Reciprocal Rank Fusion for combining multiple ranked result sets into one. This is the client-side half of Sockt's memory pipeline; the ingestion hal

Downloads

272

Readme

@sockt/memory

Semantic memory retrieval for Sockt agents — a GBrain MCP client, deduplication by cosine similarity, and Reciprocal Rank Fusion for combining multiple ranked result sets into one. This is the client-side half of Sockt's memory pipeline; the ingestion half lives in @sockt/cadvp.

Agents never write to memory directly (that would make prompt injection a path to permanent memory poisoning) — this package is a read client plus the dedup logic CADVP uses when deciding what's worth writing in the first place.

Install

bun add @sockt/memory

What's in here

createMemoryStore(config)

Factory that returns a MemoryStore (the interface from @sockt/types) backed by GBrain over MCP.

import { createMemoryStore } from "@sockt/memory";

const memory = createMemoryStore({ endpoint: "http://localhost:3200", timeoutMs: 5000, retries: 2 });
const results = await memory.retrieve({ query: "competitor pricing strategies", topK: 5 });

GBrainMcpClient

The concrete MemoryStore implementation createMemoryStore returns — use directly if you need the class rather than the factory.

DedupGate

Decides whether a new memory candidate is different enough from existing entries to be worth storing, using cosine similarity against a configurable threshold (default 0.92 — matching what @sockt/cadvp uses in the ingestion pipeline).

RrfRanker

Combines multiple independently-ranked result lists (e.g. results from different retrieval strategies) into a single fused ranking using Reciprocal Rank Fusion — no need to normalize scores across sources first.

cosineSimilarity(a, b)

The raw similarity function DedupGate is built on, exported standalone for when you need just the number.

Usage

import { createMemoryStore, DedupGate, RrfRanker } from "@sockt/memory";

const memory = createMemoryStore({ endpoint: process.env.GBRAIN_URL! });

const dedup = new DedupGate({ threshold: 0.92 });
const isDuplicate = await dedup.check(newEntryEmbedding, existingEmbeddings);

const ranker = new RrfRanker();
const fused = ranker.fuse([resultsFromSourceA, resultsFromSourceB]);

Docs

Memory pipeline architecture: docs/ARCHITECTURE.md#memory-pipeline-cadvp--gbrain

License

FSL-1.1-MIT — free for non-competing use, converts to MIT two years after each release.