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

roverb

v0.2.6

Published

Roverb — a personal AI memory you write to from Claude/Codex and recall anywhere, over MCP.

Readme

Roverb

A personal AI memory you write to from Claude / Codex and recall anywhere — over MCP.

You're working in an AI tool, you hit something worth keeping, you say "remember this in Roverb." Weeks later, in any tool, you say "pull what I saved about X" and it comes back. One shared store behind all your assistants. No more scrolling old sessions.

  • Local-first — one SQLite file at ~/.roverb/roverb.db. No cloud, no API keys, no telemetry.
  • MCP-native — works with any Model Context Protocol client (Claude Code, Claude Desktop, Codex, Cursor, …).
  • 7 toolsroverb_save, roverb_recall, roverb_get, roverb_list, roverb_update, roverb_forget, roverb_restore.
  • Smart full-text search — SQLite FTS5 with BM25 ranking, prefix matching (so "rate" finds "rate-limiting"), a recency nudge, and highlighted snippets that show why each result matched. (Semantic/vector recall is a later add-on.)
  • Safe by defaultforget moves a memory to the trash (recoverable); nothing is permanently deleted unless you purge.
  • Backup & portableroverb export dumps everything to JSON, roverb import loads it back (idempotent, so re-imports won't duplicate).

What you actually run

Roverb has two pieces, both on the same local database:

| Piece | What it's for | How it runs | |---|---|---| | MCP server | the agent side — Claude/Codex call it to save & recall | started automatically by your AI tool after roverb init (you don't launch it by hand) | | Dashboard | the browser UI — see, search, save, forget | you run it yourself: roverb ui → http://localhost:4319 |

So after setup there's really one command to remember: roverb ui to open the dashboard. The MCP server takes care of itself.


Quick start (the easy way)

Requires Node 18+ — nothing to install or clone:

# 1. point your AI tools at Roverb (auto-configures Codex, Claude, Cursor)
npx -y roverb init

# 2. open the dashboard in your browser (optional, but nice)
npx -y roverb ui      # → http://localhost:4319

Then restart your AI tool and say "remember this in Roverb." That's it — init already configured the MCP server, and your tool launches it on demand.

roverb init writes the MCP config for whatever it finds installed:

  • Codex~/.codex/config.toml
  • Claude Code → via claude mcp add -s user (user scope → available in every project, not just the folder you ran it in)
  • Claude Desktopclaude_desktop_config.json
  • Cursor~/.cursor/mcp.json

All of them are registered as npx -y roverb@latest mcp. Your tool launches the server via npx on every start, which contacts the npm registry — so @latest simply guarantees you get the newest published version each launch, and updates land automatically with no re-config.

Faster/offline setup: npx contacts the npm registry when the server starts. If you want the fastest startup, or you work offline/behind a proxy, install globally and initialize the global command instead:

npm i -g roverb
roverb init --global --force

That registers command: "roverb", args: ["mcp"] with a short Codex startup timeout. Updates are then manual via npm update -g roverb.

Each person who runs roverb init gets their own local store at ~/.roverb/roverb.db — memories stay on your machine and aren't shared between people.

Prefer not to use the npm release?

Run it straight from GitHub instead — still no clone or build:

npx -y github:hakobyan-arsen/roverb init
npx -y github:hakobyan-arsen/roverb ui

See it in a browser (local dashboard)

npx -y roverb ui       # → http://localhost:4319

Four screens: Ask (search/recall), Library (browse + filter, forget, plus a Trash filter to restore or empty forgotten memories), Capture (save), and Connection (stats, backup export/import, MCP config). Small REST API in src/server.js, no extra deps. Override the port with ROVERB_PORT. The dashboard and the MCP server share the one database, so run both at once.


Manual config (if you skip init)

The command to register is npx -y roverb@latest mcp.

Codex~/.codex/config.toml:

[mcp_servers.roverb]
command = "npx"
args = ["-y", "roverb@latest", "mcp"]
enabled = true
startup_timeout_sec = 120

Claude Code (CLI) — user scope, so it's available in every project:

claude mcp add -s user roverb -- npx -y roverb@latest mcp

Claude Desktop / CursormcpServers block:

{ "mcpServers": { "roverb": { "command": "npx", "args": ["-y", "roverb@latest", "mcp"] } } }

Restart the tool; you should see 5 roverb_* tools.

If you installed globally with npm i -g roverb, use the faster command instead:

Codex~/.codex/config.toml:

[mcp_servers.roverb]
command = "roverb"
args = ["mcp"]
enabled = true
startup_timeout_sec = 10

Or let Roverb write it:

roverb init --global --force

Use it

Just talk to your assistant — it calls the tools for you:

  • "Remember this decision in Roverb, tag it api and infra."roverb_save
  • "What did I save about rate limiting?"roverb_recall
  • "List everything from the Billing project."roverb_list
  • "Forget that staging note."roverb_recall to find it, then roverb_forget (it goes to the trash)
  • "Actually, bring that note back."roverb_restore

Make it proactive (optional)

Drop this in your project's CLAUDE.md / AGENTS.md so the agent reaches for Roverb without being told:

You have a `roverb_*` memory tool set (an MCP server called "roverb").
- Before answering questions about past decisions, preferences, or project
  history, call roverb_recall first.
- When the user makes a decision, states a preference, or produces something
  reusable, offer to roverb_save it.

A memory record

{
  "id": 12,
  "type": "decision",          // decision | code | note | link | fact | writing | image
  "title": "Postgres over Mongo for billing",
  "body": "Billing needs ACID guarantees ...",
  "source": "claude",          // which tool it came from
  "project": "Billing",
  "tags": ["db", "billing"],
  "created_at": "2026-06-22T10:00:00.000Z",
  "updated_at": "2026-06-22T10:00:00.000Z",
  "archived_at": null,         // set when forgotten (in the trash); null = active
  "last_accessed": null,       // last time fetched via roverb_get
  "access_count": 0            // how many times it's been fetched
}

Storage path override: set ROVERB_STORE=/some/path/roverb.db.

Back up & restore

roverb export --out roverb-backup.json   # dump everything (including trash) to JSON
roverb import roverb-backup.json          # load it back — safe to re-run, duplicates are skipped

License

MIT.