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

@mubit-ai/langgraph

v0.8.0

Published

LangGraph.js BaseStore backed by MuBit memory engine

Readme

@mubit-ai/langgraph

LangGraph.js BaseStore backed by MuBit.

MubitStore extends BaseStore (imported from @langchain/langgraph, which re-exports it from @langchain/langgraph-checkpoint) and calls only the public @mubit-ai/sdk Client methods — no private transport or operation tables. On top of the standard store surface it threads the MuBit attribution loop for long-running MAS and coding-agent runs.

Install

npm install @mubit-ai/langgraph @langchain/langgraph @mubit-ai/sdk

Basic usage

import { MubitStore } from "@mubit-ai/langgraph";

const store = new MubitStore({
  endpoint: "http://127.0.0.1:3000",
  apiKey: process.env.MUBIT_API_KEY,
});

await store.put(["memories", "user-1", "session-1"], "deploy-note", {
  text: "Canary before rollout.",
  intent: "lesson",
  source: "human",
});

const results = await store.search(["memories", "user-1"], {
  query: "What rollout lesson do we have?",
  limit: 5,
});

Namespace mapping

| Namespace | MuBit scope | | --- | --- | | ["memories"] | global | | ["memories", userId] | user-scoped | | ["memories", userId, sessionId] | user + session scoped |

Store behavior

  • put() writes through client.remember with upsert_key and threads an idempotency_key (defaults to the key, or pass value.idempotency_key) so a re-run graph node does not double-write
  • get() and search() use client.recall; each returned item exposes value.reference_id so callers can credit recalled evidence back through recordOutcome({ entryIds: [...] })
  • evidence metadata is normalized from current MuBit response fields
  • listNamespaces() remains local cache based
  • delete() remains a no-op because MuBit deletion is explicit and scope-based

Attribution loop (v0.7.0)

Thread credit assignment through a run:

  • recordOutcome(namespace, referenceId, outcome, options)options.entryIds credits the recalled evidence reference_ids; options.verifiedInProduction gates reinforcement to production-confirmed outcomes
  • recordStepOutcome(namespace, stepId, options) — per-step process reward with stepName, outcome, signal, rationale, and directiveHint
const results = await store.search(["memories", "user-1"], { query: "rollout" });
const entryIds = results.map((r) => r.value.reference_id).filter(Boolean);

await store.recordStepOutcome(["memories", "user-1", "session-1"], "canary", {
  outcome: "success",
  signal: 1,
  directiveHint: "Keep the canary soak before promoting.",
});

await store.recordOutcome(["memories", "user-1", "session-1"], "global", "success", {
  signal: 1,
  entryIds,
  verifiedInProduction: true,
});

A runnable end-to-end walkthrough lives in examples/attribution_loop.

MuBit extension methods

Existing MAS helpers:

  • checkpoint(namespace, snapshot, options)
  • surfaceStrategies(namespace, options)

Current observability and coordination helpers:

  • getContext(namespace, options)
  • memoryHealth(namespace, options)
  • diagnose(namespace, options)
  • archive(namespace, options)
  • dereference(namespace, options)
  • registerAgent(namespace, options)
  • listAgents(namespace)
  • handoff(namespace, options)
  • feedback(namespace, options)

Config

| Option | Default | Purpose | | --- | --- | --- | | endpoint | http://127.0.0.1:3000 | MuBit HTTP endpoint | | apiKey / api_key | "" | MuBit API key |

For tests or advanced embedding, you can inject mubitClient directly.

Development

cd integrations/javascript/mubit-langgraph
npm install
npm test

License

Apache-2.0