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

pi-pond

v0.3.0

Published

Capture pi sessions into a durable pond archive and recall them from inside pi: four read-only tools (pond_search, pond_get_session, pond_get_message, pond_sql) plus a /pond search-and-resume command.

Readme

pi-pond

Give pi a memory that outlives the session.

pi-pond captures your pi sessions into a durable pond archive and projects pond's four read-only recall tools back into pi, so the agent can search and read every past agent session on every machine - pi, Claude Code, Codex, OpenClaw - not just this one. Plus a /pond command that finds an old session and resumes it right here.

pi install npm:pi-pond

That is the whole setup, assuming pond is installed. On first use the extension starts a pond that both serves the tools and keeps the archive current, and asks you once whether to capture your pi sessions into it.

Install pond

brew install tenequm/tap/pond

or cargo install pond. Nothing else is required - pond init is only for building a cross-harness corpus by hand.

What you get

Four tools, available to the model. pond_search, pond_get_session, pond_get_message, pond_sql. They return pond's own rendered transcripts unmodified, so the "read this next" hints pond writes reach the model intact. They default to the whole archive: cross-agent recall is the point. On pond_search, pick mode: "fts" (exact whole words, BM25) or "vector" (meaning; only where that pond instance has embeddings enabled). Omit mode to use pond's default.

Capture. The managed pond runs a periodic sync (every 5 minutes by default) that tails pi's session files. Nothing is pushed; pond reads what pi already writes.

/pond <query>. Searches, then shows the matching sessions:

  • enter - resume: pond writes the session back out as a pi session file and switches this pi to it. Sessions captured from pi come back value-complete; sessions from another agent come back as a best-effort pi transcript. Resuming the same session twice just reopens the file you already have.
  • i - insert: pastes a compact reference (session id, agent, date, snippet) into the editor. Not the transcript - the model pulls detail through the tools when it needs it.
  • esc - close.

What you do NOT get, on purpose

No memory slot, no auto-recall, no prompt injection, no summarizing. pond is an archive with a query surface; deciding what is worth remembering is the agent's job, not the plumbing's. Every pond MCP surface is hard-enforced read-only - the one thing that writes is pond resume, and only when you press enter.

Configuration

Optional, at ~/.pi/agent/pond-pi.json:

{
  "mode": "managed",
  "syncIntervalMinutes": 5,
  "binaryPath": "/opt/homebrew/bin/pond"
}
  • mode: "managed" (default) - the extension supervises its own pond serve child for the lifetime of the pi session, started lazily on the first tool call.

  • mode: "url" - talk to an external pond serve --transport http instead, so many pi sessions share one process and one embedding model. This is read-only recall: the tools work, nothing local is written (no capture prompt, no adapter changes), and /pond resume is unavailable because it needs a local pond.

    { "mode": "url", "url": "http://127.0.0.1:9797/mcp" }

The same file records your answer to the one-time capture prompt (captureConsent). You are asked once, only in an interactive session, and only when pond is not already capturing pi. Either answer is remembered.

The prompt is not the only way your pond config can change. On a pond with no adapters configured at all, the managed child's --bootstrap pi-coding-agent enables the pi adapter on its first run - that is what makes the zero-config install work, including in headless sessions, which are never asked anything. It never touches a pond that already has adapters, and a disabled adapter stays disabled.

Declining is binding, though: a recorded "declined" keeps --bootstrap off the child's command line for good, so nothing is written on your behalf. If you would rather nothing be written before you are asked at all, run pond init first or use mode: "url".

Where the archive lives is pond's business, not this extension's: set POND_STORAGE_PATH (or run pond storage use <url>) to point it at S3 or a shared volume.

License

MIT