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

deja-bob

v1.0.0

Published

MCP server that gives IBM Bob long-term memory — search, retrieve, and compose context from past conversations.

Readme

🧠 Déjà Bob

"You've talked about this before..."

Déjà Bob is a Model Context Protocol (MCP) server that gives IBM Bob long-term memory. By default, each Bob conversation is completely isolated — Déjà Bob bridges that gap, letting Bob search, retrieve, and compose context from any of your past conversations on demand.

Built at the IBM Bobathon (July 2026).


✨ What It Does

  • 🔍 Search all your past Bob conversations by keyword
  • 📖 Pull context from one or more past sessions into a new prompt
  • 🧠 Remember your preferences — tell Bob once, it applies them forever
  • 🔗 Link related conversations so Bob surfaces them together automatically
  • 🔒 100% local — no network calls, no data leaves your machine

📋 Requirements

  • Node.js ≥ 22 — check with node --version. Download at nodejs.org if needed.
  • IBM Bob VS Code extension installed and running

🚀 Install (ask Bob to do it)

The easiest way is to just tell Bob to set it up for you.

Step 1 — Open any Bob conversation and paste this:

Please add the deja-bob MCP server to my mcp.json. Use this config:

{
  "command": "npx",
  "args": ["-y", "deja-bob"]
}

Add it under mcpServers and save the file.

Bob will find your mcp.json, add the entry, and save it — no manual file editing needed.

Step 2 — Restart Bob

Reload the VS Code window: Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows) → Developer: Reload Window

Step 3 — Verify it's working

Start a new Bob conversation and say:

show me my past conversations

Bob should return your conversation history grouped by workspace. If you see it — you're all set.


Prefer to do it manually? Open ~/.bob/settings/mcp.json and add deja-bob to the mcpServers object:

{
  "mcpServers": {
    "deja-bob": {
      "command": "npx",
      "args": ["-y", "deja-bob"]
    }
  }
}

If the file doesn't exist yet, create it with the content above.


💬 How To Use It

You never need to interact with the tools directly. Just talk to Bob naturally — it calls Déjà Bob automatically when it detects you're referencing past work.

Pull context from a past conversation

"Using our Blueprint Genie conversation as context, help me write a one-pager for a client."
"What did we decide about the database schema in that earlier conversation?"
"Continue where we left off on the pricing module."

Use multiple conversations together

"Use the minikube conversation and the GitOps conversation as context —
 now help me write a deployment guide."

Bob fetches both threads and answers with full awareness of both.

Search when you can't remember the exact conversation

"Search my past conversations for anything about Kubernetes."
"Find conversations where we talked about authentication."

Save your preferences (tell Bob once, never repeat)

"I prefer architecture diagrams with swimlanes, not flowcharts."

Bob stages this as a preference → confirms with you → stores it permanently. From then on, before drawing any diagram, Bob checks your stored preferences and applies them automatically — in every future conversation.

Other examples:

"Always use TypeScript, never plain JavaScript."
"Keep code responses concise — no over-commenting."
"For slide decks, use a white background with IBM blue accents."

Link related conversations

"Link the Blueprint Genie architecture conversation to the deployment guide we made."

Once linked, both conversations surface each other as 🔗 Related in every future search — Bob automatically sees the connection.


🛠️ All Available Tools (17)

You don't need to call these directly — Bob uses them automatically. This is for reference.

Conversation Retrieval

| Tool | What it does | |---|---| | list_conversations | Browse all past conversations grouped by workspace | | search_conversations | Full-text search with keyword + recency + link-centrality scoring | | get_conversation_context | Fetch a conversation thread (summary_only, summary, or full) | | compose_prompt | Inject context from multiple past conversations into a new prompt |

Preference Memory

| Tool | What it does | |---|---| | store_user_facts | Stage a preference, decision, or constraint for confirmation | | confirm_user_facts | Activate staged facts after you approve them | | reject_user_facts | Discard staged facts you don't want saved | | get_known_preferences | Retrieve your stored preferences — filterable by topic | | get_pending_facts | See all facts waiting for your confirmation | | delete_user_fact | Permanently delete a stored fact | | list_uncanonicalized_topics | Detect fragmented topic labels |

Conversation Linking

| Tool | What it does | |---|---| | link_conversations | Store a typed relationship between two conversations | | summarize_conversation | Cache a TL;DR to speed up future lookups |

Procedural Templates

| Tool | What it does | |---|---| | store_task_template | Save a reusable step-by-step procedure for a task type | | get_task_template | Retrieve stored templates — by topic or free-text query | | list_task_templates | List all saved templates | | delete_task_template | Permanently delete a saved template |


🏗️ How It Works

Bob stores all conversations in a local SQLite database at ~/.bob/db/bob.db. Déjà Bob reads from that database — it only writes summaries, preferences, and link edges that you explicitly create.

~/.bob/db/bob.db
├── tasks              — one row per conversation (id, workspace, title, summary)
├── messages           — every user + assistant message
├── user_facts         — your stored preferences, decisions, and constraints
└── conversation_links — typed relationship edges between conversations

The server runs as a local stdio process — no API calls, no telemetry, nothing leaves your machine.


❓ Troubleshooting

Bob doesn't seem to be using Déjà Bob

  • Make sure you restarted Bob after editing mcp.json
  • Check the MCP panel in Bob's sidebar — deja-bob should appear with a green status dot
  • Try explicitly asking: "list my past conversations using deja-bob"

npx deja-bob fails with a Node version error

  • Run node --version — you need v22 or higher
  • Download the latest LTS from nodejs.org

mcp.json already has other servers

  • Just add deja-bob inside the existing mcpServers object alongside the others:
{
  "mcpServers": {
    "some-other-server": { "...": "..." },
    "deja-bob": {
      "command": "npx",
      "args": ["-y", "deja-bob"]
    }
  }
}

📄 License

MIT — Blakely Pritchard, IBM


Made with IBM Bob · Built at IBM Bobathon July 2026