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

@rizal72/oc-session-search

v0.2.4

Published

The session_search tool: keyword search over past OpenCode sessions, with project and date filters

Readme

@rizal72/oc-session-search

Adds one tool, session_search: a keyword search over the transcripts of past sessions, so the agent can answer "we discussed this already" without being told which file or command to look in.

No surface, on purpose: the tool is the whole plugin. There is nothing to draw in the terminal and nothing to draw in the desktop app.

Install

opencode plugin add @rizal72/oc-session-search

Or by hand, one line in ~/.config/opencode/opencode.jsonc:

"plugins": ["@rizal72/oc-session-search"]

Nothing to configure and nothing to enable: the tool registers itself, and it is a Code Mode tool, so it costs one line of the catalog rather than a full schema in every prompt.

Update

V2 checks package plugins at startup and never applies the update, so a package only moves when you ask:

opencode plugin check     # which of the installed packages are behind
opencode plugin update    # apply them, and let the server reload

Or install @rizal72/oc-plugin-updates: the count appears in a pill above the composer, with the update one click away.

How it works

The query is split into words (up to six, longest first) and every message is scored by which of them it holds: a word rare in the corpus counts more than a word present everywhere, so why the panel went blank does not match everything through "the". A query carrying regex syntax is used as that expression instead. Each result gives date, project, session id, title, role and a snippet, and the header says how many sessions contain a match.

Narrow it when you remember roughly when — the search gets cheaper and quieter:

| input | what it does | |---|---| | query | words, or a regular expression | | project | substring of the session's directory, e.g. OpenCode | | since | earliest date, YYYY-MM-DD, inclusive | | until | latest date, YYYY-MM-DD, inclusive | | limit | max hits, default 10, max 40 |

It reads the database at $OPENCODE_DB, else $XDG_DATA_HOME/opencode/opencode.db, else ~/.local/share/opencode/opencode.db — opened read-only. SQLite comes from the host itself (bun:sqlite), so no external binary is needed; the sqlite3 CLI is only a fallback.

Nothing is written, and there is no index to build or keep in sync: the whole corpus is scanned per search, in chunks, so a long search does not freeze the server. The price is that a search costs what the corpus costs — a fraction of a second today, seconds once the transcripts are large. Pass since/until when you can.

Two honest limits: an empty result may mean the schema moved rather than no match, and the message table is internal to OpenCode, so a release can change it.