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

nowledge-mem-pi

v0.8.9

Published

Cross-tool memory for Pi. Recall past decisions, search knowledge from every AI tool, and save what matters.

Readme

Nowledge Mem for Pi

Cross-tool memory for Pi. Your decisions, preferences, and procedures persist across sessions and across every AI tool you use.

Continue a selected Mem Thread

Open a Thread in Mem, choose Continue in → Pi, and run the copied nmem t resume command in the project directory. Use an updated nmem CLI and the installed nowledge-mem-pi package. The launcher loads the verified extension explicitly and passes the exact Thread, Space, and Mem connection identifiers.

Pi starts a fresh native session. Its input hook binds that session to the selected Mem Thread and injects verified history into the system prompt before the model starts. New messages, restarts, and history sync keep using the same Mem Thread. Each native session retains its own message IDs and sync cursor. If the target was deleted, moved, or is inaccessible, continuation stops rather than creating another Thread. A new Pi session without a handoff remains independent.

The copied handoff contains no API key or conversation transcript. Native pi --session continues to resume a Pi session directly.

What You Get

Pi gains a native extension plus five skills:

  • Completed Pi conversations sync into Nowledge Mem as searchable threads
  • Context Bundle or Working Memory is injected at Pi startup when available
  • Search, thread lookup, and distillation stay available through skills and the nmem CLI
  • Remote Mem works through ~/.nowledge-mem/config.json or NMEM_API_URL / NMEM_API_KEY

| Skill | What it does | |-------|-------------| | read-working-memory | Loads your daily briefing at session start: focus areas, priorities, recent changes | | search-memory | Searches past decisions, procedures, and preferences when context would help | | distill-memory | Saves decisions, insights, and procedures as durable memories | | save-thread | Creates a curated handoff summary when you explicitly want one | | status | Checks Nowledge Mem server connectivity |

Prerequisites

  1. Nowledge Mem desktop app running, or a remote server.
  2. nmem CLI in your PATH:
pip install nmem-cli    # or: pipx install nmem-cli
# Arch Linux: yay -S nmem-cli  # or: paru -S nmem-cli
nmem status             # verify connection

On Windows/Linux with the Nowledge Mem desktop app, nmem is already bundled.

Install

Via Pi package manager:

pi install npm:nowledge-mem-pi

Manual install:

Copy the skills/ directory and complete extension into your Pi config. The App's Continue in → Pi launcher requires the package-manager install above.

# Global skills
cp -r skills/* ~/.pi/agent/skills/
mkdir -p ~/.pi/agent/extensions/nowledge-mem
cp extensions/*.ts ~/.pi/agent/extensions/nowledge-mem/
mv ~/.pi/agent/extensions/nowledge-mem/nowledge-mem.ts ~/.pi/agent/extensions/nowledge-mem/index.ts

# Or project-local skills
cp -r skills/* .pi/skills/
mkdir -p .pi/extensions/nowledge-mem
cp extensions/*.ts .pi/extensions/nowledge-mem/
mv .pi/extensions/nowledge-mem/nowledge-mem.ts .pi/extensions/nowledge-mem/index.ts

Verify

Start a Pi session and check connectivity:

> check my Nowledge Mem status

Pi should run nmem --json status and report the server connection.

Then have a short Pi exchange and check recent threads:

nmem t list --source pi -n 5

To confirm startup context injection, start a new Pi session and ask what Nowledge Mem context was provided. Pi should reference the injected Context Bundle or Working Memory without needing to run the read-working-memory skill again.

Import Older Pi Sessions

The extension keeps new Pi conversations synced automatically. To backfill sessions that happened before you installed the package, run the history sync command.

Preview first. This scans Pi session files and makes no changes:

nmem t sync --from pi --limit 20

Import after the preview looks right:

nmem t sync --from pi --apply

The command uses the same local or remote Mem configuration as the extension: ~/.nowledge-mem/config.json, NMEM_API_URL, NMEM_API_KEY, and optional NMEM_SPACE. It is safe to rerun: thread IDs come from Pi session IDs, and messages use stable Pi entry IDs with backend deduplication.

Useful options:

nmem t sync --from pi --session-dir ~/.pi/agent/sessions --limit 20
nmem t sync --from pi --space work --apply
nmem t sync --from pi --space-id sp_work_ab12cd34 --apply

When you pass --session-dir, only that directory is scanned. Without it, the command uses Pi's standard session locations.

If your installed nmem does not have t sync yet, use the package fallback:

npx -p nowledge-mem-pi nowledge-mem-pi-sync --apply

Update

pi update

Project Guidance

For behavioral guidance that shapes how Pi uses these skills (when to search, when to save, retrieval routing), see AGENTS.md. Place it alongside your project configuration so Pi follows it automatically.

Customize without editing the package

Use your project's own AGENTS.md as the override layer for Pi.

  • Keep the package skills as shipped defaults
  • Copy or merge the package AGENTS.md into your project config area
  • Do not patch installed package files under the Pi package cache

That keeps your custom behavior durable across package updates.

Troubleshooting

nmem not found: Install with pip install nmem-cli, pipx install nmem-cli, or on Arch Linux yay -S nmem-cli / paru -S nmem-cli.

Server not running: Start the Nowledge Mem desktop app, or run nmem serve on your server.

Remote setup: Create ~/.nowledge-mem/config.json with {"apiUrl": "...", "apiKey": "..."}, or set NMEM_API_URL and NMEM_API_KEY environment variables. The extension uses the same config for automatic thread sync.

Check status: Ask Pi to run the status skill, or run nmem status directly.

Extension diagnostics: Automatic sync failures retry on a later lifecycle event without writing raw diagnostics into Pi's interactive editor. Set NMEM_PLUGIN_DEBUG=1 before starting Pi when troubleshooting the extension itself.

Slow thread sync: Thread writes allow 120 seconds by default. If a remote or heavily loaded Mem server needs a different budget, set NMEM_SYNC_TIMEOUT_MS before starting Pi. Values are interpreted as milliseconds and bounded between 1 second and 30 minutes. A timeout is not retried immediately because the server may have completed the write after the client stopped waiting; the next lifecycle sync safely reconciles the transcript using stable message IDs.

Links


Made with care by Nowledge Labs